http://www.lydsy.com/JudgeOnline/problem.php?id=2527

思路:整体二分

#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
#define ll long long
#define inf 1000000010
int n,m,a[],first[],next[],tot;
int tol[],tor[],ans[],id[],K;
ll cur[],tmp[],h[],go[];
struct node{
int id,l,r,w;
}q[];
int read(){
int t=,f=;char ch=getchar();
while (ch<''||ch>''){if (ch=='-') f=-;ch=getchar();}
while (''<=ch&&ch<=''){t=t*+ch-'';ch=getchar();}
return t*f;
}
ll sum(int x){
ll res=;
while (x){
res+=h[x];
x-=(x)&(-x);
}
return res;
}
void add(int x,ll v){
for (int i=x;i<=m;i+=(i)&(-i))
h[i]+=v;
}
void add(int x,int y,ll v){
add(x,v);add(y+,-v);
}
void solve(int l,int r,int x,int y){
if (x>y) return;
if (l==r){
for (int i=x;i<=y;i++)
ans[id[i]]=l;
return;
}
int lnum=,rnum=;
int mid=(l+r)>>;
for (int i=l;i<=mid;i++)
if (q[i].l<=q[i].r) add(q[i].l,q[i].r,q[i].w);
else add(q[i].l,m,q[i].w),add(,q[i].r,q[i].w);
for (int i=x;i<=y;i++){
tmp[id[i]]=;
for (int j=first[id[i]];j;j=next[j]){
int pur=go[j];
tmp[id[i]]+=sum(pur);
if (tmp[id[i]]+cur[id[i]]>=a[id[i]]) break;
}
if (tmp[id[i]]+cur[id[i]]>=a[id[i]]) tol[++lnum]=id[i];
else tor[++rnum]=id[i],cur[id[i]]+=tmp[id[i]];
}
for (int i=l;i<=mid;i++)
if (q[i].l<=q[i].r) add(q[i].l,q[i].r,-q[i].w);
else add(q[i].l,m,-q[i].w),add(,q[i].r,-q[i].w);
for (int i=;i<lnum;i++)
id[x+i]=tol[i+];
for (int i=;i<rnum;i++)
id[x+lnum+i]=tor[i+];
solve(l,mid,x,x+lnum-);
solve(mid+,r,x+lnum,y);
}
int main(){
n=read();m=read();
for (int i=;i<=m;i++){
int x=read();
tot++;
next[tot]=first[x];
first[x]=tot;
go[tot]=i;
}
for (int i=;i<=n;i++)
a[i]=read();
K=read();
for (int i=;i<=K;i++){
q[i].l=read();q[i].r=read();q[i].w=read();
q[i].id=i;
}
K++;
q[K].l=;q[K].r=m;q[K].w=inf;
q[K].id=K;
for (int i=;i<=n;i++)
id[i]=i;
solve(,K,,n);
for (int i=;i<=n;i++){
if (ans[i]!=K) printf("%d\n",ans[i]);
else puts("NIE");
}
return ;
}

BZOJ 2527 Meteors的更多相关文章

  1. BZOJ 2527 Meteors | 整体二分

    BZOJ 2527 Meteors 题意 一个圆环上有m个位置,编号为1~m,分别属于n个国家. 有k个时刻,每个时刻都会给圆环上的一个区间中每个位置的值加上一个数. 每个国家有一个目标,问对于每个国 ...

  2. bzoj 2527 Meteors - 整体二分 - 树状数组

    Description Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby gala ...

  3. BZOJ 2527 [Poi2011]Meteors(整体二分)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2527 [题目大意] 有N个成员国.现在它发现了一颗新的星球, 这颗星球的轨道被分为M份 ...

  4. BZOJ 2527 [Poi2011]Meteors:整体二分

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2527 题意: 有n个国家和m个空间站,每个空间站都属于一个国家,一个国家可以有多个空间站, ...

  5. bzoj 2527: [Poi2011]Meteors 整体二分

    给每个国家建一个链表,这样分治过程中的复杂度就和序列长度线形相关了,无脑套整体二分就可以. (最坑的地方是如果所有位置都是一个国家,那么它的样本个数会爆longlong!!被这个坑了一次,大于p[i] ...

  6. 【bzoj 2527】[Poi2011]Meteors

    Description Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby gala ...

  7. bzoj 2527: [Poi2011]Meteors

    昨天写了一晚,越写复杂度越感觉不对,早上一想果然是假的. (这里n,m,k我就不区分了) 首先一个城市的询问可以很容易的二分 check用树状数组维护区间(区间修改,单点查询的那种) 一次是\(O(n ...

  8. BZOJ 2527 [Poi2011]Meteors (整体二分+树状数组)

    整体二分板题,没啥好讲的-注意是个环-还有所有贡献会爆longlong,那么只要在加之前判断一下有没有达到需要的值就行了- CODE #include <set> #include < ...

  9. BZOJ 2527 & 整体二分

    Byteotian Interstellar Union有N个成员国.现在它发现了一颗新的星球,这颗星球的轨道被分为M份(第M份和第1份相邻),第i份上有第Ai个国家的太空站. 这个星球经常会下陨石雨 ...

随机推荐

  1. Graphviz-Gdot语言学习

    GVEdit这个绘图软件呢我也是刚接触的,感觉画起图来还是很爽的...尤其很熟悉c++后很容易上手这门dot语言. 先看一下十分清新的编程界面: 没有天下最邪恶的语法加亮,没有缩进行...这又算什么! ...

  2. hdu4324 拓扑排序

    #include<cstdio> #include<string.h> #define maxn 2013 char M[maxn][maxn]; int du[maxn]={ ...

  3. Python读取txt文件

    Python读取txt文件,有两种方式: (1)逐行读取 data=open("data.txt") line=data.readline() while line: print ...

  4. superslide2

    标签切换 / 书签切换 / 默认效果 http://www.superslide2.com/demo.html 4个Web前端经典实用值得学习收藏的地图实现模板~ http://www.iteye.c ...

  5. Mysql数据库里面的String类型依照数字来排序以及按时间排序的sql语句

    今天做项目的时候,遇到个小小的问题,在数据库中查询的时候,要用String类型的ID进行一下排序!(注:ID字段为 varchar 类型) 解决的方法: 如: SELECT * FROM  Stude ...

  6. java设计模式---原型模式

    原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型模式结构图 通俗来说:原型模式就是深拷贝和浅拷贝的实现. 浅拷贝 只实现了值拷贝,对于引用对象还是 ...

  7. 关于driver_register做了些什么

    现在进入driver_register()函数去看看.在driver_register() 中,调用了driver_find(drv->name, drv->bus)函数,这里是干啥呢?这 ...

  8. (转)SQL中的ISNULL函数介绍

    SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助. ISNULL 使用指定的替换值替换 NULL. 语法ISN ...

  9. Android WifiDirect学习(一)

    WiFi Direct基本介绍 Wi-Fi Direct标准允许无线网络中的设备无需通过无线路由器即可相互连接.与蓝牙技术类似,这种标准允许无线设备以点对点形式互连,不过在传输速度与传输距离方面则比蓝 ...

  10. 服务器上开启远程sqlserver小细节

    之前按网络上过程配置完成后,连接都很正常.今天看的时候,突然就连接不上了.弄了半天,终于知道问题在哪里了.