tg 55

\(rk\space 10\)

T1

暴力\(BFS\)即可\(50pts\)
然后加个并查集把信息换成可加减的
问题转换成一个矩形内所有点+和矩形联通的联通块-矩形内白点
事实上平移一个矩形我们只用知道改变的列即可
枚举这一信息即可\(O(n^3)\)

T2

一个比较高分的暴力
首先一个事情就是
\(\exist x,y\in Z,ax+by=c\Leftrightarrow gcd(a,b)|c\)
事实上这就是个裴蜀定理
然后枚举\(gcd(a_k,n)\)的因数\(i,\)
显然如果\(\exist j\in[1,k),i|a_j\)就说明\(i\)是不合法的
每次\(O(k)\)判断,时间复杂度\(O(d(n)\cdot k)\)

优化一下,如果\(i\)不合法,那么\(\forall a|i,a\)显然是不合法的
于是每次\(O(k)\)找到以后再筛一波就可以过了
时间复杂度:\(O(k\log n+d(n)\cdot(\omega(n)+\log d(n)))\)
事实上\(d(n)=O(\sqrt{n})\)是不紧的,\(d(10^{14})\)也就\(10^5\)
所以就过了

T3

题面给的解释有
以起点为根走一条链,每个点选不选的权值就是儿子的\(f\)之和
一个\(O(n^2)\)钦定每个为起点
然后枚举每个点拿不拿即可
\(f_{i,j}=max(f_{k,j-1}+v_i,f_{k,j}),v_i=\sum\limits_{k\in son_i}f_k,k\in son_i\)
其中\(i\)表示当前节点,\(j\)表示选点数

特殊性质就只用\(1\)搞,这个时候\(DFS\)就是一遍

正解:

image

T4

这种前后缀转换的题,见面有一个套路就是
\(C\to 1,T\to -1\)这样就可以转换成前后缀和不小于\(0\)
记这种转换下\(i\)的前缀和\(pre_i,\)后缀和\(suf_i\)
事实上有一个结论:
就是删掉的\(T\)个数就是如上转换中\(pre_i\)最小值的绝对值
(当然如果最小值是正的那就是\(0\))
证明贪心法即可

但是事实上考虑到后缀和会改变,
我们研究一下后缀和改变以后是怎么样的:
\(suf'_ i\)表示修改以后的\(suf _ i\)
考虑\(suf_{i}\)会修改几次
没有被修改的话,修改位置必在\(i\)
于是没修改次数就是\(-min(pre_p),p<i\)
那么修改次数就是\(min({pre_p})-pre_{min},p<i\)
于是就有这个:
\(suf'_ i=suf_i+min({pre_p})-pre_{min},p<i\)
总操作次数\(:\)
\(pre_{min}+suf'_ i\\=pre_{min}+suf_i+min({pre_p})-pre_{min}\\=suf_i+min({pre_p}),p<i\)
注意取个相反数
然后就转换成求\(min(suf_i+{pre_p})\)的最小值,
注意这里用的一步变换
简单容斥一下就发现事实上是这个:
区间总和-区间最大子段和
然后就随便数据结构就好了

posted @ 2022-10-03 20:29  2K22  阅读(8)  评论(0)    收藏  举报