社区讨论

请使用左闭右开区间

P3147[USACO16OPEN] 262144 P参与者 7已保存回复 9

讨论操作

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

当前回复
9 条
当前快照
1 份
快照标识符
@lo1sqq2o
此快照首次捕获于
2023/10/23 02:22
2 年前
此快照最后确认于
2023/11/03 02:59
2 年前
查看原帖
不能写为左闭右闭区间的原因是假如 f[i-1][j] 根本就不存在,它的值是 00,按照左闭右开的写法这样就会导致左端点为 00 从而返回值是 00,这样是正确的,因为不存在根本就无法转移。
而按照左闭右闭的写法的话就会导致明明是 00 却认为这是上个区间的右端点,导致下个区间的左端点变成1,从而返回错误答案。
错误代码:
CPP
f[a][i]=i;
......
if(!f[i][j])
	f[i][j]=f[i-1][f[i-1][j]+1];
正确代码:
CPP
f[a][i]=i+1;
......
if(!f[i][j])
	f[i][j]=f[i-1][f[i-1][j]];
错误输出:左图。
正确输出:右图。

回复

9 条回复,欢迎继续交流。

正在加载回复...