翠竹叶飞
Hello the cruel world.

这可能是我第1场只出1题的div1?

A 鬼畜题? 我的dev没有字符统计功能,于是只好扔到notepad++上。数错好几次。题目本身没什么特别的地方。

B 当时一直没想出来QAQ 题目中说m>=n*c/2,可以以c/2为突破口思考。

 

考虑c/2把权值等分,大于c/2的一定要比小于c/2的数大

想到这一点就好了,考虑小于c/2从前往后放,大于c/2的从后往前放,保证头尾那两段都符合条件。

对于前缀:每次新加一个数,能填到末尾就填,否则将它的upper_bound置成x。(由于每次至少将一个数减1,故每个数的操作次数不超过c/2)

后缀类似,每次操作都将数至少+1。(要与末尾元素变化方向一致)

 

当时没想出来,可能这方面的题目做的太少,或者是自己思维能力确实不够。

当时的思路是“先让n个位置都有数,然后尝试着调整数列”,gg

 

C 看了一眼没想法

D 先写式子把,得到O(n^2)的做法,考虑把把一个东西拿出来,算一下系数,发现它们被约成只剩2项!然后就轻易的O(n)辣。

后来发现这道题主要考的是“组合数%合数”,拉了以前写的板子,改了一波。

由于这道题是多组询问,所以需要预处理一些东西,使得单次复杂度为O(log^2 n)

由于自己傻逼,还因为预处理错WA了一发。

 

posted on 2017-12-03 12:02  翠竹叶飞  阅读(171)  评论(0编辑  收藏  举报