SGU 220 Little Bishops(状压dp)
2014-06-03 18:43
423 查看
题意:n×n的棋盘,放k个棋子,棋子之间在斜线方向会相互攻击,求有多少不同的方案。
思路:把棋盘斜过来,就跟可以dp了。还是挺好想的,但是不知道抽了什么风,越写越复杂,写了好久才写明白。。。
代码:
思路:把棋盘斜过来,就跟可以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,mk =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; }
相关文章推荐
- sgu-220 Little Bishops
- SGU 104 Little shop of flowers(dp)
- SGU 104 Little shop of flowers【DP】
- SGU 104 Little Shop of Flowers (DP&打印路径)
- sgu223:Little Kings(状压DP)
- sgu 104 Little Shop of Flowers 动态规划(dp)题
- SGU 131-状压dp
- hdu5135 Little Zu Chongzhi's Triangles 状压dp
- SGU 104 Little shop of flowers [dp]
- HDU 5135 Little Zu Chongzhi's Triangles(贪心||状压dp)2014ICPC 广州站现场赛
- SGU 131 Hardwood floor(状压DP)
- SGU 104 Little shop of flowers [dp]
- SGU104 Little shop of flowers(DP)
- HDU 5135 Little Zu Chongzhi's Triangles(状压dp或者贪心)
- SGU - 131 Hardwood floor (状压DP)
- SGU 131 Hardwood floor(状压DP)
- sgu 131 状压DP
- HDU 5135 Little Zu Chongzhi's Triangles (14广州 状压dp)
- SGU 104 Little shop of flowers(DP)
- Little shop of flowers - SGU 104 dp