打算是这篇博客在退役前不断更新,算是弱智选手的自我挣扎吧。
Achen是那种脑子不好使的选手,高中以前不接触竞赛,数学物理什么的都没有学过,基础非常差,思维能力极低下。
很多时候会方向错误,找不到点,转不过弯,无法顾及多方面等等。
多数时候都存在注意力涣散,极容易被外界影响,思维僵硬,考虑不全面等情况,或许我本来就不适合学理科吧。
有时候会想起知乎上一个回答,大致是说那些鼓励你的话都是不负责任的,说话的人只需要张张嘴,说几句漂亮话,他们自己心里也不相信,不过反正最后吃亏的是你。
想起有些话自己都觉得可笑,甚至有时候忍不住想怪罪无辜的人,但若是他们告诉我你别学了没用的快滚粗转学文吧之类的,可能会被我暴打一顿,人还真是矛盾。
前不久看到一个”想要知道真相“的女主的能力是能知道别人说话的真伪,然后她一直装作很元气的高中生的样子用假话应付周围的人,大概表达知道真相是很残酷的事情。
很多时候时候根本不知道是真更好还是假更加,也说不上什么算对什么算错,对和错本来就没有绝对的界限。
什么样的选择才是正确的,理智的也不一定正确,正确的也不一定正确。
谁也不知道选项的背后到底通往哪里,毕竟人生的垃圾游戏又没有攻略。
很多时候看到题是我不擅长的类型,自己就给自己压力和flag了,觉得我肯定做不来,实际上并不是很难的题。这是很致命的。
1、忽略多个问题间的联系
(1)翡翠的排挤原理
看到等差数列先想到列成竖式
中间:这一位上下相邻的差是固定的(不够要向前借),要么为x,要么为x+1(可能借给后面)
左边:发现首项左边为0,上面一定可以构造出来,不管左边
右边:右边根据等差数列列出式子,利用10^k,每一位的数,公差,首项等等,可以列出一系列不等式
发现可能的未知量很多,看到未知量很多的情况下就会很方也是我的一个毛病
然后思维散乱,根本就已经觉得这些式子不能用了,写的时候完全是没有认真斟酌的,看我考试时打的草稿,这部分的式子根本是混乱的,随便尝试用一些未知量列式子然后发现不可解,随后放弃这道题。
然后不可解的关键就是2中不管左边是错误的,觉得我已经解决了这个问题,就与主要问题无关了,实际上是有关的,有了它右边的式子才能列出来
也是因为列式子的时候没有仔细考虑未知量之间的关系,把所有可能有用的式子有条理的罗列,考虑到底缺少了什么至于式子不能用,哪些其实可以用已知量代替,而忽略了左边
而 这个关键点一直到我问llj第三遍的时候才发现,之前一直听讲题都是感觉很有道理,好像懂了,跟着别人的思维走,似乎没有漏洞,但是其实有些自己没有注意 到的点,别人觉得显然而忽略的点,传递给我的时候原样接受别人的思维也没有注意,至于出来问题却根本就没有明白自己到底是哪里出了问题
一直困扰我的时,右边的等差数列在首项加多少倍公差之后进位不知道会到哪里的麻烦,无法列出合适的不等式
同时我又知道左边的是可以直接算出的
那么结合两点,这道题就可以解决了
也就是,先算出每个数包括给出的这一位以左的数,记为a[i],设给出的这一位为10^k位,首项的实际值为x,公差为d,不等式就很容易列出了
a[i]*10^k<=x+(i-1)*d<(a[i]+1)*10^k
a[i]*10^k-(i-1)*d<=x<(a[i]+1)*10^k-(i-1)*d
这样列出n^2个不等式后,两两组合,左边小于右边,可以得到d关于10^k的上界和下界,那么枚举k直到d取到整数值即可,移项可得k是很小的。
注意下界+eps和上界-eps
(2)NOI2015的寿司晚宴
题解已有了,不赘述。
这道题,发现按大于sqrt(n)的因子可以分成若干类,每一类只有一个人能选
发现小于sqrt(n)的因子非常少,这部分可以状压dp来保证不选重,是已经解决的问题,又被我扔在一边不予考虑了
就出现了问题,不知道大于sqrtn的因子如何处理
如果把已经解决的问题和现在的问题结合,按大于sqrtn的因子分类后,在每一类中状压dp,问题就得到了解决
2、正反问题的转换
把一个问题转换为求一个问题的补集也是OI中很常用的套路在概率期望问题中就非常常见了
这道题就是很典型的例子,因为正着算会发现无论如何都有相互关系的牵扯,剪不断理还乱,怎么也dp不出来,我就放弃了,看题解了
这种时候动动你的小脑瓜,把问题稍微转换一下,看反过来的问题好不好求,一切迎刃而解
这道题是一个概率和期望的转换,可能归在这里不太恰当,但我觉得是差不多的类型
在期望概率问题中,很多时候需要概率和期望直接的转换
4.动态和静态的转换
这一块也可以说成,能够离线解决的问题都不是问题(弥天大雾)
因为曾经痴迷垃圾数据结构,所以很多时候对于问题我倾向于能动态查询就动态查询,能用数据结构就用数据结构,不能用也用(?)
但是很多问题离线下来解决起来是会非常方便的,像莫队这种就不说了
这次考试的t1,当时没有人想到离线做法,而在线做的话似乎想不到比暴力跳父亲更优的做法了。
在一个问题上死磕是非常不明智的,有时候你无法解决一个问题,可能是它真的无法解决。
而换一种离线的方式,问题就变得很轻松了。
其实这题跟这道动态点分治的题有异曲同工之妙,都是考虑从树上一个点到相邻点会发生什么,刚好这道又是需要动态维护的
(2)SCOI2018d1t1
SCOI惨挂的罪魁祸首之一。我根本不会,很多会的大佬还被卡空间了。
我一直在想动态点分治,是非常不好做的,至少我不会。。有各种问题
但是点分治为什么一定要动态呢,就因为刚学了动态点分治吗,就因为它跟动态点分治的题长得有一丢丢想吗?
DYX学长提供做法
可以把修改和询问挂在点上,然后点分治,把这次搜到的点上的询问和修改拿出来按时间sort一下做,还是拿线段树维护,但是这样空间只需要On
并且因为点权没有负数,那么你只需要给叶子结点安排dfs序,线段树里只维护dfs序,空间更小
我觉得的ok
5.17upd 点分树套线段树是同样的道理,思维太死了,做了几道模板题就认为线段树只能动态开点维护每个点到跟的距离,但是要子树修改的话,线段树维护dfs序就好了。
5.查询关系的转换
把z到跟的路径上的点值+1,查询一个点到跟的路径和就是它与z的lca的深度。
相对的,把l~r到跟的路径上的点值+1,查询z到跟的路径和就是要的答案。
比较巧妙,这是我第一次做到的这种转换的题。
(2)负荷领域的既视感
发现问题有两种查询方式,被查询点加,查询点查子树,和查询点加,被查询点查到跟的路径和。两种方式复杂度不同,和查询点数量有关。按查询点的数量分别用不同方式查询即可。
(3)C题
这是一道计算集合题,大类分得不是很清晰,按个人感觉来的,只可意会不可言传。
枚举撞边的顺序,把每条边一直关于前一条边对称直到关于第一条边对称,原问题转换为求是否存在一条以s为起点的穿过这n条直线的直线。
6.图论模型的转换
图论的题是sxy的强项,而我常常没有想到模型的转换,或者根本没有往图论的方向靠。
(1)超高校级的电竞社
排列的题常常会跟图论挂钩。最常见的一种方式就是从i->p[i]连边
这道题,对于每个位置的限制转换为图论的关系就是一个点走两步之内必须到另一个点,通过i->p[i]连边,发现新图和原图的一些关系,从而解决问题。
记得还做过这样的题,一时想不起来了。
7.简单算法代替复杂算法
因 为曾经沉迷数据结构,在这方面已经吃过很多亏了。类似树套树,kd-tree,动态点分治等等较毒瘤的算法,90%的情况下都不是正解,剩下的,一半情况 下我都会打挂,所以轻易使用这些算法是非常非常不明智的做法。这样的题往往还有写起来更加容易的做法或者是你的时间和空间复杂度没有算对,哪个细节没有注 意到之类的。
另外一些情况是因为学习了较复杂的算法,而遗忘了一些简单的算法,因为高级数据结构而忘记一些其实可以更优秀的解题的简单的数据结构等。
(1) SCOI2018 见4(2)
(2)A题 这是一个比较简单的计算几何问题,最早我写的那一次就写了kd-tree,后来发现式子某个地方写得有问题。
还有scoid2t1 同样是我很sb地打了kd-tree,发现式子列错了,魔改一发,调了3h,最后跑了暴力分。