社区讨论

关于这道题递推实现dp的后效性

P2622关灯问题 II参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo8hmv1g
此快照首次捕获于
2023/10/27 18:46
2 年前
此快照最后确认于
2023/10/27 18:46
2 年前
查看原帖
本蒟蒻在写完一下dp转移以后,如下:
CPP
memset(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 条回复,欢迎继续交流。

正在加载回复...