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

国王自然不愿意看到他的诸侯们互相开战,致使国家动荡不安。 因此,他希望通过合理的安排诸侯所处的位置,使他们两两之间都不能攻击。
现在,给出正方形的边长n,以及需要封地的诸侯数量k,要求你求出所有可能的安置方案数。(n≤l00,k≤2n2-2n+1)
由于方案数可能很多,你只需要输出方案数除以504的余数即可。
输入输出格式
输入格式:
仅一行,两个整数n和k,中间用一空格隔开。
输出格式:
一个整数,表示方案数除以504的余数。
输入输出样例
输入样例#1:
2 2
输出样例#1:
4
说明
注意:镜面和旋转的情况属于不同的方案。

分析:动态规划题
现将图整一下

能看到这么一个图(拿office画的,见谅)

//f[i][j]表示 前i行一共放置了j个棋子的情况
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAXN = 250;
const int Mod = 504;
int f[MAXN][MAXN],n,m;
int main(){while(scanf("%d%d",&n,&m)!=EOF){if(m==0) {printf("1\n");continue;}if(m>=2*n-1) {printf("0\n");continue;}memset(f,0,sizeof f );for(int i=1;i<=2*n-1;i++)if(i%2) f[i][1]=i;//在i列(包括i列之前)放置1个,有i种情况(奇数)else f[i][1]=i-1;//为偶数时,只有i-1个空位,所以之多i-1种情况。for(int i=1;i<=2*n-1;i++)for(int j=2;j<=i;j++)for(int k=1;k<=i-j+1;k++)f[i][j]+=f[i-k][j-1]*(i-j+i%2),f[i][j]%=Mod;for(int i=m;i<2*n-1;i++)f[2*n-1][m]+=f[i][m],f[2*n-1][m]%=Mod;printf("%d\n",f[2*n-1][m]);}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. sql server ssl安全错误_Nginx的这些安全设置,你都知道吗?
  2. 为了成长,我所做的一些努力!
  3. linux 下部署Python项目
  4. groovy:gradle
  5. oracle释放shm空间,安装11gRAC时提示/dev/shm大小不足
  6. 商业银行如何进行分布式数据库选型思考
  7. 米斯特白帽培训讲义(v2)漏洞篇 Web 中间件
  8. mysql快速启动_GitHub - TianSiQiang/Spring-Boot-MyBatis-Mysql: Spring Boot+MyBatis+Mysql 快速启动示例...
  9. php oracle count,请教分析函数count
  10. gitlab根据hook钩子自动化部署
  11. oracle同机单实例加入集群,将oracle同机单实例加入rac集群的操作步骤
  12. [Asp.net]Uploadify上传大文件,Http error 404 解决方案 - wolfy
  13. React 是如何成为跨越前端开发鸿沟的桥梁?
  14. 20191126_1_电影票房分析
  15. java 动态转换器_非常简单的Java动态转换
  16. 怎么把网页转成PDF?
  17. 正式“退休”的Flash,未来我们会怀念它吗?
  18. 【Pr】视频剪辑学习记录——导出
  19. 一起学爬虫(Python) — 21 蝉妈妈,嘿嘿
  20. 清华大学计算机通识选修,清华大学外语通识选修课调查分析-20210720010045.docx-原创力文档...

热门文章

  1. 【Linux】设备和磁盘分区|/dev/sda
  2. 公公的MC开服启程之路
  3. Linux 软中断机制分析
  4. 知识付费存在的问题及未来的发展
  5. 爬虫及数据分析--当当网
  6. 31.基类的公有成员在派生类中的访问权限由 决定.java_基类的公有成员在派生类中的访问权限由派生方式决定。()...
  7. Android——Cocosd2d-x手机游戏开发学习思路
  8. 医院医生护士都不愿说的医学小常识,我终于查齐了。留着以后自己学习。什么都有...
  9. 利用Python快速绘制海报级别地图
  10. 用Python快速制作海报级地图