2021 NERC
Contents
CF1666J Job Lookup
题意
给定一个
求一个BST,使得
其中,
输出这个 BST 的结构。
其中,
题解
注意 BST 一个非常重要的结论:
子树内的节点编号是一个连续的区间。
所以可以考虑用区间DP来做。
设
显然转移方程是枚举 parent节点
而
所以
转移方程有:
用二维前缀和预处理一下即可。
代码
|
|
CF1666E Even Split
题意
给定一个长度为
求一种方案,将这个直线分成
• 相当于划定
求一种分割方案,使得这些线段中,最长的与最短的差距最小?
其中,
题解
首先易知可以二分最终的长度差。
然后我们需要确定一个线段的长度范围 [ml, mr]
,注意到这个范围也是可以二分的(为什么?)。
所以我们二分
那么给定 [ml, mr]
这个范围区间,怎么check是否合法?
我们从左向右,考虑第
|
|
我们让
然后判断这个范围是否一直合法即可。
如果不合法,也可以通过不合法的是哪个条件推测出
现在我们求出了最优的范围区间 [ml, mr]
,怎么得到最终的区间分配结果?
我们 不能 简单的取
一定存在一种分配方案,使得第
不过注意到,第 res[i]
为第 res[i-1]
与 res[i]
的距离在 [ml, mr]
之间,并且 res[i-1]
代码
|
|