博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LA4794 Sharing Chocolate
阅读量:5115 次
发布时间:2019-06-13

本文共 415 字,大约阅读时间需要 1 分钟。

记忆化搜索。

在下觉得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;
}

 

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

 

转载于:https://www.cnblogs.com/Achenchen/p/7612717.html

你可能感兴趣的文章
Linux的基本操作
查看>>
转-求解最大连续子数组的算法
查看>>
对数器的使用
查看>>
【ASP.NET】演绎GridView基本操作事件
查看>>
ubuntu无法解析主机错误与解决的方法
查看>>
尚学堂Java面试题整理
查看>>
MySQL表的四种分区类型
查看>>
[BZOJ 3489] A simple rmq problem 【可持久化树套树】
查看>>
STM32单片机使用注意事项
查看>>
swing入门教程
查看>>
好莱坞十大导演排名及其代表作,你看过多少?
查看>>
Loj #139
查看>>
hihocoder1187 Divisors
查看>>
Azure 托管镜像和非托管镜像对比
查看>>
js window.open 参数设置
查看>>
032. asp.netWeb用户控件之一初识用户控件并为其自定义属性
查看>>
Ubuntu下安装MySQL及简单操作
查看>>
前端监控
查看>>
clipboard.js使用方法
查看>>
移动开发平台-应用之星app制作教程
查看>>