bzoj 4297: [PA2015]Rozstaw szyn【瞎搞】】的更多相关文章

从叶子往上先拓扑一下,建立虚拟root,从root开始dfs.注意到每个点的最优取值一定是一个区间(中位数区间),从儿子区间推出父亲区间即可 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int N=500005; int n,m,l[N],r[N],h[N],cnt,q[N],tot,d[N],fa[N…
[PA2015]Rozstaw szyn 题目大意: 一棵\(n(n\le5\times10^5)\)个点的树,其中有\(m\)个结点是叶子结点.叶子结点权值已知,你可以自己决定其余结点的权值,定义整棵树的代价为相邻结点权值差之和,求最小总代价. 思路: 贪心,对于每个结点可以维护其取值范围的上界和下界.将子结点的上界下界一并排序,取其中间两个数,即为父结点上界和下界.计算总代价时,令结点权值为其权值下界,可以证明不会影响答案. 时间复杂度\(\mathcal O(n\log n)\). 源代码…
[BZOJ4297][PA2015]Rozstaw szyn Description 给定一棵有n个点,m个叶子节点的树,其中m个叶子节点分别为1到m号点,每个叶子节点有一个权值r[i].你需要给剩下n-m个点各指定一个权值,使得树上相邻两个点的权值差的绝对值之和最小. Input 第一行包含两个正整数n,m(2<=n<=500000,1<=m<=n),分别表示点数和叶子数.接下来n-1行,每行两个正整数u,v(1<=u,v<=n),表示u与v之间有一条边.接下来m行,…
每个点的最优取值范围是一个区间,将叶子一层层剥去,得到一棵有根树,父亲的取值范围由儿子推得,时间复杂度$O(n\log n)$. #include<cstdio> #include<algorithm> #define N 500010 int n,m,i,j,x,y,c,g[N],v[N<<1],nxt[N<<1],ed,d[N],l[N],r[N]; int del[N],G[N],V[N],NXT[N],h,t,q[N],f[N],a[N<<…
脑补一下给出的图:一个环,然后有若干连接环点的边,我们就是要求这些边不重叠 考虑一下不重叠的情况,两个有交边一定要一个在环内一个在环外,所以把相交的边连边,然后跑黑白染色看是否能不矛盾即可(可能算个2-SAT?) #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int N=100005; int T,n,m,q[N],a[205][205],cnt,h[N]…
参考:https://www.cnblogs.com/ccz181078/p/5622200.html 非常服气.jpg 就是random_shuffle几次然后顺着找,ans取min... #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; int n,ans,cas,a[100],tot,c[100],s[100],t…
参考:https://www.cnblogs.com/spfa/p/7495438.html 为什么邻接表会TTTTTTTLE啊...只能用vector? 把点按照点权从大到小排序,把无向边变成排名靠前的点连向排名靠后的点的有向边并记录出度d[u],用map记录一下联通,这样可以避免重复计算 按排名遍历,设遍历到u点,扫u的邻接点v,如果v的出度小于根号m,就遍历v的所有邻接点,判断是否与u相连即可:否则,再次枚举u的邻接点v,用map判断当前v是否与新扫描的v相连: 每次判断成功都在ans里加…
分别记录J,O,I,的个数 cnt[char][i] 表示处理到第i位,char的个数 显然当且仅当 cnt[J][i] - cnt[O][i] == cnt[J][j-1] - cnt[O][j-1]  &&  cnt[O][i] - cnt[I][i] == cnt[O][j-1] - cnt[I][j-1] 时 i到j位是一个长为i-j+1的合法串 于是把状态压到一个 long long 里 map瞎搞就行 没去掉调试输出导致WA了四次QAQ #include<cstdio&g…
题目链接 本来觉得这不是经典的贪心吗..果断水一次,wa了,看了看discuss,发现貌似不好水,土土的DP了一下,复杂度很高了,又T了...然后想想单调队列,二分什么的...不好往上加,直接搞了标记数组flag,暴力从大到小,遍历寻找,然后就过了...这算是优化吗,瞎搞... #include <cstring> #include <cstdio> #include <string> #include <iostream> #include <alg…
Problem H. Horrible Truth Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100610 Description In a Famous TV Show “Find Out” there are n characters and only one Horrible Truth. To make the series breathtaking all way long, the sc…