题目链接
解题方法:区间处理
题目分析
题目大意
解析
赛后按照官方解析写了一遍,按照闭区间计算,然后算出总长度R-L+1
然后删点。有一个比较坑的地方花了我很长时间,在处理线段seg的时候应当维护可延伸至的最大边界right,否则可能会重复删点。
1 | //正确代码 |
1 | //错误代码 |
官方解析:
考虑三角形三条边$ a,b,c $ $ (a \ge b) $的关系$ a - b < c, a + b > c $,即$ c \in (a-b,a+b) $。 令加入的边为$ c $,枚举所有边作为$ a $的情况。对于所有可行的$ b $,显然与$ a $相差最小的可以让$ (a-b,a+b) $覆盖范围最大,所以可以贪心地选择不大于$ a $的最大的$ b $。 于是我们可以先将边按长度排序,然后$ ai $和$ a{i + 1} $建一条线段。线段并是不合法的部分。 将所有线段按左端点排序,按序扫描一遍,过程中统计答案即可。 时间复杂度$ O(Tn\ \log n) $。
代码
1 |
|