Codeforces Round #451 & Codeforces Round #452

Rounding

Solution

Proper Nutrition

枚举

Solution

Phone Numbers

模拟

Solution

Alarm Clock

贪心,好像不用线段树也可以,事实证明我很擅长想得太多。

Solution

Squares and not squares

以后再也不用qsort了

Solution

Restoring the Expression

用哈希真的很讨厌好吗?你们怎么从来不考虑冲突的问题,用的那么毫无负担呢?

Splitting in Teams

Solution

Months and Years

Solution

Dividing the numbers

相邻的4个数字可以分成和相等的两部分,只有前最多3个会凑不出相同。

Solution

Shovel Sale

有的时候加不出9,这时候算最多个9,结果为n*(n-1)/2,草。

Solution

Segments Removal

stl大法好

Solution

Letters Removing

解法我已经会了,心情不好代码就不写了,描述一下过程:

首先用set记录各个字母都在哪些位置出现过

对于每次操作的输入lr,先找出lr在原字符串中对应的lr,然后根据c选择set,删除掉值位于lr之间的元素(很多次区间删除,所以用set)。

输出的时候62个set齐头并进,找到62个begin()中值最小的那个,输出对应字符,并删除该元素。

如何求lr在原字符串中的位置?

设a[i]表示按原字符串编号第i个字符串是否被删除,0为被删除,1为未被删除;s[i]表示1-i中有几个1,也可以当成a[1]+a[2]+...+a[i]。那么lr在原字符串中的位置就是最小的i满足s[i]=lr,用线段树或树状数组维护s数组,再二分确定最小的i,复杂度应该是nlgnlgn。

原文地址:https://www.cnblogs.com/dramstadt/p/8053361.html