8.12总结

8.12总结

得分

60+20+10

第一题打的是正解,常数太大GG

T1


正解

看到这题瞬间想到了跳房子那题。

这题也很类似。用线段树维护从第l列某一行跳到第r列某一行的最小值。

T2


n,m<=100000

题面无力吐槽

20分暴力显然

正解

关键点一:推式子,巧妙地把问题转化为只用求covered[x]

关键点二:曼哈顿距离与切比雪夫距离的相互转换。

T3

n<=30

正解

极大匹配:随便选择二分图里的一些边匹配,直到无法选任何一条边。(不一定是最大匹配)

结论:若一个联通块的任意一个极大匹配都是完美匹配,那它一定是一个完全二分图(左边每个点都与右边每个点有连边)。

现在初始给出的图构成了一些联通块。我们的目标是把那些联通块连起来使每一个联通块的\(\Sigma x_i=\Sigma y_i\)。同时,代价就是\((\Sigma x_i)^2\)(因为使总边数最小化就可以使需要添加的边最小化)

状压dp。

首先每一个联通块都可以表示为一个二元组(x,y),我们可以把相同的二元组归为一类来减少状态数。

设f[s][i]表示选了状态为s的二元组,最后一个联通块的\(\Sigma x_i=i\)

f[s][j]=min(f[s][j],f[s1][j-b[i].s0]);枚举第i种二元组的一个转移

f[s][0]=min(f[s][0],f[s][j]+j*j);选够了最后一个联通块,把最后一个联通块计算贡献。这种转移要判断s集合里的二元组合法才行

posted @ 2019-08-14 08:21  leason_lyx  阅读(144)  评论(1编辑  收藏  举报