传送门

题目描述

很久以前,有一个强大的帝国,它的国土成正方形状,如图所示。

这个国家有若干诸侯。由于这些诸侯都曾立下赫赫战功,国王准备给他们每人一块封地(正方形中的一格)。但是,这些诸侯又非常好战,当两个诸侯位于同一行或同一列时,他们就会开战。如下图为 n=3n=3 时的国土,阴影部分表示诸侯所处的位置。前两幅图中的诸侯可以互相攻击,第三幅则不可以。

国王自然不愿意看到他的诸侯们互相开战,致使国家动荡不安。 因此,他希望通过合理的安排诸侯所处的位置,使他们两两之间都不能攻击。

现在,给出正方形的边长 nn,以及需要封地的诸侯数量 kk,要求你求出所有可能的安置方案数。(满足 n\le100n≤100,k\le2n^2-2n+1k≤2n
2
−2n+1)

由于方案数可能很多,你只需要输出方案数除以 504504 的余数即可。

输入格式

仅一行,两个整数 nn 和 kk,中间用一空格隔开。

输出格式

一个整数,表示方案数除以 504504 的余数。

输入输出样例
输入 #1复制
2 2
输出 #1复制
4

说明/提示

注意:镜面和旋转的情况属于不同的方案。

上代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ri register int
const int N = 205, mod = 504;
inline int read() {ri x = 0, f = 1;char ch = getchar();for (; !isdigit(ch); ch = getchar())if (ch == '-') f = -1;for (; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + (ch ^ 48);return f * x;
}
int f[N][N], len[N];
signed main() {int n = read(), k = read();if (k > 2 * n - 1) return puts("0"), 0;for (ri i = 0; i <= 2 * n - 1; i++) f[i][0] = 1;for (ri i = 1; i <= n; i++) len[i] = 2 * i - 1, len[2 * n - i] = 2 * i - 1;sort(len + 1, len + 2 * n);for (ri i = 1; i <= 2 * n - 1; i++)for (ri j = 1; j <= k; j++) {if (j > len[i]) continue;(f[i][j] = (len[i] - j + 1) * f[i - 1][j - 1] + f[i - 1][j]) %= mod;}printf("%lld\n", f[2 * n - 1][k]);return 0;
}

洛谷P1240 诸侯安置相关推荐

  1. 洛谷 P1240 诸侯安置

    题目描述 很久以前,有一个强大的帝国,它的国土成正方形状,如图所示. 这个国家有若干诸侯.由于这些诸侯都曾立下赫赫战功,国王准备给他们每人一块封地(正方形中的一格).但是,这些诸侯又非常好战,当两个诸 ...

  2. dp——洛谷P1240 诸侯安置

    https://www.luogu.org/problem/show?pid=1240 哇很好的一道题目诶: 和那个八皇后很像的,但是八皇后是一年前做的题了: 这个我们搜索就算了,虽然用一些技巧也不是 ...

  3. 【洛谷】 P1240 诸侯安置(递推)

    洛谷P1240 诸侯安置 点击此处去OJ 问题描述 很久以前,有一个强大的帝国,它的国土成正方形状(需旋转45°来看),图1所示为n=3时的情况.这个国家有若干诸侯.由于这些诸侯都曾立下赫赫战功,因此 ...

  4. P1240 诸侯安置 [dp]

    P1240 诸侯安置 这道题跟前面的"车的放置"是差不多的.只不过那道题碰巧可以用组合数解决,而这道题只能用dp. 首先要转换这个图,这个图这么奇怪显然无法dp. 我们只需要如第二 ...

  5. 【洛谷 P1240】诸侯安置

    题目描述 很久以前,有一个强大的帝国,它的国土成正方形状,如图所示. 这个国家有若干诸侯.由于这些诸侯都曾立下赫赫战功,国王准备给他们每人一块封地(正方形中的一格).但是,这些诸侯又非常好战,当两个诸 ...

  6. 二分答案——进击的奶牛(洛谷 P1824)

    题目选自洛谷P1824 很容易看出答案随着区间的增加是单调的,因此采用二分的方式求解, 稍微改动的就是判断函数,这里得到一个距离,依次放入牛,判断能否放入下一头牛,当所有隔间都被遍历完后,如果成功放入 ...

  7. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  8. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  9. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

最新文章

  1. java activiti5_工作流Activiti5.13学习笔记(一)
  2. 单页面与多页面的区别与优缺点?
  3. python 文件操作的模块_Python之文件操作修改模块
  4. .NET实现应用程序登录Web页
  5. Android中ImageView常用属性含义
  6. mysql INFORMATION_SCHEMA COLUMNS 解释
  7. 使用gensim训练word2vec模型
  8. 【Kafka】 kafka 启动 Connection to node 1 could not be established. Broker may not be available
  9. git rebase branch内部调整 调整commit顺序
  10. Spring 配置文件详解
  11. BZOJ5312 冒险 势能分析、线段树
  12. 不用编程实现PLC之间通讯-西门子与三菱以太网实时通讯
  13. 数学建模之时间序列分析
  14. oracle查询日志空间大小,ORACLE 管理 日志与空间
  15. 远程控制-Virut蠕虫病毒(需专杀工具请三连并私信)
  16. 使用网络模拟器 Packet Tracer和交换机的端口配置与管理及Telnet远程登陆配置
  17. C语言求1到100的和(for循环语句)
  18. bug解决 2021-09-20 build之后出现shader消失的原因之一
  19. python3.7 openpyxl函数 拆分 excel 单元格
  20. CUPS之gutenprint生成ppd文件

热门文章

  1. 东师计算机教育综合,东师网络教育本科计算机应用
  2. A系统给B系统转100块钱如何实现?
  3. linux网络被限制网速,linux iptables限速及限制每IP连接数
  4. MOS管工作动画原理图详解
  5. UPC-2021个人训练赛第20场-部分题解
  6. python爬取当当网商品评论
  7. matlab示波器怎么求值,matlab示波器用法
  8. 浙江工业大学计算机应用基础,本科教学-浙江工业大学计算机科学与技术.doc
  9. 沪深交易所level2行情
  10. html 填表模板,WEB前端开发简历自我评价填写样本