NOIP前集训总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/XLno_name/article/details/83061771

注意事项和小trick:

1.该开long long开long long,不开long long 见祖宗。
2.各数据范围的上限复杂度:
1 0 7 10^7 ~ 3 1 0 7 3*10^7 O ( n ) O(n)
1 0 6 10^6 O ( n log n ) O(n\log{n})
2 1 0 5 2*10^5 O ( n log 2 n ) O(n\log^2{n})
1 0 5 10^5 O ( n n ) O(n\sqrt{n})
3 1 0 5 3*10^5 O ( n n log n ) O(n\sqrt{n}\log{n})
5 1 0 3 5*10^3 O ( n 2 ) O(n^2)
1 0 3 10^3 O ( n 2 log n ) O(n^2\log{n})
3.若数据范围中 n n 比较小,往状压方面想,适当想想搜索。
4.一般需要决策的题目,若可以优化,则可以用DP,但一般数据范围比较大就会有性质,根据性质来寻找最优决策或简化状态,若状态空间过大,一般以贪心为主。
5.记住出度为 m \sqrt{m} 的建图方式,在一些计数题中有用。
6.计数问题,当DP很难算时,想想容斥,以及补集转化:至少,至多相减。

10.15

今天是第一场模拟赛,成功智商下线。八点开始看题,T1一眼二分一个值,然后判是否能从(0,0)走到(x,y),这时候脑子抽了,想到用射线法,边界之间连边,判是否会包围(0,0)。事实上这个是对的,但出现各种细节错误,而且此题暴力不可打,不可拍,导致成功爆零。其实可以直接判断边界之间能不能互相联通也可。T2基环树上求所有最短路径最大值。考虑把环去掉先。可以求出森林直径,并得到每个点的最长链,然后在环上DP一下就好。但由于细节太麻烦,我调了两个半小时,导致整场比赛下来就A掉这一题。T3分析性质后可以用 f i , 0 / 1 f_{i,0/1} 做一个简单的树形DP。总的来说,代码能力需要加强,对于一道题不要只想一条思路,要多想几个方向,既检查想法正确性又扩展思维,最近状态不佳,需要调整。

10.16

今天这场比赛真的不能不被吐槽。T1一道大水题DP(虽然我WA了),T2知道虚树的一般都会做,T3原题。。。。开场先写完T1,然后敲完T2,T3直接用原题程序。不用多少时间就写完了。但是代码量很大,这场比赛简直无脑,不能检验我真实水平和提升(真实水平很菜,只会模板,原题)。T1因为数组边界问题而WA,以后比赛要注意输入每个值的取值,看是否有枚举漏的。

10.17

这场比赛并没有拿到可以拿到的分数。T1是可以摸索出正解的,但是并没有拿到满分,在于并没有对拍,仅仅考虑两个序列不同的位置可以互相移,但是可能会出现换不到另一个数的情况,只能考虑先把手中数放好,然后抓一个另外的数来换到另一个位置,考虑不等的位置 a i a_i b i b_i 连边,表示要换到这个位置,相邻联通块之间互相跳需要 1 1 的代价,最后答案加上联通块个数 1 -1 即可。T2拿到了满分,套路的期望DP。T3的博弈题, n 2 n^2 s g sg 做法十分显然。考虑优化,发现行不通,那么就要考虑猜结论了。考虑什么情况下最优的使其必定能赢,尽量让状态定在一个位置,便是向其相反的操作来做,或者故意让一步,达到目标状态,其实这个结论不是很难猜,稍微观察手推,思考一下应该就能发现。对于挖掘性质,转换模型的题目不熟悉,要多多转换题意,猜测最优状态下的决策,性质。

10.18

前两题比较简单,T1显然的 n 3 n^3 状态的DP,考虑优化,我们是最大最小值,缩小状态就套路的枚举最小值,那么最大值也确定, O ( n ) O(n) DP即可。T2过水。T3首先发现答案显然具有可减性,那么使用括号序肯定最优,次数我们可以使用 A C AC 自动机解决,那么转换为一个二维偏序,但是这时候其他数据结构都会被卡掉,必须要去除其中一个偏序的影响。我们是在整个 A C AC 自动机上搞,所以会有一维偏序,考虑每一次把括号序上的串的 A C AC 自动机构出来。考虑到其是一个区间且 A C AC 自动机形态不变,我们用线段树维护 A C AC 自动机,即对于线段树上每一个节点代表的区间构 A C AC 自动机来搞,那就只剩一维偏序了,空间也不愁。当一些做法遇到瓶颈的时候,想想是哪些东西拖了后腿,考虑去除掉一些东西,或者简化一些东西,发掘这些东西的性质,什么在变,什么不变。

10.19

今天这场比赛做的很糟糕。T1比较简单,很快注意到怎么判有解,注意到多余边无用,建出生成树随便做即可。开始肝T2,一开始天真的以为以每一个景点作为起点跑一遍DP即可。后来发现不可行,这时候考虑了倒着DP,但是发现这样好像不太对劲,算不了答案就弃掉这种想法,继续想,然后考虑到第一步的结论,却始终过不了样例,离比赛结束30分钟看T3。却发现比较简单,但没有时间写了。匆匆交了T2错误的程序,比赛就结束了。有时有一些看起来无从深入的想法,往往可以仔细探究,不能轻易丢弃想法,比赛时应该仔细想题,看每一道题,若有确定的解法才开始写,多想一想,想多一点。思维总是转换的过于迅速,跳跃是好事,但不能够快速的过滤想法,想到一个东西,应停下来,仔细分析一波。

10.22

开场开下T1,本来觉得非常难做,突然发现图是一棵仙人掌,那么只要把所有环拉出来,那么对于一个右端点,合法的最左端点一定是单调的,我们可以把它弄出来,查询二分一下即可。T2求动态LIS,观察发现只需要知道每个数是否存在于所有LIS中,这个比较难想,需要分析性质,想了半天没什么好想法,打了60分暴力走人。
(如果继续分析下去,感觉发现这个性质不难,对于一个位置,若他在所有LIS中,那么他的排名是固定的,若跟它处于同一排名的数可以成为LIS,显然这个数不会在所有LIS中)
T3套路的枚举 a i , a j a_i,a_j ,然后统计答案,发现要乘上一个系数,这个系数和错排有关,套路地容斥出三个系数,然后分类讨论即可。
思维太僵,不会发现性质,有性质在手不会利用。

10.23

这场比赛真的很无语,三题都是想到了正解,却没打出来。
T1看了半小时,发现他可以每一次操作相当于把 l , r l,r 先赋为 1 1 ,然后做 k k 次前缀和,当时觉得这玩意差分能做,然后码了出来,然后样例一直WA,就认为这个做法是错误的,弃了。
事实上把 k k 从大到小做就好做多了,或者排序,对于每一个 k k 做。
T2很套路的计数题,发现刚好等于 k k 的答案很难算,可以用大小至多为 k k 减去大小至多为 k 1 k-1 ,这个可以 D P DP 算,预处理 n n 个点标号无向连通图方案就好。
T3数据结构题,想了一会 l o g log 做法,不太会,然后转念想了一下,可不可以分块,发现,只需要用链表维护每一块相对位置,即可,此时离比赛结束仅有40分钟,到最后也没有调出来。
总之很可惜,思维过弱,代码实现能力差,多想想与其有点关系的东西,看是否能够借此得出答案。

10.25

这场比赛成功降智。T1一眼以为是道大水题,不管怎么染代价不变,枚举最后颜色,计算答案即可,然后没有举出反例,成功GG。事实上可以先染成小的最后染成目标颜色,所以我们可以设计一个DP,设 f i f_i 表示前 i i 个瓶子染成目标颜色的代价,每次枚举一个区间先变成最小值再染,然后倒着做一遍,枚举一个中间点,表示从它开始往两边染算答案。
T2是个SB套路题,排序枚举边权然后启发式合并即可。然而数组开小RE,成功送掉70分。
T3不可做,不可改。。。。。。

10.26

再次降智,T1是个找规律or推式子题,一开始想的就是枚举深度算答案,结果这个想法我给弃了,弃了。。。。最后推出了一个递推式,60分滚粗,T2题意都看不懂,跳了,转化后是求一个期望LIS,用一个比较神奇的DP可以做到 O ( n 2 2 n ) O(n^2*2^n) 。T3套路求 g c d gcd ,那么肯定先分解质因数啊,考虑对于每种质因数分开做,要取 m i n min ,还要关注深度,子树信息,发现深度那个可以差分掉,那么排序,用树状数组维护即可。复杂度 O ( 8 n log n ) O(8n\log{n})

10.30

这场比赛打得还算不错,T1很水,随意贪心一下即可。T2肯定要二分啊,然后怎么做,发现要答案正确就一定要确定一个取值区间?挖掘答案性质就能发现,全局最大最小最优情况一定在两部分,那么就能确定区间了,上下扫一遍出解。T3先转化题意为加入权值和尽量大的边,使树上仅有奇环,考虑一条非树边会覆盖一条路径,一条树边不能被覆盖两次,并且每个点的度数不会超过10,于是我们可以设计一个状压DP,状压是否要考虑儿子的贡献,把路径挂在lca上,然后dfs一遍DP出解。

猜你喜欢

转载自blog.csdn.net/XLno_name/article/details/83061771