标签:acm c++ codeforces 数据结构
#include <iostream> #include <cstdio> #include <climits> #include <algorithm> #define N 100010 #define L(x) (x)<<1 #define R(x) (x)<<1|1 using namespace std; struct node { long long ll,rr,mi,pos; node() { ll=rr=pos=0; mi=INT_MAX; } node(long long l,long long r,long long m,long long p) { ll=l,rr=r,mi=m,pos=p; } }ty[4][N*4]; long long k[4][N],n[4],t[4],peo[N]; long long nn; void bulid(long long id,long long l,long long r,long long na) { ty[na][id]=node(l,r,0,l); if(l==r) return ; long long mid=(l+r)/2; bulid(L(id),l,mid,na); bulid(R(id),mid+1,r,na); } void update(long long id,long long k,long long a,long long na) { if(k==ty[na][id].ll && ty[na][id].rr==k){ty[na][id].mi=a;return ;} long long mid=(ty[na][id].ll+ty[na][id].rr)/2; if(k>mid) update(R(id),k,a,na); else update(L(id),k,a,na); if(ty[na][L(id)].mi<=ty[na][R(id)].mi) { ty[na][id].mi=ty[na][L(id)].mi; ty[na][id].pos=ty[na][L(id)].pos; } else { ty[na][id].mi=ty[na][R(id)].mi; ty[na][id].pos=ty[na][R(id)].pos; } } long long query(long long id,long long l,long long r,long long na,long long &index) { if(ty[na][id].ll==l&&ty[na][id].rr==r) { index=ty[na][id].pos; return ty[na][id].mi; } long long mid=(ty[na][id].ll+ty[na][id].rr)/2; if(mid>=r) return query(L(id),l,r,na,index); else if(mid<l) return query(R(id),l,r,na,index); else { long long tmp1,tmp2; long long t1=query(L(id),l,mid,na,tmp1); long long t2=query(R(id),mid+1,r,na,tmp2); if(t1<=t2) {index=tmp1;return t1;} else {index=tmp2;return t2;} } } int main() { for(long long i=1;i<=3;i++) scanf("%I64d",&n[i]); for(long long i=1;i<=3;i++) scanf("%I64d",&t[i]); scanf("%d",&n[0]); for(long long i=0;i<n[0];i++) scanf("%I64d",peo+i),peo[i]--; for(long long i=1;i<=3;i++) bulid(1,1,min(n[i],n[0]),i); long long ans=0; for(long long i=0;i<n[0];i++) { long long cur=peo[i]; for(long long j=1;j<=3;j++) { long long index; long long c_mi=query(1,1,min(n[j],n[0]),j,index); if(c_mi>=cur) cur=c_mi+t[j]; else cur+=t[j]; update(1,index,cur,j); } ans=max(ans,cur-peo[i]); } cout<<ans<<endl; return 0; }
Codeforces 85B. Embassy Queue【线段树、贪心】
标签:acm c++ codeforces 数据结构
原文地址:http://blog.csdn.net/u013912596/article/details/38979195