| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:20L(有缩行之嫌)纯二进制滚动DP(428K 16MS可惜打表之下神马都是浮云)In Reply To:20L(有缩行之嫌)纯二进制滚动DP(428K 16MS可惜打表之下神马都是浮云) Posted by:kill_myself at 2011-04-09 23:47:36 > 8461762 kill_myself 2411 Accepted 428K 16MS G++ 584B 2011-04-09 23:42:09
> #include<cstdio>
> #include<string.h>
> long long f[2][4100],a,b,n,m,k,j,p;
> int main(){
> while(scanf("%d%d",&n,&m),memset(f,0,sizeof(f)),f[0][0]=p=1,a=n>m?n:m,b=n+m-a){
> while(a--)
> for(j=0;++j<=b;memset(f[p=1-p],0,sizeof(f[p])))
> for(k=(1<<b);--k+1;)
> if(k&1<<j-1)
> f[p][k&~(1<<j-1)]+=f[1-p][k];
> else{
> f[p][k|1<<j-1]+=f[1-p][k];
> if(j<b&&!(k&1<<j))
> f[p][k|1<<j]+=f[1-p][k];
> }
> printf("%lld\n",f[1-p][0]);
> }
> }
>
Orz。。。
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator