bzoj2527: [Poi2011]Meteors

原创 2016年04月30日 09:48:59

整体二分;

#include<bits/stdc++.h>
#define rep(i,k,n) for(int i=k;i<=(n);i++)
#define inf 0x3f3f3f3f
using namespace std;
const int N=300005;
typedef long long ll;
vector<int> a[N];
int n,m,K,p[N],l[N],r[N],id[N],stone[N],ans[N],T=0,sta[N];
ll tr[N];

void add(int x,ll d){for(;x<=m;x+=(x&-x))tr[x]+=d;}
ll Q(int x){ll tmp=0;for(;x;x-=(x&-x))tmp+=tr[x];return tmp;}

void up(int k,int f){
    if(l[k]<=r[k])add(l[k],f*stone[k]),add(r[k]+1,-f*stone[k]);
    else add(1,f*stone[k]),add(r[k]+1,-f*stone[k]),add(l[k],f*stone[k]);
}
void solve(int l,int r,int L,int R){
    if(l>r)return;
    if(L==R){rep(i,l,r)ans[id[i]]=L;return;}
    int mid=(L+R)>>1;
    while(T<mid)up(T+1,1),T++;
    while(T>mid)up(T,-1),T--;
    int cnt=l,cnt2=r;
    ll tot;
    rep(i,l,r){
    tot=0;
    if(a[id[i]].size())
    rep(j,0,a[id[i]].size()-1){
        tot+=Q(a[id[i]][j]);
        if(tot>=p[id[i]]){
            sta[cnt++]=id[i];
        break;
    }
    }
    if(tot<p[id[i]])sta[cnt2--]=id[i];
}
    rep(i,l,r)id[i]=sta[i];
    solve(l,cnt-1,L,mid);
    solve(cnt,r,mid+1,R);
}
int main(){//freopen("in.in","r",stdin);
//freopen("out.out","w",stdout);
    scanf("%d%d",&n,&m);int x;
    rep(i,1,m)scanf("%d",&x),a[x].push_back(i);
    rep(i,1,n)scanf("%d",&p[i]),id[i]=i;
    scanf("%d",&K);
    rep(i,1,K)scanf("%d%d%d",&l[i],&r[i],&stone[i]);
    K++;l[K]=1,r[K]=m,stone[K]=inf;
    solve(1,n,1,K);
    rep(i,1,n){if(ans[i]>=K)printf("NIE\n");
    else printf("%d\n",ans[i]);
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

【BZOJ 2527】 [Poi2011]Meteors

整体二分~
  • Regina8023
  • Regina8023
  • 2015年05月12日 07:58
  • 1798

【BZOJ2527】【POI2011】Meteors(整体二分)

Byteotian Interstellar Union有N个成员国。现在它发现了一颗新的星球,这颗星球的轨道被分为M份(第M份和第1份相邻),第i份上有第Ai个国家的太空站。 这个星球经常会下陨石...
  • mousemjq
  • mousemjq
  • 2017年03月16日 22:25
  • 268

整体二分 【Poi2011】 Meteors bzoj2527

题目大意: 有n个国家。 一块环形区域被分成m块区域,每块区域被一个国家占有。 有k场流星雨,每场流星雨会为l到r区间内所有区域提供a个陨石。 第i个国家希望收集pi个陨石。 询问每一个国家...
  • Todobe
  • Todobe
  • 2017年01月15日 20:33
  • 163

【bzoj2527】 [Poi2011]Meteors

整体二分
  • KikiDMW
  • KikiDMW
  • 2017年03月20日 20:23
  • 178

【bzoj2527】[Poi2011]Meteors

DescriptionByteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby galax...
  • w_yqts
  • w_yqts
  • 2017年11月02日 11:11
  • 108

BZOJ2527: [Poi2011]Meteors

这个。。。一开始用的是longlong 然后改成int就wa了。。。。 时间垫底。。。。。 可怕 全局分治  然后用线段树维护的时候直接永久化标记  不用下传 然后这一题和上一...
  • liutian429073576
  • liutian429073576
  • 2015年12月19日 19:25
  • 747

bzoj2527[Poi2011] Meteors

整体二分
  • u010336344
  • u010336344
  • 2017年01月16日 10:23
  • 529

[BZOJ2527][Poi2011]Meteors

整体二分 树状数组
  • hbhcy98
  • hbhcy98
  • 2016年02月06日 22:31
  • 300

BZOJ2527 [Poi2011]Meteors

标签:整体二分,树状数组 题目 题目传送门 Description Byteotian Interstellar Union有N个成员国。现在它发现了一颗新的星球,这颗星球的轨道被分为M份...
  • qwerty1125
  • qwerty1125
  • 2018年02月19日 14:54
  • 25

【POI2011】【BZOJ2527】Meteors

Description Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby gal...
  • CreationAugust
  • CreationAugust
  • 2015年09月27日 15:59
  • 1608
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:bzoj2527: [Poi2011]Meteors
举报原因:
原因补充:

(最多只允许输入30个字)