NOIP前集训总结

退役预定,NOIP滚粗
最近的模拟赛花式挂分,思维各种局限被吊打,心态崩了。

注意事项和小trick:

1.该开long long开long long,不开long long 见祖宗。
2.各数据范围的上限复杂度:
1 0 7 10^7 107~ 3 ∗ 1 0 7 3*10^7 3107 O ( n ) O(n) O(n)
1 0 6 10^6 106 O ( n log ⁡ n ) O(n\log{n}) O(nlogn)
2 ∗ 1 0 5 2*10^5 2105 O ( n log ⁡ 2 n ) O(n\log^2{n}) O(nlog2n)
1 0 5 10^5 105 O ( n n ) O(n\sqrt{n}) O(nn )
3 ∗ 1 0 5 3*10^5 3105 O ( n n log ⁡ n ) O(n\sqrt{n}\log{n}) O(nn logn)
5 ∗ 1 0 3 5*10^3 5103 O ( n 2 ) O(n^2) O(n2)
1 0 3 10^3 103 O ( n 2 log ⁡ n ) O(n^2\log{n}) O(n2logn)
3.若数据范围中 n n n比较小,往状压方面想,适当想想搜索。
4.一般需要决策的题目,若可以优化,则可以用DP,但一般数据范围比较大就会有性质,根据性质来寻找最优决策或简化状态,若状态空间过大,一般以贪心为主。
5.记住出度为 m \sqrt{m} m 的建图方式,在一些计数题中有用。
6.计数问题,当DP很难算时,想想容斥,以及补集转化:至少,至多相减。
7.当很多东西难以维护,并且总数有限制,不妨想想平衡规划。
8.看题不要走神,不要瞎想,不然容易掉线。
9.DP的状态设计往往是题目要关心的,当要简化状态时,可以将状态抽象化,只要有合法转移即可。
10.心态要良好,不能够死磕一道题,不然会死的很惨。
11.多写写,多画画,多想想,有一些无关的东西也可以扩展一下,说不定会发现一些奇奇怪怪的性质。
12.对于所有方案或集合计算答案,我们往往可以转化成一个元素对答案的贡献,乘上方案数去算。
13.期望的线性性是个很重要的东西,一定要记住,记住,记住,可以配合上一条简易计算答案。
14.当没有思路的时候可以复读自己分析出来的东西,在脑子里构图,回想,很有用的。
15.打代码前要考虑极端情况,构思好再开始码。
16.正式考试时一定要注意时间,到时间一定要开始搞部分分,不能再死想正解。

10.15

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

10.16

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

10.17

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

10.18

前两题比较简单,T1显然的 n 3 n^3 n3状态的DP,考虑优化,我们是最大最小值,缩小状态就套路的枚举最小值,那么最大值也确定, O ( n ) O(n) O(n)DP即可。T2过水。T3首先发现答案显然具有可减性,那么使用括号序肯定最优,次数我们可以使用 A C AC AC自动机解决,那么转换为一个二维偏序,但是这时候其他数据结构都会被卡掉,必须要去除其中一个偏序的影响。我们是在整个 A C AC AC自动机上搞,所以会有一维偏序,考虑每一次把括号序上的串的 A C AC AC自动机构出来。考虑到其是一个区间且 A C AC AC自动机形态不变,我们用线段树维护 A C AC AC自动机,即对于线段树上每一个节点代表的区间构 A C AC 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 ai,aj,然后统计答案,发现要乘上一个系数,这个系数和错排有关,套路地容斥出三个系数,然后分类讨论即可。
思维太僵,不会发现性质,有性质在手不会利用。

10.23

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

10.25

这场比赛成功降智。T1一眼以为是道大水题,不管怎么染代价不变,枚举最后颜色,计算答案即可,然后没有举出反例,成功GG。事实上可以先染成小的最后染成目标颜色,所以我们可以设计一个DP,设 f i f_i fi表示前 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) O(n22n)。T3套路求 g c d gcd gcd,那么肯定先分解质因数啊,考虑对于每种质因数分开做,要取 m i n min min,还要关注深度,子树信息,发现深度那个可以差分掉,那么排序,用树状数组维护即可。复杂度 O ( 8 n log ⁡ n ) O(8n\log{n}) O(8nlogn)

10.30

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

近期比赛反思:

思维上还是太弱了,经常很多东西,稍微转变一下处理方式即可解决,却依然只想得到麻烦的解决方式,没有进一步化简的思路。看题应该抓住关键点,想好难处理的是那些,基于这些进行分析性质,找到化简的突破口。
若原题直接做非常困难,那么其肯定能够转换模型,转换到另一个方面去解决。转换模型就是不断读题,简化题意,找出要处理的东西。
猜结论是一个很重要的操作,通过画图,手玩,去猜想答案会是什么东西,一定会在哪里。
题目并不是一股脑的把东西往上套就能解决,往往还需要运用一些已知的性质,直径的各种性质就要会巧妙运用,并且记住这种套路,那么遇到这种题目就能够愉悦地分析了。
期望方面的套路:解方程,列式子,对答案没有贡献的只考虑方案,简化转化所求的东西。
预处理和离线是两个需要一定技巧去巧妙运用的东西,当一些东西被重复利用的很多,我们就可以预处理。当一些东西我们需要额外知道,但是在线不允许我们知道他们,我们就可以离线。
优化方面,我们不管处理什么东西,都可以往尽量少的方面去想,去枚举,是可以有效的发掘优化的途径,有时候也需要猜测和直觉,以及套路。接下来该怎么办,如何去做,都是要不断积累的。
积累的还是太少,很多东西还不会运用,还是要多做题啊。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值