省选选做(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,$那么考虑怎么整,我们求的是每次加边的时候,会增加多少点满足条件

 

posted @ 2022-03-22 07:11  Point_Nine  阅读(36)  评论(0)    收藏  举报