Rounding
Proper Nutrition
枚举
Phone Numbers
模拟
Alarm Clock
贪心,好像不用线段树也可以,事实证明我很擅长想得太多。
Squares and not squares
以后再也不用qsort了
Restoring the Expression
用哈希真的很讨厌好吗?你们怎么从来不考虑冲突的问题,用的那么毫无负担呢?
Splitting in Teams
Months and Years
Dividing the numbers
相邻的4个数字可以分成和相等的两部分,只有前最多3个会凑不出相同。
Shovel Sale
有的时候加不出9,这时候算最多个9,结果为n*(n-1)/2,草。
Segments Removal
stl大法好
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。