摘要:
不要被假象迷惑,其实这是一道区间dp,如果过多的考虑怎么放长方形就容易进入误区。 我们考虑一个dp状态表示f[][][][],将一个长方形中所有的点变成”."的最小代价,之后枚举行列进行区间dp,这其中其实已经做好了划分长方形的工作。 #include<bits/stdc++.h> using na 阅读全文
posted @ 2020-09-07 22:49
朝暮不思
阅读(225)
评论(0)
推荐(0)
摘要:
一个经验是,这种询问两种有些互斥的情况的构造题,往往都是有解的,CF出过很多类似题,特别是给定了一些奇怪的点数,例如倍数之类的 往往一种情况取反就是另一种情况,以前有些dfs树上找环也是这种题,不过更难一些 话说回来,对于这题,我们可以考虑在加边的时候,对于边两端,如果两个点都没标记过,就标记一下, 阅读全文
posted @ 2020-09-07 22:03
朝暮不思
阅读(199)
评论(0)
推荐(0)
摘要:
二分图的最小权点覆盖问题可以使用最小割模型求解 在求具体方案的时候,首先找到割集,也就是从源点搜出去,之后判断两边访问情况求点覆盖 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; const int inf=1e8; 阅读全文
posted @ 2020-09-07 16:28
朝暮不思
阅读(178)
评论(0)
推荐(0)
摘要:
这题如果直接做,显然是是对每个信仰维护一棵线段树,但是这样铁定炸内存,因此考虑使用动态开点线段树 这样的答案就和询问的个数相关。之后就是普通的树链剖分维护 #include<bits/stdc++.h> using namespace std; typedef long long ll; typed 阅读全文
posted @ 2020-09-07 11:34
朝暮不思
阅读(165)
评论(0)
推荐(0)
摘要:
观察数据范围是跟k有关的,因此我们考虑建立虚树,对于维护三个值 总和就是常规的按每条路左右两边点数算贡献,注意是特殊点的数量 之后我们维护mi[i],mx[i]表示对于当前点,子树中离他最近的特殊点在哪 #include<bits/stdc++.h> using namespace std; typ 阅读全文
posted @ 2020-09-07 08:27
朝暮不思
阅读(167)
评论(0)
推荐(0)

浙公网安备 33010602011771号