题目链接:这里~

题目描述:

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

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

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

现在,给出正方形的边长n,以及需要封地的诸侯数量k,要求你求出所有可能的安置方案数。(n≤l00,k≤2n2-2n+1)

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

输入输出格式

输入格式:

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

输出格式:

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

说明

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

思路:难在转移,这个图并不规整,但是可以发现,每个封地只会影响横竖两排,我们考虑能否通过平移使得等价与原图形且图形方便转移。

如果我们将所有方块平移上去,可以发现,对于横竖排方块数量没有影响。

所以可以转移,转移方程需要用到乘法原理,记得初始化。

f[i][j]=f[i-1][j]+(f[i-1][j-1]*(lim[i]-(j-1));

代码:

#include<bits/stdc++.h>
#define R register
using namespace std;
int n,k,f[320][320],lim[320],mo=504,Max;
int main(){scanf("%d%d",&n,&k);Max=n*2-1;R int w=1;f[0][0]=1;for(R int i=1;i<=Max;i++)f[i][0]=1;for(R int i=1;i<=Max;i+=2){lim[i]=lim[i+1]=w;w+=2;}for( R int i = 1; i <= Max ; i++ )for( R int j = 1;j <= min(i,k) ; j++ )f[i][j]=(f[i-1][j]+(f[i-1][j-1]*(lim[i]-(j-1)))%mo)%mo;printf("%d",f[Max][k]%mo);return 0;
}

转载于:https://www.cnblogs.com/sky-zxz/p/9831025.html

[题解]诸侯安置(dp+组合)相关推荐

  1. P1240 诸侯安置 [dp]

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

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

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

  3. 诸侯安置 简单的递推

    诸侯安置 Problem Description 很久以前,有一个强大的帝国,它的国土呈正方形状(转45度看),如图所示. 这个国家有若干诸侯.由于这些诸侯都曾立下赫赫战功,国王准备给他们每人一块封地 ...

  4. 诸侯安置(暴力搜索)

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

  5. 【递归与递推】诸侯安置

    [递归与递推]诸侯安置 题目描述 很久以前,有一个强大的帝国,它的国土成正方形状,如图2-2所示. 这个国家有若干诸侯.由于这些诸侯都曾立下赫赫战功,国王准备给他们每人一块封地(正方形中的一格).但是 ...

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

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

  7. 【洛谷 P1240】诸侯安置

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

  8. 题解——洛谷P2734 游戏A Game 题解(区间DP)

    题面 题目背景 有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的任意一端取一个数,取数后该数字被去掉并累加到本玩家的 ...

  9. 诸侯安置 搜索02 empire

    这道题目的第一感觉肯定是很像八皇后!!!可是它并不是八后所以我们需要使用一种逆向思维去思考! 题目大家应该都知道了,我就不讲了,这里主要讲思路: 重新描述一下问题,其实就是在一个边长为 2n-1 的正 ...

  10. LuoguP1240 诸侯安置

    本来是来练组合的,不知怎么又开始水普及DP了 #include <cstdio> #include <iostream> #include <cstring> #i ...

最新文章

  1. mysql killed进程不结束_php和mysql连接方式(短 长 池)
  2. OpenCV中 Mat 按行或按列合并程序
  3. 游戏风格化角色创建入门指南视频教程
  4. 算法学习:后缀数组 height的求取
  5. secureCRt中文乱码问题
  6. 协方差、相关系数---通俗解释
  7. django第三天(路由基础和路由分配)
  8. ubuntu 修该rm命令使删除文件到回收站
  9. rman命令学习-tina(上)
  10. 程序布置到服务器上速度慢_百战程序员python面试题总结---高级语法(4)
  11. 史上最强百度网盘下载限速破解方法大全
  12. 独家丨我在北工大看王校长吃热狗
  13. 软件测试用例设计方法等价划分法
  14. terrasolid时间设置
  15. 微信人脸SDK集成踩坑
  16. 二级mysql真题2019_2019年9月二级MySQL试题(汇总)
  17. .ipynb_checkpoints报错的解决方法
  18. 联想e470加装固态硬盘_联想e470能不能加固态硬盘?
  19. SpringCloud(3)--服务熔断降级
  20. scratch连接wedo2.0超详细教程(附资源)

热门文章

  1. c# 标准正太分布函数_数据处理中0-1规范化和标准化
  2. 版本控制工具(svn)
  3. 版本控制工具(GIT)
  4. python3 数据结构_python系列十一:python3数据结构
  5. python进阶之内置方法
  6. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第3节 线程同步机制_6_解决线程安全问题_同步方法...
  7. java中的VO、PO、BO、DAO、POJO
  8. Mysql基本语句(个人笔记)
  9. 使用docker+tomcat部署jenkins
  10. Not a git repository (or any of the parent directories): .git