慢慢地发现每次打题解会很麻烦而且费时间,这篇博客留作思路汇总,给自己警醒。
游戏 (模拟36)
某天T3,思路难点在于把每个状态的点区分出来,也就是拆点,然后在给不同状态的点连边,进行最短路操作。
对于图上需要操作走动的点来说,往往不同的状态之间转移会很困难,在实现过程中也很难实现,不如把不同状态的点拆成多个状态互不影响的点,在分别考虑其转移条件,然后在区分对待,这样会使不同状态之间的考虑化简,之后考虑好状态之间的转移就可以了。
题目思路挺不错的。
影子 (模拟41)
并查集+lca找两点距离。
这题的并查集用的很巧妙,将点权从大到小排序,用并查集维护点集,点集中点权最小的点为当前枚举到的点。
然后有一个很巧妙的思路,维护当前点集的直径和该直径对应的两个端点,当我们搜到合并两个点集的时候,将端点两两结合,有四种情况,在加上两个点集本身的直径取最大,就是在当前点的最优答案。新点集的直径的端点一定属于上述四个端点之一,正确性可以反证法证明。
注意点集一定要合并,情况要考虑全。
夜莺与玫瑰 (模拟41)
莫比乌斯函数中的mu函数的妙用,4维到1维的优化,用到的等差数列求和。
玫瑰花精 (模拟41)
线段树在序列上的操作,维护了一些神奇的东西。
l,r,mid,p,l维护最左边的鸟的位置,r维护最右边的鸟的位置,mid维护距离两只相邻鸟的最长距离,p维护mid值的位置。
查询只查询根节点1的p值即可,注意与1,p,n的比较。
删点和插点操作相似,注意多种情况的枚举,也就是左儿子最右边的鸟,右儿子最左边的鸟的关系。
C (模拟43)
线段树+贪心+三分。
这几天的线段树维护一个特定的区间的题挺多的,加上模拟42的T2,可以看一看。
线段树维护的方法:先保证左端点一定满足条件,再把右端点插进去,找其中的最大or最小的右端点,实现贪心。
这道题还用到了三分,因为答案关于选特殊的个数是单谷函数。
至于贪心的证明,还需要再自己考虑考虑。
F (模拟44)
线段树优化dp。
这道题dp的思路还不错,毕竟考试的时候想了一个性能比较差的dp。
然后就是一个线段树优化了。
其实就是优化掉内层循环,找一下循环里面的性质,这道题是其中的不变量&dp_i-i&和&dp_i+i&,和给整个区间加上的相同的值。
可以拓展到更多的情况,比如区间减,区间赋值,单点查询,区间查询等。
具体依据具体性质而定。
kill (模拟45)
二分+贪心。
其实二分不难看出来,但是考场上真的有些懵了,二分没看出来,打了个傻逼set。
然后排序,贪心就行了。
我们要使每个人的花费最优,而我们在排序的基础上,枚举每个人所在的位置,从左到右找第一个符合条件的位置,因为后面的所有人都不会将我找到的这个位置左边的点作为最优点。
贪心即可,还有一个小性质,每个小怪兽的固定花费都是不变的,虽然没啥用,但是也是需要积累一下的。
beauty (模拟45)
题目转化问题很惊喜,自己在转化题目的能力方面做的还是太差了。
根据题意,很容易想到去找链找最大,但是这显然复杂度不对,然后找性质。
其实吧,就离正解不远了,但是自己没能突破这一哆嗦。
当自己卡在某一个思路的时候,想想突破,另辟蹊径,找一下意想不到的地方。
这道题在找(kan)了n年(bian)性(ti)质(jie)后,会惊喜的发现,可以把每个边对答案的贡献单独拿出来算。
然后这道题就解决了。
set (模拟46)
前缀和。
这道题前缀和不是很难,但是它要求对前缀和的理解和对模的意义有较高要求,总之考试的时候没想到。
A掉简单想到难。其实主要的还是一个在模n意义下最多只有n个不同的取值,然后就可以断定,一定有一个连续的区间符合条件,然后前缀和就行了。
read (模拟46)
思路不难但是打死想不到系列。
性质一:一个序列里最多有一种元素是整个序列的一半以上,减到合法后不会有新的元素种类不合法,可以简单证明。
然后乱搞就行了,题目卡的地方就是不让开数组,这就需要我们找一个不合法的元素。
然后“所以我们用两个变量 id, cnt, cnt 初始为 0. 然后生成每一个 A[i], 如果 cnt==0, 那么就令 id=A[i], cnt=1, 否则如果 id==A[i], 则 cnt++, 如不等于 , cnt--. 最后只要再扫一遍求出 id 的出现次数即可 .
因为如果有书超过 (N+1)/2, 那么就以为这它比其他所有书的和都多 , 那么 cnt 怎么减都不会小于0, 如果没有那 id 随便是哪个都没有关系了 . 最后再求这种书要减少多少个就可以了 .”
题解抄下来了。
蔬菜 (模拟50)
二维莫队。
这道题其实也不是很难,但是考场上确实没想到,一个比较板子的东西。
莫队的计算也比较简单,总之练了一下莫队。
联盟 (模拟50)
树的直径综合。
首先性质,断边肯定在直径上。
然后就是各种求树的直径的方法了,两遍Dfs求直径,还有就是dp求直径,dp的方法适用与有根树的直径。