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. 输出 每组数 ...
随机推荐
- 【代码周边】Idea设置类注解和方法注解(带图)
Idea版本: 类注解 打开setting→Editor→Code Style→File and Code Templates /** * Created with IntelliJ IDEA. * ...
- js对比两个时间的大小
/** * 时间对比 开始=结束返回0;开始>结束返回-1;开始<结束返回1 */ function dateComparison(date1,date2){ var start =new ...
- 配置 nginx 访问资源目录,nginx配置 root 与 alias 的区别
比如说想要把 /home/source 目录作为资源目录,那么需要如下配置: location /source/ { #识别url路径后,nginx会到/home/文件路径下,去匹配/source r ...
- Daphile 安装手册 -- 官方文档译文 [原创]
Daphile 安装手册(Daphile Installation) 英文原文:https://www.daphile.com/download/DaphileInstallation.pdf 采集日 ...
- Eureka Server启动过程分析
1.首先,SpringCloud充分利用了SpringBoot的自动装配特点 eureka-server的jar包,发现在META-INF下面的配置文件spring.factories,里面记录了Sp ...
- 基于E-PUCK 2.0多智能体自主协同 高频投影定位系统
群体智能机器人是一种国际前沿的人工智能研究项目,由多个小型机器人组成的集群式解决系统,灵感源于蚂蚁.蜜蜂.鱼等群体生物,在没有统一领导的情况下,也能合作执行大量复杂的任务,比如组建一个图形,再在此基础 ...
- Spark学习进度-Spark环境搭建&Spark shell
Spark环境搭建 下载包 所需Spark包:我选择的是2.2.0的对应Hadoop2.7版本的,下载地址:https://archive.apache.org/dist/spark/spark-2. ...
- 4.简单的 GNU 汇编语法
芯片启动时很多设备没有初始化,需要汇编语言进行准备. 简单的GNU汇编语法: 1 label: instruction @ comment label :标号,类似于外号,为所在位置做标号,可以通过这 ...
- Mysql中的语句优化
1.EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划. 下面来个简单的示例,标注(1.2.3.4.5)我们要重点关注的数据: type列,连接类型.一个好的SQL语句至少要 ...
- LinkedList 的 API 与数据结构
LinkedList 是 List 接口和 Deque 接口的双向链表实现,它所有的 API 调用都是基于对双向链表的操作.本文将介绍 LinkedList 的数据结构和分析 API 中的算法. 数据 ...