每个点的最优取值范围是一个区间,将叶子一层层剥去,得到一棵有根树,父亲的取值范围由儿子推得,时间复杂度$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<<…
从叶子往上先拓扑一下,建立虚拟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…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
斐波那契数列模$10^m$的循环节为$6\times10^m$,于是从低位到高位dfs即可. #include<cstdio> #include<cstring> #define N 20 typedef long long ll; typedef unsigned long long ull; int n,i,flag;char a[N];ll mo[N],b[N];ull ans; inline ull mul(ull a,ull b,ull P){ull t=0;for(;b…