首页 > 其他 > 详细

LA4794 Sharing Chocolate

时间:2017-09-29 21:49:11      阅读:290      评论:0      收藏:0      [点我收藏+]

传送门

记忆化搜索。

在下觉得sxy大佬的代码写得相当好,通篇的骚操作(因为我都不会呀),%%% 学到了

 

预处理每个状态的值。以前的我都是zz地枚举每一位。。

for(int i=1;i<(1<<n);++i) {

         x=(i&(-i));

              if(i==x) continue;

              tot[i]=tot[x]+tot[i^x];

}

 

f[r][s]==1表示搜索过且不合法,f[r][s]==2表示搜索过且合法

  if(f[r][s]) return f[r][s]-1;

 

若是只剩一块巧克力要分

 if(s==(s&(-s))) return f[r][s]=2,1;

 

枚举子集,y为x在s下的补集

 for(x=(s-1)&s;x;x=(x-1)&s) {

        y=s-x;
}

 

两维状态值相加或相乘为定值时,用一维来代替也是一个常见的套路。

 

LA4794 Sharing Chocolate

原文:http://www.cnblogs.com/Achenchen/p/7612717.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!