Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
这题绝对有毒!我的代码里MAX为1e6+100时候RE,MAX=2e6时AC ,MAX = 1e7的时候TLE。。。。。 #include <cstdio> #include <algorithm> #include <iostream> #include <queue> #include <cstring> #include <queue> #include <vector> using namespace std; #define pr(x) cout<<#x<<":"<<x<<endl const int MAX = 2e6; const int INF = 1e9+100; int N,M; struct edge{ int v,cost,next; }Edge[MAX]; struct node{ int val,pos; }; int head[MAX]; int d[MAX]; int ecnt = 1; int num[MAX]; node qmi[MAX]; node qmx[MAX]; int li,ri,lx,rx; void add_edge(int u,int v,int cost) { Edge[ecnt].v = v;Edge[ecnt].cost = cost;Edge[ecnt].next = head[u]; head[u] = ecnt++; } int used[MAX]; void bfs(int u,int ds[]) { fill(ds,ds + N + 5,INF); memset(used,0,sizeof(used)); ds[u] = 0; used[u] = 1; queue<int> Q; Q.push(u); while(!Q.empty()) { int v = Q.front();Q.pop(); for(int i = head[v];i;i = Edge[i].next) { int x = Edge[i].v; int c = Edge[i].cost; if(!used[x]) { used[x] = 1; ds[x] = ds[v] + c; Q.push(x); } } } } int main() { scanf("%d%d",&N,&M); for(int i = 1;i <= N-1;i++) { int a,d; scanf("%d%d",&a,&d); add_edge(i+1,a,d); add_edge(a,i+1,d); } bfs(1,d); int mn = 0,target; for(int i = 1;i <= N;i++) { if(d[i] > mn) { mn = d[i];target = i; } } bfs(target,d);mn = 0; for(int i = 1;i <= N;i++) { num[i] = d[i]; if(d[i] > mn) { mn = d[i];target = i; } } bfs(target,d); for(int i = 1;i <= N;i++) num[i] = max(num[i],d[i]); //单调队列 int l = 1,r = 2; li = lx = 0; ri = rx = 1; qmx[0] = (node){num[1],1}; qmi[0] = (node){num[1],1}; int ans = 0; while(r <= N) { while(rx > lx && qmx[rx-1].val < num[r]) {rx--;} qmx[rx++] = (node){num[r],r}; while(ri > li && qmi[ri-1].val > num[r]) {ri--;} qmi[ri++] = (node){num[r],r}; while(qmx[lx].val - qmi[li].val > M) { l++; if(qmx[lx].pos < l) lx++; if(qmi[li].pos < l) li++; } ans = max(ans,r-l+1); r++; } cout<<ans<<endl; return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator