2017.10.1 互不侵犯king 思考记录
来源:互联网 发布:c语言vector迭代器 编辑:程序博客网 时间:2024/06/09 20:01
、、没想到做的这么顺利
首先n<=⑨..
所以状压这个⑨
然后枚举状态转移累加即可
f【行数】【最上层排布情况】【已经用了几个】
最后 Σf【n】【i】【k】 0<=i<2^n 即是答案
注:long long
码:
#include<iostream>#include<cstdio>#include<cmath>using namespace std;long long f[11][1050][180],er[55],K,i,j,n,l,ans,cnt,fa[1050],fags[1050],geshu,k;int main(){scanf("%lld%lld",&n,&K);//预处理 int sx=pow(2,n);er[0]=1;for(i=1;i<=9;i++)er[i]=er[i-1]*2; for(i=0;i<sx;i++){if(!(i&(i<<1))&&!(i&(i>>1))){geshu=0;for(j=0;j<=9;j++){if(i&er[j])++geshu;}fa[++cnt]=i;fags[cnt]=geshu; }}f[0][0][0]=1;for(i=1;i<=n;i++){for(j=1;j<=cnt;j++)//枚举上一个状态 for(k=0;k<=K;k++)//枚举上一个状态放的个数 {for(l=1;l<=cnt;l++){if(!(fa[l]&fa[j])&&!(fa[l]&(fa[j]<<1))&&!(fa[l]&(fa[j]>>1))){f[i][fa[l]][k+fags[l]]+=f[i-1][fa[j]][k];}} }}for(i=1;i<=cnt;i++){ans+=f[n][fa[i]][K];}printf("%lld",ans);}
阅读全文
0 0
- 2017.10.1 互不侵犯king 思考记录
- 互不侵犯king
- 互不侵犯king
- 互不侵犯King
- 【BZOJ1087 || SCOI2005】互不侵犯King
- scoi 互不侵犯 king
- SCOI05互不侵犯King题解
- [BZOJ1087][SCOI2005]互不侵犯King
- 【BZOJ】1087 互不侵犯King
- 【bzoj1087】[SCOI2005]互不侵犯King
- 【SCOI2005】【BZOJ1087】互不侵犯King
- [BZOJ1087] [SCOI2005]互不侵犯King
- bzoj1087【SCOI2005】互不侵犯King
- SCOI2005[互不侵犯KING]
- bzoj1087: [SCOI2005]互不侵犯King
- bzoj1087: [SCOI2005]互不侵犯King
- [SCOI2005]互不侵犯king
- [SCOI2005]互不侵犯King
- 洛谷Oj-最短网络 Agri-Net-最小生成树(模板题)
- Java Character 类
- 显示调用析构函数被g++编译器优化掉不执行
- 修改Linux系统的主机名
- imx6学习笔记
- 2017.10.1 互不侵犯king 思考记录
- KD-tree的原理以及构建与查询操作的python实现
- redis安装make失败
- bzoj2839集合计数 容斥原理
- PHP 发送Email类
- [uva-417] Word Index (BFS、队列
- throw...catch in c++
- 引领虚拟币开发底层技术的核心代码是什么
- 油田,紫书P162Uva572