Problem J. Journey to the “The World’s Start”

来源:互联网 发布:淘宝旺铺基础版模板 编辑:程序博客网 时间:2024/05/16 08:43

存个代码

#include <cstdio>#include <algorithm>#include <cstring>#include <set>#define lson root*2,l,Mid#define rson root*2+1,Mid+1,rusing namespace std;typedef long long LL;#define INF 0x3f3f3f3f3f3f3f3fll#define maxn 50010int d[maxn];int p[maxn];struct SGT{LL tree[maxn*4+10];LL lazy[maxn*4+10];void Init(){memset(lazy,0,sizeof(lazy));memset(tree,0x3f,sizeof(tree));}void pushUp(int root){tree[root] = min(tree[root<<1],tree[root<<1|1]);}void pushDown(int root){tree[root<<1] += lazy[root];tree[root<<1|1] += lazy[root];lazy[root<<1] += lazy[root];lazy[root<<1|1] += lazy[root];lazy[root] = 0;}void update(int root,int l,int r,int x,LL y){if(l == r){tree[root] = y;lazy[root] = 0;return;}int Mid = (l+r)>>1;pushDown(root);if(x <= Mid)update(lson,x,y);elseupdate(rson,x,y);pushUp(root);}void update2(int root,int l,int r,int ll,int rr,LL y){if(ll <= l && r <= rr){tree[root] += y;lazy[root] += y;return;}int Mid = (l+r)>>1;pushDown(root);if(ll <= Mid)update2(lson,ll,rr,y);if(Mid < rr)update2(rson,ll,rr,y);pushUp(root);}LL query(int root,int l,int r,int ll,int rr){if(ll <= l && r <= rr)return tree[root];LL ans = INF;int Mid = (l+r)>>1;if(ll <= Mid)ans = min(ans,query(lson,ll,rr));if(Mid<rr)ans = min(ans,query(rson,ll,rr));return ans;}};SGT sgt;LL check(int n,int x){sgt.Init();sgt.update(1,1,n,1,0);for(int i = 2; i <= n; i++){int le = max(1,i-x);sgt.update2(1,1,n,le,i-1,1);LL tmp = sgt.query(1,1,n,le,i-1)+d[i];sgt.update(1,1,n,i,tmp);if(i == n)return tmp;}}int main(){int n,t;freopen("journey.in","r",stdin);freopen("journey.out","w",stdout);while(~scanf("%d %d",&n,&t)){for(int i = 1; i <= n-1; i++)scanf("%d",&p[i]);int mmm = p[n-1];for(int i = n-1; i >= 1; i--){mmm = min(mmm,p[i]);p[i] = mmm;}d[1] = 0;d[n] = 0;for(int i = 2; i <= n-1; i++)scanf("%d",&d[i]);int ans = p[n-1];int l = 1,r = n-1;while(l+1<r){int mid = (l+r)>>1;if(check(n,mid)<=t)r = mid;elsel = mid;}if(check(n,1)<=t)printf("%d\n",p[l]);elseprintf("%d\n",p[r]);}return 0;}


原创粉丝点击