2022NOIP A层联测16平衡(balance) 二择(choice) 数塔(pyramid) 游(tour)
from Catherine
2022NPIOA层联测13
数塔:
相等上传非常显然,重点是怎么二分(对于这种不知道更大的更优还是更小的更优的题,不知道选哪个二分模板。。)
大于等于和小于等于都可以,重要的是取等,就是保证答案在二分的区间内,
二分剩下的数是什么,剩下带等号的一方肯定合法,如果是大于等于,区间就向大的方向缩小
小于等于就向小的方向缩小
比它小的设为0,如果最上面的是0,说明答案小于它,否则答案大于等于它
用哪种形式二分的判断条件:找到答案的方向,找最大值=可行区间在左边,找最小值=可行区间在右边
格式配对的判断条件:边界是l和r相差1,目的是尽量尝试更优的情况
所以,找最大值,mid偏大+1再右移,找最小值,直接右移
实在不行那就试一下,看哪一版能过样例
code大于等于设为1
code小于等于设为1
有一个类似的题,好像当初我也是想了半天二分的逻辑
排序:from 来自学长的馈赠5
当时的总结:二分的模板有两个,from进阶指南,一个是找满足条件的里尽量大的,另一个是找满足条件的里尽量小的,我本来以为要找大于等于的第一个,所以要用求尽量小的答案的模板,但是它不对,然后我忽然发现我枚举的是比大于等于当前数的标准,然后只要当前数在大于等于的范围内是符合条件,所以标准越小越容易满足条件,但是要找恰好的位置,所以这个大于等于的标准应该恰好卡死,也就是说其实要找最大的答案。
忽然发现这两次都遇到了一个概念,那就是我二分的这个标准到底是什么东西,二分的就是答案呀!
可以理解成:二分,找到一个尽量大的标准(>=某数)把当前查找的位置上的数包括进去,也可以理解成,二分当前位置的值是什么,如果推出矛盾就不合法
如果把大于等于mid的看成了1,如果这个mid合法就说明答案大于等于mid,扩大就是很自然的了
二分什么的。。不禁联想到了交互题?!
环游
搬个题解:V只会变化log2V次,每一层中可达范围形成若干个连续段,我们需要在每一层选一个连续段覆盖所有点。
状压dp,令preS表示当前选了S这些层,可以覆盖的最长前缀,l[i][j]表示长度满足第i层限制右端点在j的最大连续段的左端点的位置。
就是换一个角度考虑问题:
从每一个状态至多选一个,覆盖所有区间,可以是状态连续,区间跳来跳去,也可以是区间连续而状态自由组合。为什么可以跳?反正都是每个区间选一个,顺序并不重要啦。
code
二择
审错题了,还以为选任意非空集合,那还没重边没自环,不就直接输出1?。。。
今天的官方题解写的真清楚:大小为n的匹配和大小为n的独立集加起来共3n个点,先求出一组极大匹配剩下来的点一定是独立集,两个要求中至少满足了一个。
code