CF1681F Unique Occurrences
摘要:题意:一棵树,问每条路径上只出现一次的值的个数的和。 思路: 显然想到考虑边贡献。每条边权下放到下面的哪个点。
upi为上面第一个点权等于它的点。我们需要一个子树内点权等于它的点(如果满足祖孙关系,不要孙)(除它自己的)sz和。 这样每个点的
sz向
up贡献。 这样差分求出上面的点和下面的
阅读全文
Codeforces Round #793 (Div. 2)
摘要:C. LIS or Reverse LIS? D. Circular Spanning Tree E. Unordered Swaps F MCMF?
阅读全文
CF1682E Unordered Swaps
摘要:鸽着,我不知道为什么对? 题意: 思路: code: #include<bits/stdc++.h> using namespace std; const int N=5e5+5; int p[N],nxt[N],to[N],head[N],ecnt,d[N]; void add_edge(int
阅读全文
CF1682D Circular Spanning Tree
摘要:题意: 构造题,节点1~n顺时针排列成圆形,告诉你每个点度数奇偶性,让你构造一棵树,树边不相交。 思路: 因为每条边给总度数贡献2,因此如果度数为1的点有奇数个,直接输出no。显然0个度数为1的,也输出no。 找到每个1,把1往后的部分分到一组,第二组的最后一个连第一组的最后一个,然后3组往后的最后
阅读全文
CF1682C. LIS or Reverse LIS?
摘要:题意:给
n个数,问你能构出严格上升子序列长度和下降子序列长度最小值的最大值。 思路: 如果一个数出现至少两次,ans++。 统计出现一次的个数,因为再最长上升子序列中,只能有一个值能贡献到下降子序列里,因此
ans+⌈cnt12⌉。
阅读全文