bzoj 4631: 踩气球 线段树合并
4631: 踩气球
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 265 Solved: 136
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 1 1 1 1
5 5
2 2
1 3
5
4
2
5
2
3
Sample Output
1
1
2
3
【样例说明】
实际上每次操作的盒子是: 4 2 1 3 5
在第二次操作后,第二个熊孩子会高兴 (区间[2,2]中的气球已经全部被踩爆)。
在第四次操作后,第三个熊孩子会高兴(区间[1,3]中的气球已经全部被踩爆)。
在第五次操作后,第一个熊孩子会高兴(区间[5,5]中的气球已经全部被踩爆)。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 100005
using namespace std;
int n,m;
int c[N],now;
struct node
{
int l,r,sum;
}a[N*];int cnt;
void add(int x,int l,int r,int z)
{
if(l==r)
{
a[x].sum++;
return ;
}
int mid=(l+r)>>;
if(z<=mid)
{
if(!a[x].l)a[x].l=++cnt;
add(a[x].l,l,mid,z);
}
else
{
if(!a[x].r)a[x].r=++cnt;
add(a[x].r,mid+,r,z);
}
a[x].sum=a[a[x].l].sum+a[a[x].r].sum;
return ;
}
int f[N];
int find(int x)
{
if(f[x]==x)return x;
return f[x]=find(f[x]);
}
int la=;
int root[N];
void del(int x,int l,int r,int z)
{
if(l==r)
{
la+=a[x].sum;
a[x].sum=;
return ;
}
int mid=(l+r)>>;
if(z<=mid)
{
if(a[a[x].l].sum)del(a[x].l,l,mid,z);
}
if(a[a[x].r].sum)del(a[x].r,mid+,r,z);
a[x].sum=a[a[x].l].sum+a[a[x].r].sum;
return ;
}
void merge(int x,int y,int l,int r)
{
if(l==r)
{
a[x].sum+=a[y].sum;
return ;
}
int mid=(l+r)>>;
if(a[x].l)
{
if(a[y].l)merge(a[x].l,a[y].l,l,mid);
}
else a[x].l=a[y].l;
if(a[x].r)
{
if(a[y].r)merge(a[x].r,a[y].r,mid+,r);
}
else a[x].r=a[y].r;
a[x].sum=a[a[x].r].sum+a[a[x].l].sum;
return ;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d",&c[i]);
for(int i=;i<=n;i++)root[i]=++cnt;
for(int i=;i<=n;i++)f[i]=i;
int t1,t2;
for(int i=;i<=m;i++)
{
scanf("%d%d",&t1,&t2);
add(root[t2],,n,t1);
}
int q;scanf("%d",&q); for(int i=;i<=q;i++)
{
scanf("%d",&t1);
t1=(t1-+la)%n+;
c[t1]--;
if(c[t1]==)
{
f[t1]=t1-;
int aa=find(t1);
del(root[t1],,n,aa+);
merge(root[aa],root[t1],,n);
}
printf("%d\n",la);
}
return ;
}
bzoj 4631: 踩气球 线段树合并的更多相关文章
- bzoj 4631: 踩气球 线段树
题目: Description 六一儿童节到了, SHUXK 被迫陪着M个熊孩子玩一个无聊的游戏:有N个盒子从左到右排成一排,第i个盒子里装着Ai个气球. SHUXK 要进行Q次操作,每次从某一个盒子 ...
- 【BZOJ-4631】踩气球 线段树 + STL
4631: 踩气球 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 224 Solved: 114[Submit][Status][Discuss] ...
- BZOJ.3545.[ONTAK2010]Peaks(线段树合并)
题目链接 \(Description\) 有n个座山,其高度为hi.有m条带权双向边连接某些山.多次询问,每次询问从v出发 只经过边权<=x的边 所能到达的山中,第K高的是多少. \(Solut ...
- BZOJ:5457: 城市(线段树合并)(尚待优化)
5457: 城市 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 18 Solved: 12[Submit][Status][Discuss] Des ...
- [Luogu P4215] 踩气球 (线段树)
题面 传送门:https://www.luogu.org/problemnew/show/P4215 Solution 这题十分有意思. 首先,我们可以先想想离线做法,因为在线做法可以从离线做法推出. ...
- bzoj 4756 Promotion Counting —— 线段树合并
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4756 合并子树的权值线段树: merge 返回 int 或者是 void 都可以. 代码如下 ...
- 【bzoj4631】踩气球 线段树
题解: 真是很zz 我都想到线段树分治的思路了... 不过还是一道好题 首先跟线段树分治一样将区间投射到线段树上去 每次修改如果该个区间修改为0,则对他们对应的特定区间-1 这样每个区间会有一次变0, ...
- BZOJ 4631 踩气球
BZOJ上内存小了会WA.... 线段树上挂链表. #include<iostream> #include<cstdio> #include<cstring> #i ...
- 【BZOJ 4631】4631: 踩气球 (线段树)
4631: 踩气球 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 316 Solved: 153 Description 六一儿童节到了, SHUX ...
随机推荐
- 创世纪 BZOJ3037 & [Poi2004]SZP BZOJ2068
分析: 树形DP中的一种,基环树DP 针对每一个环跑DP,f[i],g[i]分别表示选或者不选,之后我们注意每次遍历的时候,不要重复遍历. 附上代码: #include <cstdio> ...
- Android Notification的使用 - z
http://blog.csdn.net/new_one_object/article/details/55511253 另,博主其它文章也很好
- 20155320 EXP8 Web基础
20155320 EXP8 Web基础 [基础问题回答] 什么是表单? 表单:可以收集用户的信息和反馈意见,是网站管理者与浏览者之间沟通的桥梁. 表单由文本域.复选框.单选框.菜单.文件地址域.按钮等 ...
- 《图说VR入门》——入门汇总
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/53818922 作者:car ...
- Scala学习(三)----数组相关操作
数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不 ...
- Hadoop日记Day14---MapReduce源代码回顾总结
一.回顾单词统计源码 package counter; import java.net.URI; import org.apache.hadoop.conf.Configuration; import ...
- 重新解读DDD领域驱动设计(一)
回顾 十年前,还未踏入某校时,便听闻某学长一毕业就入职北京某公司,月薪过万.对于一个名不见经传的小学院,一毕业能拿到这个薪水还是非常厉害的.听闻他学生期间参与开发了一款股票软件,股票那时正迎来一波疯涨 ...
- Mvc4_mvc4跟mysql语法
mvc4: 子页面:@section A{} 母页面:@RenderSection("A",false) false:别的页面没有定义为A的Section的话 也没事,layout ...
- PHP学习 安装环境和语法学习
要回归技术了,昨天下午专门去深圳大学城图书馆借书,甚是漂亮 禁不住搞了几张照片 在图书馆里面的书真多,图书馆环境真好,清华大学 北京大学研究生院的学生们有福了,最后一句深圳政府真尼玛有钱,下图是图书馆 ...
- 主流蓝牙芯片盘点,Nordic/TI/博通哪家强?
无线通信技术自19世纪中期诞生以来,从使用狼烟.火炬.闪光镜.信号弹等在视距内传输信息,到1838年塞缪尔・莫尔斯发明电报网,再到电报网被电话取代,再到几十年后的1895年马可尼首次从英国怀特岛到30 ...