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集合里的二元组合法才行