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