【BZOJ2527】Meteors(整体二分)
题意:
这个星球经常会下陨石雨。BIU已经预测了接下来K场陨石雨的情况。
BIU的第i个成员国希望能够收集Pi单位的陨石样本。你的任务是判断对于每个国家,它需要在第几次陨石雨之后,才能收集足够的陨石。
输入:
第一行是两个数N,M。
第二行有M个数,第i个数Oi表示第i段轨道上有第Oi个国家的太空站。
第三行有N个数,第i个数Pi表示第i个国家希望收集的陨石数量。
第四行有一个数K,表示BIU预测了接下来的K场陨石雨。
接下来K行,每行有三个数Li,Ri,Ai,表示第K场陨石雨的发生地点在从Li顺时针到Ri的区间中(如果Li<=Ri,就是Li,Li+1,...,Ri,否则就是Ri,Ri+1,...,m-1,m,1,...,Li),向区间中的每个太空站提供Ai单位的陨石样本。
输出:
N行。第i行的数Wi表示第i个国家在第Wi波陨石雨之后能够收集到足够的陨石样本。如果到第K波结束后仍然收集不到,输出NIE。
var s1,s2:array[..]of extended;
t:array[..]of longint;
c,q:array[..]of record
l,r,op,t:longint;
a:int64;
s:extended;
end;
b:array[..]of extended;
head,vet,next,ans,flag:array[..]of longint;
n,m,i,k,tot,x,time:longint; procedure add(x:longint;y:extended);
var i:longint;
begin
i:=x;
while i<=m do
begin
if t[i]<>time then
begin
s1[i]:=; s2[i]:=; t[i]:=time;
end;
s1[i]:=s1[i]+y;
s2[i]:=s2[i]+y*x;
i:=i+i and (-i);
end;
end; function query(x:longint):extended;
var i:longint;
begin
query:=; i:=x;
while i> do
begin
if t[i]=time then query:=query+s1[i]*(x+)-s2[i];
i:=i-i and (-i);
end;
end; procedure solve(x,y,l,r:longint);
var i,j,mid,pre,now,u,e,v:longint;
tmp:extended;
begin
if l>r then exit;
if l=r then
begin
for i:=x to y do
if c[i].op= then ans[c[i].a]:=l;
exit;
end;
mid:=(l+r)>>;
pre:=x; now:=x; inc(time);
for i:=x to y do
if c[i].op= then
begin
if c[i].t<=mid then
begin
if c[i].l>c[i].r then
begin
add(c[i].l,c[i].a);
add(,c[i].a);
add(c[i].r+,-c[i].a);
end
else
begin
add(c[i].l,c[i].a);
add(c[i].r+,-c[i].a);
end;
flag[i]:=;
inc(now);
end
else flag[i]:=;
end;
for i:=x to y do
if c[i].op= then
begin
u:=c[i].a; tmp:=;
e:=head[u];
while e<> do
begin
v:=vet[e];
tmp:=tmp+query(v)-query(v-);
if tmp>=c[i].s then break;
e:=next[e];
end;
if tmp>=c[i].s then
begin
inc(now); flag[i]:=;
end
else
begin
flag[i]:=; c[i].s:=c[i].s-tmp;
end;
end; for i:=x to y do
if flag[i]= then
begin
q[now]:=c[i]; inc(now);
end
else
begin
q[pre]:=c[i]; inc(pre);
end;
for i:=x to y do c[i]:=q[i];
solve(x,pre-,l,mid);
solve(pre,y,mid+,r);
end; procedure add(a,b:longint);
begin
inc(tot);
next[tot]:=head[a];
vet[tot]:=b;
head[a]:=tot;
end; begin read(n,m);
for i:= to m do
begin
read(x);
add(x,i);
end;
for i:= to n do read(b[i]);
read(k);
for i:= to k do
begin
read(c[i].l,c[i].r,c[i].a);
c[i].op:=; c[i].t:=i;
end;
for i:= to n do
begin
c[i+k].op:=;
c[i+k].a:=i; c[i+k].s:=b[i];
end; solve(,k+n,,k+);
for i:= to n do
if ans[i]<=k then writeln(ans[i])
else writeln('NIE'); end.
【BZOJ2527】Meteors(整体二分)的更多相关文章
- 【BZOJ2527】[Poi2011]Meteors 整体二分
[BZOJ2527][Poi2011]Meteors Description Byteotian Interstellar Union (BIU) has recently discovered a ...
- 【BZOJ-2527】Meteors 整体二分 + 树状数组
2527: [Poi2011]Meteors Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 831 Solved: 306[Submit][Stat ...
- BZOJ2527 [Poi2011]Meteors 整体二分 树状数组
原文链接http://www.cnblogs.com/zhouzhendong/p/8686460.html 题目传送门 - BZOJ2527 题意 有$n$个国家. 太空里有$m$个太空站排成一个圆 ...
- 【BZOJ2527】【POI2011】Meteors [整体二分]
Meteors Time Limit: 60 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 这个星球经常会下陨石雨.BI ...
- BZOJ2527[Poi2011]Meteors——整体二分+树状数组
题目描述 Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby galaxy. The ...
- 【bzoj2527】[Poi2011]Meteors 整体二分+树状数组
题目描述 有N个成员国.现在它发现了一颗新的星球,这颗星球的轨道被分为M份(第M份和第1份相邻),第i份上有第Ai个国家的太空站. 这个星球经常会下陨石雨.BIU已经预测了接下来K场陨石雨的情况.BI ...
- BZOJ2527: [Poi2011]Meteors(整体二分)
Description Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby gala ...
- bzoj 2527 Meteors - 整体二分 - 树状数组
Description Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby gala ...
- 2527: [Poi2011]Meteors[整体二分]
2527: [Poi2011]Meteors Time Limit: 60 Sec Memory Limit: 128 MB Submit: 1528 Solved: 556 [Submit][S ...
- BZOJ 2527 Meteors | 整体二分
BZOJ 2527 Meteors 题意 一个圆环上有m个位置,编号为1~m,分别属于n个国家. 有k个时刻,每个时刻都会给圆环上的一个区间中每个位置的值加上一个数. 每个国家有一个目标,问对于每个国 ...
随机推荐
- ASP.NET MVC+Bootstrap个人博客之文章打赏(六)
看到新浪微博.百度百家等等平台上都带有文章“打赏”功能,觉得很新鲜,于是也想在自己的博客中加入“打赏”功能. 当然,加入打赏功能并非是真的想要让别人打赏.因为只有那些真正能引起共鸣,发人深思,让人受益 ...
- 前端缓存-IndexedDB
IndexedDB 就是浏览器提供的本地数据库,它可以被网页脚本创建和操作.IndexedDB 允许储存大量数据,提供查找接口,还能建立索引.这些都是 LocalStorage 所不具备的.就数据库类 ...
- esp8266 串口通讯
1.发送 调用uart_init(115200,115200);初始化串口,波特率设置为115200.前面一个是设置uart0的波特率.后面一个是设置.uart的波特率 然后就可以使用uart0_tx ...
- H.264和HEVC分析软件和工具【转】
一.264分析两大利器:264VISA和Elecard StreamEye Tools 264visa 强力的h264实时分析工具 ,能分析各种场合下的h264资源,适用于h264开发者,学习者.在图 ...
- SpringBoot传参转换枚举
有时候,我们传参的时候,希望使用枚举类来当作参数 public enum VipEnum { HUANG(1, "黄钻"), HONG(2, "红钻"); pr ...
- jquery 获取日期 date 对象、 判断闰年
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Zend Studio 服务器根目录设置
在 Apache 服务器根目录里查找 \conf\httpd.conf 例如:C:\AppServ\Apache24\conf\httpd.conf 打开后查找 DocumentRoot 标记 修改调 ...
- USB设备请求命令详解
USB设备请求命令 :bmRequestType + bRequest + wValue + wIndex + wLength 编号 值 名称 (0) 0 GET_STATUS:用来返回特定接收者 ...
- Python tldextract模块
最新发布的 PyPI: pip install tldextract 或者最新的开发版本: pip install -e 'git://github.com/john-kurkowski/tldext ...
- 数据库中的Schema是什么?
在数据库中,schema(发音 “skee-muh” 或者“skee-mah”,中文叫模式)是数据库的组织和结构,schemas andschemata都可以作为复数形式.模式中包含了schema对象 ...