九省联考2018乱写

d1t1

考虑到棋子一定是阶梯状排列据说爆搜一发只有35w种状态

那么就直接上哈希+记忆化+(Min-Max)对抗搜索,注意要记忆化倒着搜

还看到了一种神仙状态,先加(m)(0),若有一行有(k)个棋子,就在第(m)(0)后面插入一个(1),状态数应该更少?

d1t2

数字从大到小排序

先考虑数字互不相同的情况,显然每个节点在父亲节点可选择区间内,选没被选到的最大的那一段区间

如果有相同数字这样就会出问题,例如数字是(7,6,5,5,5,5),其中(1)节点子树大小是(4)(2)节点子树大小是(2)

考虑每个数字维护一个(c_i)表示自己加上左边还有几个数字能被选择

那么处理一个节点,根据贪心,找到这个点能选到的最大数字(([pos,n])(c_i)都大于这个点子树大小的最靠左的位置),又根据贪心,我们应该选择这个数字中最靠右的一个

此时知道这个数字左边应该留出(siz[x])个数字放到(x)的子树内,但是我们不能直接钦点是哪些数字,因为不知道后面的节点是什么情况

此时可以对([pos,n])减去(siz[x]),表示这些位置左边可以选的数字少了(siz[x])个,用来限制住想要对(pos)左边数字下手的节点,(c_i)的含义可以理解为,别的节点至多能在我左边拿走几个

遍历到子树内的时候,要把父亲的影响减去,因为父亲的限制是用来限制住同深度的节点,当自己的子树想要在内部寻找数字的时候应该放开限制,根据贪心,子树必定会选择它们父亲限制的那些数字

d1t3

有一个比较显然的暴力:

(f[i][j])表示包含(i)的联通块,权值大于(a[i])的有(j)个的方案数,我们有一个(O(n^2k))的算法

观察到(O(n^2k))大概只有(4e9),但是开了(7s),所以卡卡常就过了

不会有人觉得我要写正解吧,不会吧不会吧

d2t1

如果读懂题还不是很难但是我被题意杀了

先考虑(C=1)的很厚的暴力分

最优方案可以直接(O(nm))确定下来

第二问可以二分答案,把每个人放在哪个位置才能三个愿望一次满足

再考虑(C eq 1)的情况,可以考虑魔改一发匈牙利,让右侧节点每个节点能够接受(b[i])个点这样子

对于每个人,志愿从第一到最后跑匈牙利

如果第二问依旧二分的话,我们要存下每个人跑完匈牙利后的图,匈牙利要用(set)维护,复杂度可能是(O(n^2clogn))这样子

但是注意到一个性质,对于一个点,匈牙利遍历到前面某个节点的时候,说明如果没有前面这个节点,就匹配成功了,所以第二问不用二分,直接匈牙利的时候记录一下访问到的最考前的点

d2t2

(k+1)条路径,让和最大

(WQS)二分裸题

就考虑一下怎么求答案吧

(dp[0/1/2][x])表示以(x)为根的子树,下面向上连接了几条边

为什么要加一个(2)?因为这个节点只能和某两个子树凑成一条链,如果不加(2)那就只能合并到(0)的状态,可能会出现和子树合并出了两个或更多链的情况

如果二分找的是最小的可选取的让路径(ge k+1)的斜率(m),那么需要选尽量多的路径

d2t3

甩个链接就跑

原文地址:https://www.cnblogs.com/knife-rose/p/13091052.html