社区讨论

区间重叠问题不需要处理

P10429[蓝桥杯 2024 省 B] 拔河参与者 3已保存回复 3

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@m21jk15k
此快照首次捕获于
2024/10/09 15:21
去年
此快照最后确认于
2025/11/04 17:35
4 个月前
查看原帖
证明:SET容器里一旦出现相同的值就必定最小值是00
​ 假设这两个区间分别是区间A和区间B,一共有三种情况。
​ 情况一:区间A包含了区间B,例如A=a[3,5],B=a[4,5]A=a[3,5],B=a[4,5] ,由于元素非负,这种情况是不可能的。
​ 情况二:区间A与区间B没有重叠部分,例如A=a[1,5],B=a[6,9]A=a[1,5],B=a[6,9] ,这种情况显然直接符合答案要求。
​ 情况三:区间A与区间B有部分是重叠的
​ 我们假设区间AAa[L,R]a[L,R]BBa[K,R]a[K,R'] ,其中K[L,R]K∈[L,R],那说明[K,R][K,R'] 部分是重叠的。
​ 我们设AA 的区间和是aa ,B的区间和是bb ,重叠部分的和是kk
​ 那由于a=ba=b ,则说明ak=bka-k=b-k ,那就说明去掉重叠部分,他们的和也是一样的,就说明就算把重叠部分去掉的两个子区间也是相同的,则最小值必定是00
​ 例如5,2,3,6,15,2,3,6,1 ,即便[5,2,3],[3,6,1][5,2,3],[3,6,1] 有重叠部分,那去掉一样的值,他们的和还是一样的。
​ 即[5,2],[6,1][5,2],[6,1] 也是符合答案的。
​ 说明一旦出现相同的值,就必定最小值是00
证明:重叠区间不会影响答案决策。
​ 假设两次选取的区间分别是区间A和区间B
​ 如果区间A和区间B是其本身,即A=[L,R],B=[L,R]\mathrm{A=[L,R],B=[L,R]} ,寻找第一个大于xx 的整数等价于寻找第一个大于等于x+1x+1 的正整数,或者通过erase\mathrm{erase} 函数消去本值,由于前面证明每个数值只会存在一次,所以无需担心删除或者不考虑带来的后效性,为效率可以考虑前者。
​ 如果区间A和区间B属于子区间关系,例如A=a[3,10],B=a[4,6]A=a[3,10],B=a[4,6] ,此时AA 区间包含了BB ,他们的差值就是ABA-B 所剩下区间的和,那既然他剩下的是ABA-B ,那说明我可以选择ABA-B 这个区间,再选择另一个区间,这样结果肯定比ABA-B 要小。至少可以选择[AB],[B左端点不在重叠区间的第一个元素][A-B],[B左端点不在重叠区间的第一个元素]所以子区间不会影响答案。
例如A=1,2,3,4,5,B=[3,4,5]A=1,2,3,4,5,B=[3,4,5] ,他们的差值是AB=[1,2,3]=6A-B=[1,2,3]=6 ,那我直接选择[1,2,3],[4][1,2,3],[4] 进行比较,得到的结果必然比没减去[4][4] 还要少。
如果区间A和区间B有部分重叠关系,即上面的第三个情况,同样的道理,那他们的差值就是AA 区间和BB 区间各自不交界的地方,那既然这样,直接选择这两个区间进行相减得到绝对值,必定比AB区间加起来还要小,所以也不会影响答案。
​ 例如有数组a[]={1,2,3,4,5},A=[1,2,3],B=[3,4,5]a[]=\{1,2,3,4,5\},A=[1,2,3],B=[3,4,5] ,那得到的结果必然是[1,2,4,5][1,2,4,5] 之和,那我直接选择[1,2],[4,5][1,2],[4,5] 两个分区间进行相减,必然比[1,2,4,5][1,2,4,5] 相加的结果要小。

回复

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

正在加载回复...