
本文共 1980 字,大约阅读时间需要 6 分钟。
���������������������������
��������������������������������������������������������������������������� \(n\to 1\)���
��������������������������� \(i\)��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� \(j\) ������ \(C_j\leq D_i\)���
������������ \(O(N^2)\) ������������������������������������������������������������������������ \(j\) ������������������������������ \(i\) ������������������������������������������������������������������
������ \(i\) ��� \(j\) ������������������������������������������������������������ \(u\) ������������������ \(u\) ��������������� \(v\) ������ \(D_v\geq C_u+m\)���
������������������������������������������������������������������������������������������������������������������������������������������������������������������
��������������������������� \(O(N)\)���
code:
#includeusing namespace std;#define N 400005#define For(i,x,y)for(i=x;i<=(y);i++)#define Down(i,x,y)for(i=x;i>=(y);i--)#define int long longstruct node{ int next,to;}e[N];struct soldier{ int c,d,id;}a[N];bool used[N];int head[N],dep[N],res[200005],g,m;inline void add(int u){ e[++g].next=head[u]; head[u]=g;}int read(){ int A; bool K; char C; C=A=K=0; while(C<'0'||C>'9')K|=C=='-',C=getchar(); while(C>'/'&&C<':')A=(A<<3)+(A<<1)+(C^48),C=getchar(); return(K?-A:A);}void write(int X){ if(X<0)putchar('-'),X=-X; if(X>9)write(X/10); putchar(X%10|48);}inline bool cmp(soldier _,soldier __){ return _.c<__.c;}void dfs(int l,int r){ int i; while(head[r]&&a[head[r]].d>=a[l].c+m)r=head[r]; /*cout< <<' '< <<' '< <<' '< <<' '< <<' '< <<' '< < =a[l].c+m)res[a[l].id]=dep[l]-dep[r]+1; used[l]=1; for(i=head[l];i;i=e[i].next) { head[l]=i; dep[i]=dep[l]+1; dfs(i,r); }}signed main(){ int n,i,pos=1; n=read(),m=read(); For(i,1,n) { a[i].c=read(),a[i].d=read(); a[i].id=i; if(a[i].d
发表评论
最新留言
关于作者
