社区讨论
关于这道题递推实现dp的后效性
P2622关灯问题 II参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo8hmv1g
- 此快照首次捕获于
- 2023/10/27 18:46 2 年前
- 此快照最后确认于
- 2023/10/27 18:46 2 年前
本蒟蒻在写完一下dp转移以后,如下:
CPPmemset(dp,0x3f,sizeof dp);
dp[(1<<n)-1]=0;
for(int i=(1<<n)-1;i>=0;i--){
for(int j=1;j<=m;j++){
int now=i;
for(int k=1;k<=n;k++){
if(a[j][k]==1 && (i&(1<<(k-1)))) now^=(1<<(k-1));
if(a[j][k]==-1 && !(i&(1<<(k-1)))) now^=(1<<(k-1));
}
dp[now]=min(dp[now],dp[i]+1);
}
}
```
发现该dp的转移是存在后效性的,认为dp[i]的最终更新有可能在dp[now]关于i的更新以后,即dp存在后效性。抱着试一试的心态交上去以后竟然A了。不清楚该递推实现的dp到底有无后效性,求巨佬解惑。
回复
共 2 条回复,欢迎继续交流。
正在加载回复...