摘要:
【题意】给定n*n网格,有k个物品,每次可以消灭一行或一列,求消灭掉所有物品的最少操作次数。 【算法】二分图最小覆盖 【题解】此题是最小覆盖模型的出处。 将物品的x-y连边建立二分图。 最小覆盖:选择最少的点,使每条边至少有一个端点被覆盖。 刚好对应题意。 最小覆盖可以用最小割解决,将选择点视为割去 阅读全文
摘要:
【算法】树形DP 【题解】没有上司的舞会?233 f[x][0]=∑max(f[v][0],f[v][1]) f[x][1]=(∑f[v][0])+1 #include<cstdio> #include<algorithm> #include<cstring> using namespace std 阅读全文
摘要:
【题意】给定有向图,边严格从大编号指向小编号,求前k短路。n<=1000,m<=10000,k<=100。 【算法】归并+拓扑排序||A*求第k短路 【题解】因为此题自带拓扑序的特殊性,可以用归并写。 f[i][j]表示从i出发的第j短路,将i出去的点的前k短路依次归并。 复杂度O(m*k)。 #i 阅读全文
摘要:
【算法】区间DP 【题解】回文问题的套路做法:区间DP。 f[i][j]表示区间i~j回文的最小代价,则有f[i][j]=min{①②③}。 ①f[i+1][j]+min(a[s[i]],b[s[i]]) ②f[i][j-1]+min(a[s[j]],b[s[j]]) ③f[i+1][j-1],s[ 阅读全文
摘要:
【题意】给定带点权树,要求选择两个点x,y,满足所有点到这两个点中较近者的距离*点权的和最小。n<=50000,h<=100。 【算法】树的重心 【题解】代码参考自:cgh_Andy 观察要求容易发现和重心的定义【所有点距离和最小】十分相似。 要把树分成两部分,于是考虑枚举割掉一条边后,在两棵树中各 阅读全文