【bzoj4631】踩气球 线段树

题解:

真是很zz

我都想到线段树分治的思路了。。。

不过还是一道好题

首先跟线段树分治一样将区间投射到线段树上去

每次修改如果该个区间修改为0,则对他们对应的特定区间-1

这样每个区间会有一次变0,每个特定区间对应log个

复杂度nlogn

代码:

原文地址:https://www.cnblogs.com/yinwuxiao/p/9404708.html

时间: 2024-10-06 01:13:32

【bzoj4631】踩气球 线段树的相关文章

【BZOJ-4631】踩气球 线段树 + STL

4631: 踩气球 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 224  Solved: 114[Submit][Status][Discuss] Description 六一儿童节到了, SHUXK 被迫陪着M个熊孩子玩一个无聊的游戏:有N个盒子从左到右排成一排,第i个盒子里装着Ai个气球. SHUXK 要进行Q次操作,每次从某一个盒子里拿出一个没被踩爆的气球,然后熊孩子们就会立刻把它踩爆. 这M个熊孩子每个人都指定了一个盒子区间[Li, R

bzoj 4631: 踩气球 线段树合并

4631: 踩气球 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 265  Solved: 136[Submit][Status][Discuss] Description 六一儿童节到了, SHUXK 被迫陪着M个熊孩子玩一个无聊的游戏:有N个盒子从左到右排成一排,第i个盒子里装着Ai个气球. SHUXK 要进行Q次操作,每次从某一个盒子里拿出一个没被踩爆的气球,然后熊孩子们就会立刻把它踩爆. 这M个熊孩子每个人都指定了一个盒子区间[Li, R

bzoj4631踩气球

bzoj4631踩气球 题意: 有一个序列和一个区间集合,每次将序列中的一个数-1,求此时集合里有多少个区间和为0.序列大小≤100000,区间数≤100000,操作数≤100000. 题解: 此题解法其实并不难,对序列建线段树,用线段树每个节点维护区间和及覆盖该区间的集合内的区间的链表,同时记录每个集合内区间被分割为多少个区间.操作时就把查询经过的节点的区间和-1,如果为0则将覆盖该节点的区间的分割数-1,当分割数为0就让答案++.问题是复杂度,总是要遍历链表不会很慢吗?后来仔细想了一下,每次

bzoj4631 踩气球

题意:给定一个长为n的正整数序列,并给定m个区间,q次操作,每次操作将一个位置的数值减1,并在操作后输出给定的m个区间中有多少个区间的区间和为0.强制在线. 数据范围:n,m,q<=10^5 首先只有某个位置x的气球数目从1变成0的时候才会对答案产生影响,那么我们考虑这时什么样的区间的区间和会变成0.这样的区间之前一定包含位置x而且只有位置x不为0,也就是由位置x再加上x左边一段0和x右边一段0组成(这两段0可能不存在).我们找出x左边尽量长的一段连续的0和x右边尽量长的一段连续的0(这两段连续

POJ4970Killing Monsters (用刷气球方法,非线段树)

Killing Monsters Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 179 Accepted Submission(s): 99 Problem Description Kingdom Rush is a popular TD game, in which you should build some towers to pr

BZOJ 4631: 踩气球

4631: 踩气球 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 275  Solved: 140[Submit][Status][Discuss] Description 六一儿童节到了, SHUXK 被迫陪着M个熊孩子玩一个无聊的游戏:有N个盒子从左到右排成一排,第i个盒子里装着Ai个气球. SHUXK 要进行Q次操作,每次从某一个盒子里拿出一个没被踩爆的气球,然后熊孩子们就会立刻把它踩爆. 这M个熊孩子每个人都指定了一个盒子区间[Li, R

P4215 踩气球

题目描述 六一儿童节到了,SHUXK被迫陪着\(M\)个熊孩子玩一个无聊的游戏:有\(N\)个盒子从左到右排成一排,第\(i\)个盒子里装着\(A_i\)?个气球.SHUXK要进行\(Q\)次操作,每次从某一个盒子里拿出一个没被踩爆的气球,然后熊孩子们就会立刻把它踩爆. 这\(M\)个熊孩子每个人都指定了一个盒子区间\([L_i?,R_i?]\).如果某一个时刻,一个熊孩子发现自己选定的盒子区间\([L_i?,R_i?]\)中的所有气球都已经被踩爆了,他就会非常高兴(显然之后他一直会很高兴).

HDU 1556 Color the ball(线段树:区间更新)

http://acm.hdu.edu.cn/showproblem.php?pid=1556 题意: N个气球,每次[a,b]之间的气球涂一次色,统计每个气球涂色的次数. 思路: 这道题目用树状数组和线段树都可以,拿这道题来入门一下线段树的区间更新. 1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 6 const int maxn = 1000

Color the ball(树状数组+线段树)

Color the ball Time Limit : 9000/3000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 3   Accepted Submission(s) : 1 Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b