LA4794 Sharing Chocolate

Posted Achen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LA4794 Sharing Chocolate相关的知识,希望对你有一定的参考价值。

传送门

记忆化搜索。

在下觉得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的主要内容,如果未能解决你的问题,请参考以下文章

UVa Live 4794 - Sharing Chocolate 枚举子集substa = (s - 1) & substa,记忆化搜索 难度: 2

javascript 保存自https://classroom.udacity.com/nanodegrees/nd001/parts/4942f4d7-a48d-4794-9eb0-404b3ed3

javascript 保存自https://classroom.udacity.com/nanodegrees/nd001/parts/4942f4d7-a48d-4794-9eb0-404b3ed3

javascript 保存自https://classroom.udacity.com/nanodegrees/nd001/parts/4942f4d7-a48d-4794-9eb0-404b3ed3

javascript 保存自https://classroom.udacity.com/nanodegrees/nd001/parts/4942f4d7-a48d-4794-9eb0-404b3ed3

javascript 保存自https://classroom.udacity.com/nanodegrees/nd001/parts/4942f4d7-a48d-4794-9eb0-404b3ed3