摘要:
/* Source : 牛客网wannafly23 D 漂亮的公园 Problem : 给定一个树,每个节点有一个颜色,询问两个颜色之间的最大距离 Solution : 可以先求出同一种颜色c的直径x,y,这另外一个点u到这种颜色c的最大值,一定是x和y中的一个。于是答案只需要枚举两种不同颜色的4个点。 对于同种颜色的集合的维护,可以通过同样的思想,每... 阅读全文
摘要:
1 /* 2 Source :hihocoder 编程练习赛73 D 好的字符串 3 Problem :问长度为n的数字串中,有多少个包含子串s恰好一次。可以有前导0 4 Solution :DP. 利用dp[2][i][j]表示当前匹配了前i个字符,且末尾的j个字符和s的前j个字符是匹配的。然后用0,1来表示是否匹配了完整的一次s 5 ... 阅读全文
摘要:
1 /* 2 Source :hihocoder编程练习73 3 Problem :一个长度为n的串,由若干段1-a[i](假设有Y段)的序列组成,现在中间缺了K个数,问能够还原出来的方案数,需要保证还原出来的子串的个数最少,即最小Y 4 Solution :1.通过分析剩余的序列,我们可以知道原来最少的时候Y是多少,即看原来的序列有多少单调递增的子段。 5 ... 阅读全文
摘要:
1 /* 2 Source :wannafly 22 D 整数序列 3 Problem :给定长度为n的数组,有m次操作,op=1 时, 把a[l-r] 中的数加v, op=2时, 求sum(sin(a[l-r])) 4 Solution :由 sin(a+b) = sin(a)cos(b) + cos(a)*sin(b) 5 ... 阅读全文
摘要:
1 /* 2 Source :CF 609E 3 Problem :给定n个顶点,m条边的图,对于一条边,求包含这条边的最小生成树 4 Solution :先求出MST,然后对于一条给定的边,对应的最小生成树为MST中去掉u,v路径上的最大的边,然后加上当前的边 5 对于后面的问题,求解u,v路径上的最大边,可用树上的倍增法解决。 ... 阅读全文
摘要:
1 /* 2 Source :hihocoder193周 修补木桶 3 Problem :一个圆形的木桶由n块木板围成,可以使用一种操作把连续的一段长度为L的区间中的木板变成无限长,操作可以使用m次,问最终最短的木板是多长。n 11 using namespace std; 12 13 typedef long long LL; 14 const int MAXN = 10... 阅读全文
摘要:
1 /* 2 Source : 3 Problem : 求最近公共祖先的倍增算法 4 Solution : 5 Date :2018-08-16-16.45 6 */ 7 8 // #include 9 #include 10 #include 11 #include 12 #include 13 using n... 阅读全文
摘要:
1 /* 2 Source : POJ 3321 3 Problem : 每次改变树的点权,求子树点权和 4 Solution : dfs序 5 Date :2018-08-16-16.03 6 */ 7 8 // #include 9 #include 10 #include 11 #include 12 #in... 阅读全文
摘要:
1 /* 2 Source :牛客网wannafly 19 矩阵 3 Problem :在一个n*m ,n,m 9 using namespace std; 10 11 typedef long long LL; 12 const int MAXN = 100005; 13 const LL MOD7 = 1e9+7; 14 const LL INF = 1e18+9; ... 阅读全文
摘要:
1 /* 2 Source :hihocoder1800 3 Problem :在n*m的方格中,每个格子有一个权值,求一个矩形区域面积大于等于S,总和最大 4 Solution :枚举固定的两列,然后可以求得符合条件的长度L,求一个长度大于等于L的最大和。最大和=当前总和-最小的前缀和,当前总和的位置与最小前缀和的位置满足条件。 5 Date :2018... 阅读全文