社区讨论
关于sosdp维护超集的疑问
学术版参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mid2ksdh
- 此快照首次捕获于
- 2025/11/24 19:34 3 个月前
- 此快照最后确认于
- 2025/11/24 20:04 3 个月前
CF1870E Bits And Pieces
第一篇题解dp的写法。
这是从小到大转移
CPPvoid sos(int len){
for(int i=0;i<21;i++)
for(int j=0;j<len;j++)
if(!(j&(1<<i))){
update(j,mx[j^(1<<i)]);
update(j,cx[j^(1<<i)]);
}
return ;
}
我的写法(从大到小)(通过了题目):
CPPvoid sos(int len){
for(int i=0;i<21;i++)
for(int j=len-1;j>=0;j--)
if(!(j&(1<<i))){
update(j,mx[j^(1<<i)]);
update(j,cx[j^(1<<i)]);
}
return ;
}
疑问1:为什么从小到大是对的?用 来更新 ,此时 不一定是最优解吧。因为 此时没有被更新过一次,只有初始时赋的值。
疑问2:我的从大到小的写法正确吗?因为没看到有题解这样写。
回复
共 3 条回复,欢迎继续交流。
正在加载回复...