省选选做(1)
$2021$省选题选做
补补题
$T1$卡牌游戏
一道因为数据水而变水的(本来就很水)水题
要求极差最小,尺取法很显然,直接把数值在坐标轴上排出来
然后移动直到翻的次数大于$m$,每次求一个最小值就好了
当然啦,由于数据过水,不同考虑$m$的限制也能过
for(int i=0;i<n;i++) { Max=max(Max,min(a[i],b[i])),Min=min(Min,max(a[i],b[i])); }
这个求最小极差就是,求一个最小的最大值和最大的最小值就好了
$T2$支配
学不会,$run$了
$T3$滚榜
状压$dp+$贪心思想$+$费用提前
不是很难
$T1$矩阵游戏
首先如果不考虑元素大小的限制其实很好构造
直接随机三个位置确定一个位置就好了,一般确定数字的题显然搞一个差分约束跑一跑就好了
那么我们先构造出一种方案使其合法就好了,首先,我们需要进行一些操作,在不改变原数大小的情况下使得$a$满足条件,可以使用奇偶$+/-$不同号的方式进行构造

考虑这样的话就可以解决了
那么我们肯定不能仅仅这么搞吧,这样显然需要每一行变化不好找出来
那么就把行列分开构造
行

列(与上图类似)
又发现这个东西并不是很好维护,因为不仅仅是差分约束问题,还有和分约束
那么重新构造一下

列相反
这样的话就能保证每个位置有加有减,可以跑差分约束了
而且我们有解的条件是什么,格子要满足限制,并且格子原来的值不能变,显然的,我们这么构造是肯定不变的,而且跑一跑差分约束就可以解决了,很妙
$T2$宝石
原先听机房$dalao$讲了一遍,当时并没有很明白
题意大概是这样的,一棵树上每个点都有一个权值,我们对于每种权值只能放一个并且存在先后限制,每次询问给定起点和终点,询问最多能收集多少个
我当时想的是,跑$dp$,然后合并一下就好了$?$
很显然的,我们需要把一条询问链拆成两部分,对于两个部分分别求解,
首先比较显然的是,我们肯定每个只需要找最近的第一个满足的就好了,我突然觉得我是神笔(我没看明白题误以为是贪心)那么必然对于每个点,可以预处理每个到询问$lca$的贡献,那么对于后半部分,在$lca$处理一下,进入时候插入可选点,往下扫的时候直接并查集合并一下,然后到一个询问点,找到对应位置的值就好了
$T3$图函数
题意:
正序删点,要求删点之前存在经过他的环,问最后删了几个点
显然的,当前删的点必然是环上最小值,不然的话,原来已经被删了
那么转化题意,求多少点有一个环上的点都大于他,一个比较套路的方法,我们删边操作旺旺很繁琐,那么可以改成加边去转移
考虑这个过程,就很像$Floyed,$那么考虑怎么整,我们求的是每次加边的时候,会增加多少点满足条件

浙公网安备 33010602011771号