loj10170
在 n×n 的棋盘上放 k 个国王,国王可攻击相邻的 8 个格子,求使它们无法互相攻击的方案总数。
----------------------------------------------------------------------------------------------------------------------
状态压缩DP
首先选出可用的状态
然后进行动归。
f[i][s][k]:表示到第i行,第i行的状态为st[s]的情况下,放置了k个国王的方案数。
f[i][s][k]=sum(f[i-1][S][k-cs[s]]),条件是状态st[s]和st[S]不冲突。
第一次没有开LONGLONG,于是进行了替换!!比较暴力!!!
----------------------------------------------------------------------------------------------------------------------
代码:
1 #include<bits/stdc++.h>
2 using namespace std;
3 long long n,k;
4 long long st[1<<10+5],js,cs[1<<10+5];
5 long long f[11][1<<10+5][105];
6 void getst(long long n)
7 {
8 for(long long i=0;i<(1<<n);++i)
9 {
10 if((i & (i<<1))==0)
11 {
12 st[js]=i;
13 long long tp=0;
14 for(long long j=0;j<n;++j)
15 if((i & (1<<j)))tp++;
16 cs[js++]=tp;
17 }
18 }
19 }
20 void dp()
21 {
22 for(long long s=0;s<js;++s)f[1][st[s]][cs[s]]=1;
23 for(long long i=2;i<=n;++i)
24 for(long long s=0;s<js;++s)
25 for(long long l=0;l<=k;++l)
26 for(long long j=0;j<js;++j)
27 if(((st[s]&st[j])==0)&&((st[s]&(st[j]>>1))==0)&&((st[s]&(st[j]<<1))==0))
28 f[i][st[s]][l]+=f[i-1][st[j]][l-cs[s]];
29 long long ans=0;
30 for(long long s=0;s<js;++s)ans+=f[n][st[s]][k];
31 cout<<ans;
32 }
33 int main()
34 {
35 cin>>n>>k;
36 getst(n);
37 dp();
38 return 0;
39 }
loj10170的更多相关文章
- Loj10170骑士
试题描述 在 n×n(1≤n≤10)的棋盘上放 k(0≤k≤n)个国王(可攻击相邻的8个格子),求使它们无法互相攻击的方案总数. 输入 输入有多组方案,每组数据只有一行为两个整数n和k. 输出 每组数 ...
随机推荐
- MySQL-5.7.29-winx64解压缩版安装
1.下载压缩包 https://dev.mysql.com/downloads/file/?id=491809 2.解压下载的文件(路径放在哪都可以) 3.配置环境变量 添加变量到path中 4.准备 ...
- 【Java并发编程】阿里最喜欢问的几道线程池的面试题?
引言 上一篇文章我们有介绍过线程池的一个基本执行流程<[Java并发编程]面试必备之线程池>以及它的7个核心参数,以及每个参数的作用.以及如何去使用线程池 还留了几个小问题..建议看这篇文 ...
- 每日一个linux命令2
cd命令 Linux cd命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用cd命令的基础之上. 1. 命令格式 cd [目录名] 2.命令功能 切换当前目录至dirN ...
- 达梦数据库学习(一、linux操作系统安装及数据库安装)
达梦数据库学习(一.linux操作系统安装及数据库安装) 环境介绍: 使用VM12+中标麒麟V7.0操作系统+达梦8数据库 一.linux系统搭建 本部分没有需要着重介绍,注意安装时基本环境选择&qu ...
- ElasticSearch教程——自定义分词器(转学习使用)
一.分词器 Elasticsearch中,内置了很多分词器(analyzers),例如standard(标准分词器).english(英文分词)和chinese(中文分词),默认是standard. ...
- PHP将数据集转换成树状结构
/** * 把返回的数据集转换成Tree * @param array $list 要转换的数据集 * @param string $pid parent标记字段 * @param string $l ...
- SonarQube学习(五)- SonarQube之自定义规则使用
一.前言 古人云:"欲速则不达",最近真的是深有体会.学习也是如此,不是一件着急的事,越是着急越不会. 就拿SonarQube来说吧,去年年末就想学来着,但是想着想着就搁置了,有时 ...
- 根据业务摸索出的一个selenium代码模版(python)
前言 总算入行上班几个月了,不得不说业务是真的不消停啊.. 本人工作上经常遇到一种场景:为甲方做自动化接口处理工具,登录需要短信验证码,, 嘛算是摸索出了一套selenium代码模板,主要解决如下痛点 ...
- 音视频入门-20-BMP、PNG、JPG、GIF静态图生成GIF动态图
* 音视频入门文章目录 * 静态图 -> 动态图 前面 [18-手动生成一张GIF图片] 和 [19-使用giflib处理GIF图片] 生成的 GIF 每一帧都是一个颜色,平时用到的 GIF 每 ...
- zabbix_server上的问题
不要写成127.0.0.1,要不然一直包zabbix agent没有启动.