【BZOJ】1087【SCOI2005】互不侵犯King
来源:互联网 发布:淘宝店铺代码生成 编辑:程序博客网 时间:2024/06/05 02:24
在
左下右上右下八个方向上附近的各一个格子,共
只有一行,包含两个数
方案数。
3 2
16
大暴搜……压位好写……
预处理可行状态,连边,然后
#include<stdio.h>long long f[10][82][512],ans;int n,k,tot,sum[512],poi[512],st;bool map[512][512];void dfs(const int &p,const int &mask,const int &t){ if (p==n) { poi[tot]=mask;sum[tot++]=t; if (mask==0) st=tot-1; return; } if ((mask & (1<<(p-1)))==0) dfs(p+1,mask | (1<<p),t+1); dfs(p+1,mask,t);}inline void build(){ for (int i=0;i<tot;i++) for (int j=0;j<tot;j++) if ((poi[i] & poi[j])==0 && ((poi[i]<<1) & poi[j])==0 && ((poi[i]>>1) & poi[j])==0) map[i][j]=map[j][i]=1;}int main(){ scanf("%d%d",&n,&k); dfs(1,0,0);dfs(1,1,1); build(); f[0][0][st]=1; for (int i=1;i<=n;i++) for (int j=0;j<=k;j++) for (int o=0;o<tot;o++) if (sum[o]<=j) for (int p=0;p<tot;p++) if (map[o][p]) f[i][j][o]+=f[i-1][j-sum[o]][p]; for (int i=0;i<tot;i++) ans+=f[n][k][i]; printf("%lld",ans);}
0 0
- [BZOJ 1087][SCOI2005]互不侵犯King
- BZOJ 1087: [SCOI2005]互不侵犯King
- bzoj 1087 [SCOI2005]互不侵犯King
- 【BZOJ 1087】 [SCOI2005]互不侵犯King
- bzoj 1087: [SCOI2005]互不侵犯King
- 【BZOJ】1087【SCOI2005】互不侵犯King
- BZOJ 1087: [SCOI2005]互不侵犯King
- BZOJ 1087 [SCOI2005]互不侵犯King
- bzoj 1087 [SCOI2005]互不侵犯King
- BZOJ 1087 [SCOI2005]互不侵犯King
- BZOJ 1087: [SCOI2005]互不侵犯King
- BZOJ 1087 [SCOI2005] 互不侵犯King
- BZOJ 1087: [SCOI2005]互不侵犯King
- bzoj 1087: [SCOI2005]互不侵犯King
- [SCOI2005] BZOJ 1087 互不侵犯King
- bzoj 1087 [SCOI2005] 互不侵犯King 题解
- BZOJ 1087 SCOI2005 互不侵犯King 状压DP
- bzoj 1087: [SCOI2005]互不侵犯King 状压dp
- Mysql cluster集群的搭建
- Fragment在inflate时的注意事项
- ZKW 线段树
- 《leetcode》: LRU Cache
- 浅谈C++多态性
- 【BZOJ】1087【SCOI2005】互不侵犯King
- maven Check $M2_HOME environment variable and mvn script match
- JAVA内存点滴
- 模拟按键给窗口发消息
- c++多个文件中如何共用一个全局变量
- 并查集
- hdu4728 PowMod(2016多校第一场1006)
- hdu2639Bone Collector II(01背包的第k优策略)
- a++,++a