bzoj千题计划149:bzoj2527: [Poi2011]Meteors
http://www.lydsy.com/JudgeOnline/problem.php?id=2527
整体二分
区间加,单点查,树状数组维护差分序列
注意 累积可能会爆long long,所以一满足要求就break
#include<cstdio>
#include<iostream>
#include<algorithm> using namespace std; #define N 300001 #define lowbit(x) x&-x typedef long long LL; int m,k; int tot,front[N],nxt[N],to[N]; struct node
{
bool ty;
int l,r,id;
int num,cur;
}e[N<<],tmp1[N<<],tmp2[N<<]; int need[N],ans[N]; LL have[N]; LL c[N+]; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} void add(int x,int y)
{
to[++tot]=y; nxt[tot]=front[x]; front[x]=tot;
} void change(int x,int y)
{
while(x<=m)
{
c[x]+=y;
x+=lowbit(x);
}
} LL query(int x)
{
LL sum=;
while(x)
{
sum+=c[x];
x-=lowbit(x);
}
return sum;
} void solve(int head,int tail,int l,int r)
{
if(head>tail) return;
if(l==r)
{
for(int i=head;i<=tail;++i)
if(!e[i].ty) ans[e[i].l]=l;
return;
}
int mid=l+r>>;
for(int i=head;i<=tail;++i)
{
if(e[i].ty && e[i].id<=mid)
{
if(e[i].l<=e[i].r)
{
change(e[i].l,e[i].num);
change(e[i].r+,-e[i].num);
}
else
{
change(e[i].l,e[i].num);
change(,e[i].num);
change(e[i].r+,-e[i].num);
}
}
else if(!e[i].ty)
{
have[e[i].l]=;
for(int j=front[e[i].l];j;j=nxt[j])
{
have[e[i].l]+=query(to[j]);
if(have[e[i].l]>=e[i].num) break;
} }
}
for(int i=head;i<=tail;++i)
{
if(e[i].ty && e[i].id<=mid)
{
if(e[i].l<=e[i].r)
{
change(e[i].l,-e[i].num);
change(e[i].r+,e[i].num);
}
else
{
change(e[i].l,-e[i].num);
change(,-e[i].num);
change(e[i].r+,e[i].num);
}
}
}
int ll=,rr=;
for(int i=head;i<=tail;++i)
{
if(!e[i].ty)
{
if(e[i].cur+have[e[i].l]>=e[i].num) tmp1[++ll]=e[i];
else
{
e[i].cur+=have[e[i].l];
tmp2[++rr]=e[i];
}
}
else
{
if(e[i].id<=mid) tmp1[++ll]=e[i];
else tmp2[++rr]=e[i];
}
}
for(int i=;i<=ll;++i) e[head+i-]=tmp1[i];
for(int i=;i<=rr;++i) e[head+ll+i-]=tmp2[i];
solve(head,head+ll-,l,mid);
solve(head+ll,tail,mid+,r);
} int main()
{
int n;
read(n); read(m);
int x,y,z;
for(int i=;i<=m;++i)
{
read(x);
add(x,i);
}
for(int i=;i<=n;++i) read(need[i]);
read(k);
for(int i=;i<=k;++i)
{
read(e[i].l);
read(e[i].r);
read(e[i].num);
e[i].ty=true;
e[i].id=i;
}
k++;
e[k].l=;
e[k].r=m;
e[k].num=1e9;
e[k].ty=true;
e[k].id=k;
for(int i=;i<=n;++i)
{
e[k+i].l=i;
e[k+i].num=need[i];
}
solve(,n+k,,k);
for(int i=;i<=n;++i)
{
if(ans[i]==k) puts("NIE");
else cout<<ans[i]<<'\n';
}
}
bzoj千题计划149:bzoj2527: [Poi2011]Meteors的更多相关文章
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划251:bzoj3672: [Noi2014]购票
http://www.lydsy.com/JudgeOnline/problem.php?id=3672 法一:线段树维护可持久化单调队列维护凸包 斜率优化DP 设dp[i] 表示i号点到根节点的最少 ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
- bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)
https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...
- bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹
http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...
- bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机
http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...
随机推荐
- 团队作业4 Alpha冲刺《嗨!你的快递》
仓库地址:https://git.coding.net/day_light/ourexpressmaster1.git 张新宇 1第一天日期:2018/6/13 1.1今日任务 进行核心功能数据匹 ...
- 重学 以太网的mac协议的CSMA/CD
之前上课一直模糊的CSMA/CD进行系统性整理. CSMA/CD (Carrier Sense Multiple Acess/Collision Detect)应用在OSI的 数据链路层 在以太网中, ...
- Matlab图像匹配问题
已知一个任意形状,查找在大图像中最接近的形状位置. 输入:一个小图形状和一张大图 输出:最接近的形状在大图中的位置 假设: (1)已知形状与目标形状有一定的形变. (2)形状与大图像均为二值图像,图中 ...
- 13_Java面向对象_第13天(static、final、匿名对象、内部类、包、修饰符、代码块)_讲义
今日内容介绍 1.final 关键字 2.static 关键字 3.匿名对象 4.内部类 5.包的声明与访问 6.访问修饰符 7.代码块 01final关键字概念 A: 概述 继承的出现提高了代码的复 ...
- angularJS1笔记-(7)-控制器的合理使用(显示和隐式的依赖注入)
AngularJS依赖注入 1.隐式注入:不需要开发人员干预,angularJS自动根据参数的名称识别和注入数据 app.controller("myCtrl".function( ...
- JSPatch 原理
原理 JSPatch用iOS内置的JavaScriptCore.framework作为JS引擎,但没有用它JSExport的特性进行JS-OC函 数互调,而是通过Objective-C Runtime ...
- HDU 2107 Founding of HDU
http://acm.hdu.edu.cn/showproblem.php?pid=2107 Problem Description 经过慎重的考虑,XHD,8600, LL,Linle以及RPG等A ...
- JS获取地址栏中的链接URL参数
function getUrlParam(name){ var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&am ...
- curl 实例详解
使用PHP的cURL库可以简单和有效地去抓网页.你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据 了.无论是你想从从一个链接上取部分数据,或是取一个XML文件并 ...
- 关于nginx的一点记录
(1) 安装nginx官网下载:http://nginx.org下载适合Windows的安装包,是一个压缩包,直接解压就可以了. (2) 启动nginx有三种方式启动:a. 双击nginx.exe图标 ...