NOIP模拟 14

    垃圾成绩,一点都不稳定。

    如果把数组开小的分得到的话..总分还挺不错..

    那又能怪谁,都快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)

posted @ 2019-08-08 08:11  Yxsplayxs  阅读(129)  评论(0编辑  收藏  举报