1592:【例 1】国王

时间限制: 500 ms         内存限制: 65536 KB

【题目描述】

原题来自:SGU 223

在 n×n 的棋盘上放 k 个国王,国王可攻击相邻的 8 个格子,求使它们无法互相攻击的方案总数。

【输入】

只有一行,包含两个整数 n 和 k。

【输出】

每组数据一行为方案总数,若不能够放置则输出 0。

【输入样例】

3 2

【输出样例】

16

【提示】

样例输入 2

4 4

样例输出 2

79

数据范围与提示:

对于全部数据,1≤n≤10,0≤k≤n2

sol:我自己的做法很劣,几乎是所有提交里最慢的,my:预处理暴力枚举两条边上的状态看看是否可转移,然后n*m*2n*2n,这居然过了,我也是醉了

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll read()
{ll s=0;bool f=0;char ch=' ';while(!isdigit(ch)){f|=(ch=='-');ch=getchar();}while(isdigit(ch)){s=(s<<3)+(s<<1)+(ch^48);ch=getchar();}return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{if(x<0){putchar('-');x=-x;}if(x<10){putchar(x+'0');return;}write(x/10);putchar((x%10)+'0');return;
}
inline void writeln(ll x)
{write(x);putchar('\n');return;
}
#define W(x) write(x),putchar(' ')
#define Wl(x) writeln(x)
const int N=15;
int n,m,Ges[(1<<10)+5];
ll dp[N][N*N][(1<<10)+5];
bool Can[(1<<10)+5][(1<<10)+5],Jud[(1<<10)+5];
int main()
{int i,j,k,ii,jj;R(n); R(m);for(i=0;i<(1<<n);i++){bool bo=1;for(j=2;j<=n&&bo;j++) if((i&(1<<(j-2)))&&(i&(1<<(j-1)))) bo=0;Jud[i]=bo;}for(i=0;i<(1<<n);i++) if(Jud[i]){for(j=0;j<(1<<n);j++) if(Jud[j]){bool bo=1;if(i&(1<<(1-1))) if((j&(1<<(1-1)))||(j&(1<<(2-1)))) bo=0;for(k=2;k<n&&bo;k++) if(i&(1<<(k-1))){if((j&(1<<(k-2)))||(j&(1<<(k-1)))||(j&(1<<(k)))) bo=0;}if(i&(1<<(n-1))) if((j&(1<<(n-2)))||(j&(1<<(n-1)))) bo=0;if(bo)    Can[i][j]=1;}}for(i=0;i<(1<<n);i++){Ges[i]=0;for(j=1;j<=n;j++) if(i&(1<<(j-1))) Ges[i]++;dp[1][Ges[i]][i]=1;}for(i=2;i<=n;i++){for(j=0;j<=m;j++){for(ii=0;ii<(1<<n);ii++) if(dp[i-1][j][ii]&&Jud[ii]){for(jj=0;jj<(1<<n);jj++) if(Can[ii][jj]&&j+Ges[jj]<=m&&Jud[jj]){dp[i][j+Ges[jj]][jj]+=dp[i-1][j][ii];}}}}ll ans=0;for(i=0;i<(1<<n);i++) ans+=dp[n][m][i];Wl(ans);return 0;
}
/*
input
3 2
output
16input
4 4
output
79
*/

View Code

肯定有更优的解法,(同种做法不可能差70ms),但我不知道qaq

转载于:https://www.cnblogs.com/gaojunonly1/p/10363376.html

一本通1592【例 1】国王相关推荐

  1. 【算法•日更•第十四期】信息奥赛一本通1592:【例 1】国王题解

    废话不多说,直接上题: 1592:[例 1]国王 时间限制: 500 ms         内存限制: 65536 KB 提交数: 290     通过数: 111 [题目描述] 原题来自:SGU 2 ...

  2. 一本通【例4-10】最优布线问题

    题目链接 http://ybt.ssoier.cn:8088/problem_show.php?pid=1349 问题描述 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来.两台计算机被 ...

  3. 信奥一本通-动态规划-例9.2-数字金字塔-方法四-逆推法代码实现

    #include<bits/stdc++.h> using namespace std;int main(){//x y分别为行列int x, y;//金字塔的高度int n;cin &g ...

  4. 爱好数学的国王 C++

    Z 国的国王是一个非常爱好数学的国王.一天他对着他的那些大臣说:"素数真是一种神奇的正整数, 除了 1 和它本身外,不能被其他任何正整数整除, 2 是最小的素数,有无穷多个啊--它还有一个美 ...

  5. 提高篇 第五部分 动态规划 第4章 状态压缩类动态规划

    例1 骑士(Sgu223) 1592:[例 1]国王 信息学奥赛一本通(C++版)在线评测系统 https://blog.csdn.net/guoyangfan_/article/details/82 ...

  6. 你的软件也能挣钱 共享软件走向国际指南

    共享软件为何要走向国际? 理由很简单,不少人做共享软件走国际路线,月入数万美元,而同样软件走国内路线恐怕很难达到这个数.(原因大家都知道) 软件开发三个永恒的主题是: 一.软件的功能及创意 二.软件的 ...

  7. 共享软件为何要走向国际--月光博客

    吾阅:该文章转自月光博客: --------------------------------------------------------------------------- 转自:http:// ...

  8. 一个小兔子的大数据见解2

    Big Data 阿里的大数据解决方案 MAXCOMPUTE DATAWORKS QUICKBI 1.Vmware增强 2. 1.1.VMware 虚拟网络设备 1.1.1.虚拟网卡.虚拟交换机 虚拟 ...

  9. 《Java150道面试题全集》

    本文转载他人,自留作笔记用,请尊重原创作者. 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两 ...

最新文章

  1. C语言数组栈怎么实现删除,C语言静态数组实现栈操作
  2. libcudart.so.10.0: cannot open shared object file: No such file or directory
  3. 【深度学习】Transformer在语义分割上的应用探索
  4. python 加注拼音-又一个奇葩要求,Python是如何将“中文”转“拼音”的?
  5. .net 导出html 到excel 合并单元格,C#导出Excel,并且设置Excel单元格格式,合并单元格....
  6. 手把手教你使用VS制作winform安装包
  7. JPG各种输入框样式
  8. Java程序编译的几个方法(编辑器Notepad++)
  9. QIcon 给按钮和动作添加图片
  10. Hexo博客搭建图文教程
  11. 鸿蒙OS比fuchsia的优势,第一天带你走进华为开发者大会,了解鸿蒙OS
  12. 神经网络算法识别手写数字minst
  13. tecplot360 2015 R1读abaqus后处理文件
  14. In-band network telemetry
  15. jQuery fsBanner 手风琴
  16. 神奇的 toLocaleString
  17. html5网页中用video标签无法播放MP4视频的解决方法
  18. 【3维视觉】DCC-DIF复现,超详细避坑指南
  19. 个人征信报告解析(机构版)
  20. 计算机组装已维护的学术报告,计算机组装与维护中的问题及解决对策分析

热门文章

  1. 一个月薪10000的北京程序员的真实生活
  2. mysql多列索引(组合索引)特点和使用场景
  3. 使用VRRP技术实现网关设备冗余,附详细配置实验
  4. EngineerCMS利用梦想CAD控件MXdraw进行图纸在线编辑,保存到服务器
  5. 网络爬虫学习1 - 使用 requests.get(url) 抓取网页
  6. 软件测试寻找测试点的思维角度有哪些方面?
  7. Android5.0,6.0,7.0,8.0新特性整理
  8. MySQL数据库时间和jdbc查询时间相差12小时问题解决
  9. Java批量建立文件夹
  10. AcWing 204. 表达整数的奇怪方式