垃圾成绩,一点都不稳定。
如果把数组开小的分得到的话..总分还挺不错..
那又能怪谁,都快NOIP了还犯这种傻逼错误
nc哥是要阿卡的节奏..真是太强了
某kyh也不知道偷了谁的rp,分高的一批
wd从来很强..几乎就没失手过
就我一个渣渣还是这么没前途555
暴力的分不会拿555
想到正解拿不到分555
T1 旋转子段
貌似思路和题解并不一样,但是复杂度没区别,还比题解好理解(并不是)
n^2:一个数要回到自己位置,旋转中心一定
用旋转中心的编号替代这个数的位置,不需旋转的数是他自己
用另一个前缀和数组处理不需旋转的数,为了区间得到翻转的损失
枚举每个旋转中心a+b,枚举翻转长度,碰到一个值等于a+b的位置就把计数器ans++
再用ans减去区间的翻转损失来更新答案
nlogn:发现答案只有在ans被更新时更优
否则只是损失白白增大,答案不会更优
所以对于每个翻转中心,用vector存下翻转中心为它的位置
枚举位置,二分查找另一端,相减得到答案
n:发现上述过程满足单调性
枚举一边位置的时候,另一个端点一定单调变化
比如左端点右移,右端点一定不右移。
单调指针,每次端点移动判断一下另一个断点是否移动即可。
vector里只有n个数,所以是O(n)。
T2 走格子
开了0.1倍数组减了40分
要不然高分暴力就85分了啊!
然后发现好像很接近正解了?
就是少考虑了一点啊啊啊!
一定要敢于想正解啊!你不是那么不行!
T3 模拟退火柱状图
学习了模拟退火,可以日爆此题数据,但是换一道题可能就A不掉了
所以打了一遍正解
发现对于一个点,它的花费是左边右边,分开计算,不同公式
对于某一边呢,为了去掉要求枚举的绝对值,又分成大于小于两个值域
这时候计算可以用数据结构维护了
开两个树状数组处理该点左右两边,下标为权值的排名
从左往右扫,一开始把所有点的右权值塞进来
每到一个点,从右bit删掉右权值,给左bit增加左权值
枚举最高点,三分高度,二分查找权值排名
O(nlogklogn)