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的更多相关文章

  1. bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  2. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔

    http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...

  3. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  4. bzoj千题计划251:bzoj3672: [Noi2014]购票

    http://www.lydsy.com/JudgeOnline/problem.php?id=3672 法一:线段树维护可持久化单调队列维护凸包 斜率优化DP 设dp[i] 表示i号点到根节点的最少 ...

  5. bzoj千题计划177:bzoj1858: [Scoi2010]序列操作

    http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...

  6. bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...

  7. bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...

  8. bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹

    http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...

  9. bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机

    http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...

随机推荐

  1. Alpha版本冲刺(七)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  2. 10_Java面向对象_第10天(继承、抽象类)_讲义

    今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在Jav ...

  3. 复利计算测试(C语言)

    对我们和复利计算程序,写单元测试. 有哪些场景? 期待的返回值 写测试程序. 运行测试. 测试模块 测试输入 预期结果 运行结果 bug跟踪 计算终值 (本金,年限,利率) 终值     1 (100 ...

  4. VR论文调研

    IEEE VR 2018 1.Avatars and Virtual Humans--人物和虚拟人物 2.Augmented Reality--增强现实 3.Body and Mind--人体和思想( ...

  5. 『编程题全队』Alpha 阶段冲刺博客Day1

    『编程题全队』Alpha 阶段冲刺博客Day1 一.Alpha 阶段全组总任务 二.各个成员在 Alpha 阶段认领的任务 三.明日各个成员的任务安排 孙志威:实现基本的网络连接, 完成燃尽图模块 孙 ...

  6. express和数据库(MySQL)的交互(二)

    一.安装express前面都讲了 1.express. cnpm || npm install express --save 2.中间件 a.cnpm || npm install body-pars ...

  7. ByValue和ByPropertyName的区别

    ByValue 以Get-Service命令为例,它的帮助文件中关于-Name参数是这样解释的: 1. "WinRM" | Get-Service 2. "Trusted ...

  8. [转帖]Cgroups 与 Systemd

    Cgroups 与 Systemd 大神的文章很牛B .. https://www.cnblogs.com/sparkdev/p/9523194.html 看不太懂 , 转帖一下 自己留着好好看呢. ...

  9. SpringBoot(四)_Spring Data JPA的使用

    JPA 绝对是简化数据库操作的一大利器. 概念 首先了解 JPA 是什么? JPA(Java Persistence API)是 Sun 官方提出的 Java 持久化规范.它为 Java 开发人员提供 ...

  10. 牛客OI赛制测试赛3 解题报告

    前话: 话说考试描述:普及难度. 于是想在这场比赛上涨点信心. 考出来的结果:Point:480     Rank:40 然而同机房的最好成绩是 510. 没考好啊!有点炸心态,D题一些细节没有注意, ...