刚刚做了到sb题,结果没过(probset的第一题)。。。感觉自己做思路不难但是细节巨多的题的能力真是很弱,可能每个选手都有擅长的方面吧(不像我)
然后看到一篇NOI.AC系列比赛题解的Post,就看了看,感觉作者最起码是省队水准。。场场前10qwq
我打的时候能切一道题就不错了
突然发现博主的名字首字母在blog名里,一查是个金牌爷。。。
真可怕。。怪不得每道题没做出完全正解都有接近正解复杂度的思路。。
哦,突然发现他说他是GX的,那也是个初三省队,高一银牌爷qwq
唉。。。
而且我感觉我记忆力最近真是极差无比,这是咋回事啊,我每天休息的都挺好啊。。
看道题。
Delete
题目大意: 一个长为$n$ 的序列A ,要删去其中恰好$k$ 个数,使得剩下的数中,$A_i=i$ (权值和下标相等)的元素数量最多,求这个最多的数量。
题解
以前不怎么懂偏序类的问题。
这道题真的是一道思维难度挺大的题。
然后我一开始愣是没看懂银牌爷的思路:
然后我自己想到一个推理的方法:
我们能够得到其删完数后的位置$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又办了那么多次模拟赛巨亏)
就酱。