在 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的更多相关文章

  1. Loj10170骑士

    试题描述 在 n×n(1≤n≤10)的棋盘上放 k(0≤k≤n)个国王(可攻击相邻的8个格子),求使它们无法互相攻击的方案总数. 输入 输入有多组方案,每组数据只有一行为两个整数n和k. 输出 每组数 ...

随机推荐

  1. Spring Boot面试杀手锏————自动配置原理

    转:https://blog.csdn.net/u014745069/article/details/83820511 引言不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技 ...

  2. 手写简易版RPC框架基于Socket

    什么是RPC框架? RPC就是远程调用过程,实现各个服务间的通信,像调用本地服务一样. RPC有什么优点? - 提高服务的拓展性,解耦.- 开发人员可以针对模块开发,互不影响.- 提升系统的可维护性及 ...

  3. Mapreduce实例--二次排序

    前言部分: 在Map阶段,使用job.setInputFormatClass定义的InputFormat将输入的数据集分割成小数据块splites,同时InputFormat提供一个RecordRed ...

  4. window下运行nginx出现nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)

    做谷粒学院项目,用nginx出现nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a s ...

  5. jpa 主键重复导致查询list的数据总是重复第一条数据

    背境: JPA 读取 Oracle 中的视图,同一条sql, 在数据库 IDE (PLSql)读出 878 条记录并正常显示,代码依然保存了 878 条记录,但所有记录均一样,即数据库中第一条记录. ...

  6. 改进你的c#代码的5个技巧(二)

    在本文中,我将向你展示c#编程的5个最佳实践.我从日常编程经验中学到了这些实践.我在release模式下测试了所有的代码,并在开发环境稳定后进行了截屏.我想你会喜欢这些建议的. 在使用数据类型之前选择 ...

  7. 一行 CSS 代码的魅力

    之前在知乎看到一个很有意思的讨论 一行代码可以做什么? 那么,一行 CSS 代码又能不能搞点事情呢? CSS Battle 首先,这让我想到了,年初的时候沉迷的一个网站 CSS Battle .这个网 ...

  8. ElasticSearch--一、使用场景以及对应软件配置安装

    废话不多说,直接来硬的!我在使用的时候使用的是mysql数据库. 一.ElasticSearch概念和使用场景 1.当我们需要搜索海量数据的时候,就可能会用到.以下使用的场景有哪些呢? 搜索海量数据 ...

  9. VoltDB成功入选CNCF Landscape云原生数据库全景图

    近日,VoltDB正式入选 CNCF Landscape(可能是目前其中唯一的关系型分布式内存数据库).此次VoltDB 进入 CNCF Landscape,意味着 VoltDB 正式成为了 CNCF ...

  10. 解决github下载速度慢问题

    众所周知,GitHub是一个巨大的开源宝库,以及程序员和编程爱好者的聚集地,包括我之前推荐的诸多优秀的开源项目全部都是位于GitHub上.但是每当我们看到优秀的开源项目,准备去 下(bai)载(pia ...