Post 23

刚刚做了到sb题,结果没过(probset的第一题)。。。感觉自己做思路不难但是细节巨多的题的能力真是很弱,可能每个选手都有擅长的方面吧(不像我)

然后看到一篇NOI.AC系列比赛题解的Post,就看了看,感觉作者最起码是省队水准。。场场前10qwq

我打的时候能切一道题就不错了

突然发现博主的名字首字母在blog名里,一查是个金牌爷。。。

Au

真可怕。。怪不得每道题没做出完全正解都有接近正解复杂度的思路。。

哦,突然发现他说他是GX的,那也是个初三省队,高一银牌爷qwq

唉。。。

而且我感觉我记忆力最近真是极差无比,这是咋回事啊,我每天休息的都挺好啊。。

看道题。


Delete

题目大意: 一个长为$n$ 的序列A ,要删去其中恰好$k$ 个数,使得剩下的数中,$A_i=i$ (权值和下标相等)的元素数量最多,求这个最多的数量。

题解

以前不怎么懂偏序类的问题。

这道题真的是一道思维难度挺大的题。

然后我一开始愣是没看懂银牌爷的思路:

img

然后我自己想到一个推理的方法:
我们能够得到其删完数后的位置$2i-A_i$

那么我们有对于$i<j$

  • $A_i < A_j$(显然,不可能后面的数能到选中的前面的位置)
  • $A_j-A_i \leq j-i$(表明删前两数位置之差必须大于等于删后位置的差,不可能越删越多吧。。)

看上去可以直接二维偏序,但是题目要求有个k。

然后就不会了,找到官方题解,发现题解根本没管这个k??
然后我去看了看别人的代码,发现关于k的只有一行:

1
if (a[i].w >= 0 && a[i].w <= k && n - a[i].a >= k) {

然后我好像懂了,因为前面删除的数对于后面也相当于删除,所以只要当前这个数删除的元素小于等于$k$并且它的目标位置大于等于$k$就可以了。

然后我发现上面那个思路我也看懂了,这道题大概是懂了吧。主要是找到偏序关系。是道好题。

思路题不用代码。


看到个很牛逼的,以后也许会用到的资料?
https://blog.csdn.net/lemonoil/article/details/54405613

可能到时候学替罪羊树SBT看看这个,红黑树AVL是不可能的。。

blog主水平还是很不错的,虽然最后联赛遗憾退役。


感觉看一些有决赛水平的人的blog确实很有帮助,尤其是看到他们思维的闪光点。

然后去看了看NOWCODER和51Nod的题,感觉Wannafly和51Nod数学相关(得等我学习数学相关后啦)的题目质量很不错,以后也会做一些。

然后复习下可持久化与Splay的各种维护,开始学习一下基于值域的整体分治(好像就是整体二分)了。

以后做思维题主要:

  • POI
  • noi.ac和nowcoder的各种比赛(联赛前没看到noi.ac又办了那么多次模拟赛巨亏)

就酱。