02 2015 档案
摘要:f[i]表示用i集合内的电影可以达到的最长时间f[i]向f[i|(1#includeconst int N=20,M=40010;int n,l,i,j,c,d[N],g[N][M],m,q[M],id[M],t[M],f[1b)ans=b;}inline void max(int&a,int b)...
阅读全文
摘要:对于询问(x,y),恰经过一条非树边且不经过树上两点间路径的路径数为:·若x与y成祖先-孩子关系,假设y是x的祖先,z是y到x方向的第一个节点,则 ans=起点在x的子树里,且终点不在z的子树里的非树边数·若x与y不成祖先-孩子关系,则 ans=起点在x的子树里,且终点在y的子树里的非树边数由于不经...
阅读全文
摘要:暴力枚举答案然后检验。#includeint n,m,i,j,k,a[100],b[100],cnt,ans;char s[20];int main(){ for(scanf("%d%d",&n,&m);i1)break;ans=i;} } if(cnt==1)for(i=0;i>i&1));...
阅读全文
摘要:考虑离线,将删边操作倒过来变成加边,等价于询问每个点什么时候与1连通使用并查集维护,每次合并时如果有一边是1所在连通块,就把另一边的所有点的答案更新#include#define N 200010int n,m,i,j,x,y,son[N][2],del[N][2],q[N='0')&&(c='0'...
阅读全文
摘要:按距离建立线段树,维护区间重量最小值然后跑一遍拓扑,每次将所有能取的加入队尾#include#include#define N 250010typedef long long ll;int n,i,x0,y0,nowp,x,y,r,c,v[N='0')&&(c='0')&&(c>1].d>1; b...
阅读全文
摘要:令三元环(i,j,k)中i>j>k,则每条边只需要从大点连向小点设d[x]表示从x连出的边的条数从1到n枚举点i,然后枚举所有与i相连的边(i,x)(x#includeusing namespace std;const int N=100010,M=250010,B=(1e[M];inline vo...
阅读全文
摘要:|x_1-x_2|+|y_1-y_2|=\max(|(x_1+y_1)-(x_2+y_2)|,|(x_1-y_1)-(x_2-y_2)|)将坐标(x,y)逆变换为(\frac{x+y}{2},\frac{x-y}{2})后,询问[l,r]的最优解为中位数离散化后用主席树支持查询#incl...
阅读全文
摘要:首先询问i相当于询问a[j]>=a[i],b[j]>=b[i]的j如果b[j]==b[i],那么a[j]>a[i],这种情况先用set处理掉如果b[j]>b[i],那么a[j]>=a[i],离散化后CDQ分治,用树状数组记录前缀最大值即可时间复杂度O(n\log^2n)#include#incl...
阅读全文
摘要:f[n]\bmod q=p^{Fib[n]}\bmod q=p^{Fib[n]\bmod\varphi(q)}\bmod q首先线性筛预处理出所有素数,然后对于每次询问,求出\varphi(q),再用矩阵快速幂求出Fib[n],最后用快速幂求答案即可。#includetypedef long...
阅读全文
摘要:二分答案x表示最大的一段的和。 设f[i]表示前i个最多分几段,满足最大的一段不超过x,若f[n]\geq k,则可行, 则f[i]=\max(f[j])+1,sum[i]-sum[j]\leq x。 用Treap优化DP,O(n\log^2n)。 同理再次二分得到最小的
阅读全文
摘要:从左往右维护两个指针l,r表示离i最近的k个点的区间,预处理出每个点出发的后继,然后倍增。#includetypedef long long ll;const int N=1000010,BUF=20000000,OUT=8000000;int n,k,i,l=1,r,f[N],g[N],t[N],...
阅读全文