摘要: 注意是等于s不是大于s dfs,用set或者map存这条链到root的点权和sum[u],更新答案的时候查一下有没有s sum[u]即可 cpp include include include using namespace std; const int N=500005; int n,m,a[N] 阅读全文
posted @ 2018-09-22 21:03 lokiii 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 首先注意 先hash一下,双hash,然后枚举删去位置,把hash值排个序,把些相等的加起来统计一下对数即可 cpp include include include using namespace std; const int N=30005; int ans,n,m,k; long long h1 阅读全文
posted @ 2018-09-22 20:43 lokiii 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j]为a序列前i个字符和b序列前j个字符的最长公共子序列,转移很好说就是f[i][j]=max(f[i 1][j],f[i][j 1],f[i 1][j 1]+(a[i]==b[j])) 设g[i][j]为a序列前i个字符和b序列前j个字符的最长公共子序列个数,这个转移是转移f的时候从前 阅读全文
posted @ 2018-09-22 19:59 lokiii 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 没看太懂题意orz 最优的是tarjan缩点之后问入度为0的点,因为问这个点可以知道整个块的情况 答案是这ans个入度为0的点都不是杀手的概率\\( \frac{n ans}{n} \\) 但是有特殊情况就是size为1的单独scc,这是ans ,因为其他点确定之后这个点就确定了 cpp inclu 阅读全文
posted @ 2018-09-22 17:34 lokiii 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 费用流里spfa最后的判断要写成dis[t] =0而不是dis[t]!= inf否则会WAWAWA…… 阅读全文
posted @ 2018-09-22 16:09 lokiii 阅读(286) 评论(0) 推荐(0) 编辑