SGU 220 Little Bishops(状压dp)
来源:互联网 发布:udid 分发平台源码 编辑:程序博客网 时间:2024/06/04 18:07
题意:n×n的棋盘,放k个棋子,棋子之间在斜线方向会相互攻击,求有多少不同的方案。
思路:把棋盘斜过来,就跟可以dp了。还是挺好想的,但是不知道抽了什么风,越写越复杂,写了好久才写明白。。。
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<map>#include<queue>#include<stack>#include<cmath>#include<vector>#include<bitset>#define inf 0x3f3f3f3f#define Inf 0x3FFFFFFFFFFFFFFFLL#define eps 1e-6#define pi acos(-1.0)using namespace std;typedef long long ll;int mw[25],mk[25],cnt[1<<10],n,k;ll dp[25][1<<10];void Init(int n){ mw[n]=n,mk[n]=0; if(n>1) { mw[n-1]=n-1;mk[n-1]=0; mw[n+1]=n-1;mk[n+1]=0; } for(int i=n-2;i>=1;i--) { mw[i]=mw[i+2]-2; mk[i]=mk[i+2]+1; } for(int i=n+2;i<n*2;i++) { mw[i]=mw[i-2]-2; mk[i]=mk[i-2]+1; } for(int i=0;i<(1<<10);++i) { int x=i; cnt[i]=0; while(x) { cnt[i]++; x=x&(x-1); } }}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); cin>>n>>k; Init(n); memset(dp,0,sizeof(dp)); dp[0][0]=1; dp[1][0]=1; dp[1][1<<mk[1]]=1; for(int i=0;i<n*2;++i) for(int x=0;x<(1<<n);++x) { if(dp[i][x]==0) continue; dp[i+2][x]+=dp[i][x]; for(int j=mk[i+2];j<mk[i+2]+mw[i+2];++j) { if(!(x&(1<<j))) dp[i+2][x|(1<<j)]+=dp[i][x]; } } ll ans=0; for(int i=0;i<(1<<n);++i) for(int j=0;j<(1<<n);++j) if(cnt[i]+cnt[j]==k) ans+=dp[n*2-1][i]*dp[n*2-2][j]; cout<<ans<<endl; return 0;}
0 0
- SGU 220 Little Bishops(状压dp)
- sgu-220 Little Bishops
- sgu220:Little Bishops(DP)
- [SGU 223]Little Kings(状压DP)
- SGU 223 Little Kings (状压dp)
- SGU 223 little kings BSOJ2772 状压DP
- Little Bishops
- [SGU 104]Little Shop of Flowers(DP)
- sgu 223 Little Kings 状态压缩dp
- sgu 225 Little Knights 状态压缩dp
- sgu 223 - Little Kings 状态压缩DP
- sgu 104 dp Little Shop of Flowers
- SGU 104 Little shop of flowers(dp)
- Little shop of flowers - SGU 104 dp
- SGU 104 Little shop of flowers(DP)
- 【SGU】104. Little shop of flowers DP
- SGU 104 Little shop of flowers [dp]
- SGU 104 Little shop of flowers【DP】
- Java的4种代码块
- spring SpEL
- HDU 3652 B-number (动态规划-数位DP)
- directx API(CHM)文档下载
- java中的静态代码块、构造代码块、构造函数执行顺序
- SGU 220 Little Bishops(状压dp)
- OJ1 --多线程
- Linux下文件描述符和文件流的转换
- 关于typedef void (*sighandler_t)(int)的理解
- 不是技术牛人,如何拿到国内IT巨头的Offer
- Compile libRTMP with MinGW
- python爬虫零基础入门
- 15.1.1
- HEVC 学习简介