摘要: 树的直径指树上距离最远的两点间的距离,它在树上问题上有许多应用,往往通过树的直径的性质可以将一个高时间复杂度的解法变为线性求解。对于树上两点间距离通常有三种定义,我们根据这三种情况分别讨论一下它的性质 树的直径的求法: 树的直径有两种求法,时间复杂度都是O(n) ①贪心求法: 贪心求直径的方法是任意 阅读全文
posted @ 2020-04-05 23:23 overrate_wsj 阅读(1296) 评论(0) 推荐(1) 编辑
摘要: 二分图匹配问题: 做法: ①匈牙利算法,时间复杂度O(N*V) ②Hopcroft-Karp,时间复杂度O(√N*V) 相关结论: ①最小顶点覆盖(könig定理) 二分图的最小顶点覆盖=最大匹配数 ②最小路径覆盖(不要求二分图):在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一 阅读全文
posted @ 2020-03-30 13:53 overrate_wsj 阅读(1849) 评论(0) 推荐(0) 编辑
摘要: HDU 3507 - Print Article 题意: 一个长度为n的序列,你可以将其分成任意段,每段的花费为sum[i....j]2+M,求整个序列的最小花费 思路: dp求解,f[i]表示前i项的最小代价,s为前缀和 转移方程f[i]=min(f[i],f[j]+(s[i]-s[j])^2+M 阅读全文
posted @ 2020-03-27 23:18 overrate_wsj 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 目录: 3.26 NC13230.合并回文子串(区间DP) 3.27 NC15553.数学考试(线性DP) NC13230.合并回文子串(区间DP) 题意: 给两个字符串a,b,你需要将两个字符串合并,并且保证新字符串中原来字符串的相对位置不变,求合并之后字符串最长回文子序列的长度 思路: 首先,先 阅读全文
posted @ 2020-03-27 09:23 overrate_wsj 阅读(160) 评论(0) 推荐(0) 编辑
摘要: A-Uint47 calculator(快速乘) 题意: 定义一堆变量然后进行加减乘除运算 思路: 这题难的地方在乘法,会超出long long的范围,所以要用到快速乘(原理跟快速幂类似) #include<iostream> #include<algorithm> #include<vector> 阅读全文
posted @ 2020-03-15 20:46 overrate_wsj 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 目录: 31.1025D. Recovering BST(区间DP) 32.1187E. Tree Painting(换根DP) 33.23B. Party(思维) 34.1062B.Math(唯一分解性定理) 35.340D. Bubble Sort Graph(DP) 36.922C. Cave 阅读全文
posted @ 2020-03-12 23:43 overrate_wsj 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 目录: 1.CodeCraft-20 (Div. 2) 3.4 2.Codeforces Round #626 (Div2) 3.7 3.2020 SWJTU-ICPC Training Round #1(13年浙江省赛) 3.8 4. Educational Codeforces Round 83 阅读全文
posted @ 2020-03-08 20:37 overrate_wsj 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 目录 1.POJ1236 Network of Schools(Tarjan缩点) 2.UVA315 Network(Tarjan求割点) POJ1236 Network of Schools(Tarjan缩点) 题意: 给一张有向图,问你至少要选多少点,从这些点出发可以遍历整个图,最少要加多少条边 阅读全文
posted @ 2020-03-06 17:57 overrate_wsj 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题意: [1,N]区间内开始为空,有两种操作1) 1 a 找到长度为a的区间,并且尽量开头靠左,返回最左的位置并check in. 2) 2 a b 将[a,b-1]区间check out. 思路: 线段树-区间合并,对于每个节点记录三个值.1).lsum表示该节点区间从左边开始的空的区间长度2). 阅读全文
posted @ 2020-03-04 20:30 overrate_wsj 阅读(120) 评论(0) 推荐(0) 编辑
摘要: A - Duplex Printing 思路:判断一下奇偶就好了 #include<iostream> #include<algorithm> #include<cstring> using namespace std; int main() { int n; cin>>n; int ans=n/2 阅读全文
posted @ 2020-03-02 21:30 overrate_wsj 阅读(269) 评论(0) 推荐(0) 编辑