Codeforces Round #218 (Div. 2) (线段树区间处理)
2013-12-09 12:23
375 查看
A,B大水题,不过B题逗比了题意没理解清楚,讲的太不清楚了感觉= =还是英语弱,白白错了两发。
C:
二分答案判断是否可行,也逗比了下。。。二分的上界开太大导致爆long long了。。。
D:
看完题想都不想就用线段树搞起了,虽然我知道并查集很简单。。不过没用并查集写过区间处理的问题就不用多想了。。
刚开始时,所有的船都是空的,也就是说可放的水量是船的容量,然后对于第一个操作,意思就是从第x个数开始减小直到减小了p或者后面都变成0了。这里我就二分查找下最右边的会减小的数R,然后把x~R-1的数都清零,对于第R个数计算出剩余量后单点更新,mark[rt] = true表示这段区间被清零了,第二个操作直接单点询问。
E:
给你n个地铁站的位置,都是在x轴上的点,选出k个点使得k个点两两之间的距离和最小。
思路:
首先肯定是对n个点排序,这样子之后k个点肯定是排完序之后某段连续的k个。
所以可以枚举起始位置计算该位置开始的k个距离和,现在的问题就是如何O(1)的计算出该位置的结果。
假设我知道了 区间(L, R)的两两距离和,考虑区间 (L , R) 如何O(1)推出区间(L+1, R+1),转移其实就是去掉L点,加上R+1点,很容易知道原来的距离和减小了L到其他点的距离s1,增加了R+1到其他点的距离s2,画个图很容易得到s1+s2 = (L到R+1的距离)*(k-1),也就是说我只需要知道了L到其他点的距离和,就可以推出转移之后的两两距离和的值,所以说只需要维护上一次的两两距离和and 前一个区间的L到其他点的距离和即可。具体见代码~
这个E题实在是伤,比赛最后十分钟敲完交上了WA,最后竟然是给定的每个位置不是递增的,输出的时候要输出id,前面居然没把这个写上来= =伤,还是太弱
C:
二分答案判断是否可行,也逗比了下。。。二分的上界开太大导致爆long long了。。。
D:
看完题想都不想就用线段树搞起了,虽然我知道并查集很简单。。不过没用并查集写过区间处理的问题就不用多想了。。
刚开始时,所有的船都是空的,也就是说可放的水量是船的容量,然后对于第一个操作,意思就是从第x个数开始减小直到减小了p或者后面都变成0了。这里我就二分查找下最右边的会减小的数R,然后把x~R-1的数都清零,对于第R个数计算出剩余量后单点更新,mark[rt] = true表示这段区间被清零了,第二个操作直接单点询问。
E:
给你n个地铁站的位置,都是在x轴上的点,选出k个点使得k个点两两之间的距离和最小。
思路:
首先肯定是对n个点排序,这样子之后k个点肯定是排完序之后某段连续的k个。
所以可以枚举起始位置计算该位置开始的k个距离和,现在的问题就是如何O(1)的计算出该位置的结果。
假设我知道了 区间(L, R)的两两距离和,考虑区间 (L , R) 如何O(1)推出区间(L+1, R+1),转移其实就是去掉L点,加上R+1点,很容易知道原来的距离和减小了L到其他点的距离s1,增加了R+1到其他点的距离s2,画个图很容易得到s1+s2 = (L到R+1的距离)*(k-1),也就是说我只需要知道了L到其他点的距离和,就可以推出转移之后的两两距离和的值,所以说只需要维护上一次的两两距离和and 前一个区间的L到其他点的距离和即可。具体见代码~
这个E题实在是伤,比赛最后十分钟敲完交上了WA,最后竟然是给定的每个位置不是递增的,输出的时候要输出id,前面居然没把这个写上来= =伤,还是太弱
相关文章推荐
- [CF#365 (Div. 2) Mishka and Interesting sum] 线段树离线处理区间不同数
- Codeforces Round #218 (Div. 2) (线段树区间处理)
- 线段树离线处理(区间内出现k次的数有多少个)Codeforces Round #136 (Div. 2)
- Codeforces Round #149 (Div. 2) E. XOR on Segment(21棵线段树处理每一位+区间异或)
- poj 3225 Help with Intervals(线段树进阶,处理区间,拆点)
- Codeforces Round #333 (Div. 2) B. Approximating a Constant Range (线段树区间最值)
- [hdu3333 Turing Tree] 线段树离线 处理区间不同数
- 【HDU5649 BestCoder Round 76 (div1)D】【二分+线段树】DZY Loves Sorting 全排列1~n 区间升序降序排序 最后k位置的数是几
- CF 242E-XOR on Segment(线段树区间处理+二进制)
- hdu 4747 Mex( 线段树? 不,区间处理就行(dp?))
- Codeforces Round #376 (Div. 2) D 线段树区间维护
- POJ 3145Harmony Forever(线段树更新+分情况处理数据+区间极值查询+好题)
- Codeforces Round #364 (Div. 2) C 二分处理+求区间不同字符的个数 尺取法
- hdu 3333 Turing Tree(线段树求区间内不同值之和+离线处理)
- 线段树离线处理(区间内不同的数的个数)hdu3333
- Codeforces Round #446 (Div. 2) B. Wrath(线段树,RMQ,区间最值)
- 11402 - Ahoy, Pirates!(线段树区间更新(标记重叠的处理))
- HDU-3308 LCIS 线段树 区间处理
- Codeforces Round #136 (Div. 2) D. Little Elephant and Array 线段树 离线处理
- BZOJ 3110 [Zjoi2013]K大数查询 (整体二分 + 树状数组或线段树处理区间合值)