Color the ball HDU1556
这题整整debug了两个小时
不同组居然要初始化 本以为built函数里面已经初始化好了!!!!!
其他无需注意
- #include<cstdio>
- #include<cstring>
- using namespace std;
- int n,p,a,b,m,x,y,ans;
- struct node
- {
- int l,r,w,f;
- }tree[];
- inline void build(int k,int ll,int rr)//建树
- {
- tree[k].l=ll,tree[k].r=rr;
- if(tree[k].l==tree[k].r)
- {
- tree[k].w=;
- return;
- }
- int m=(ll+rr)/;
- build(k*,ll,m);
- build(k*+,m+,rr);
- tree[k].w=tree[k*].w+tree[k*+].w;
- }
- inline void down(int k)//标记下传
- {
- tree[k*].f+=tree[k].f;
- tree[k*+].f+=tree[k].f;
- tree[k*].w+=tree[k].f*(tree[k*].r-tree[k*].l+);
- tree[k*+].w+=tree[k].f*(tree[k*+].r-tree[k*+].l+);
- tree[k].f=;
- }
- inline void ask_point(int k)//单点查询
- {
- if(tree[k].l==tree[k].r)
- {
- ans=tree[k].w;
- return ;
- }
- if(tree[k].f) down(k);
- int m=(tree[k].l+tree[k].r)/;
- if(x<=m) ask_point(k*);
- else ask_point(k*+);
- }
- inline void change_interval(int k)//区间修改
- {
- if(tree[k].l>=a&&tree[k].r<=b)
- {
- tree[k].w+=(tree[k].r-tree[k].l+)*y;
- tree[k].f+=y;
- return;
- }
- if(tree[k].f) down(k);
- int m=(tree[k].l+tree[k].r)/;
- if(a<=m) change_interval(k*);
- if(b>m) change_interval(k*+);
- tree[k].w=tree[k*].w+tree[k*+].w;
- }
- int main()
- {
- while(scanf("%d",&n)==&&n)
- {
- memset(tree,,sizeof(tree));
- build(,,n);
- y=;
- for(int i=;i<=n;i++)
- {
- scanf("%d%d",&a,&b);
- change_interval();
- }
- for(x=;x<n;x++)
- {
- ans=;
- ask_point();
- printf("%d ",ans);
- }
- ans=;
- ask_point();
- printf("%d\n",ans);
- }
- return ;
- }
可以用树状数组来做
普通的树状数组是改单点 求区间 或者改单点 求单点(做差)
但是树状数组也可以改区间 求单点 sum即为单点
每次更新为 参数~n 均+=val
- #include <cstdio>
- #include <cstring>
- const int maxn = ;
- int c[maxn],n;
- int Lowbit(int x)
- {
- return x&(-x);
- }
- void update(int k,int x)
- {
- while(k <= n)
- {
- c[k] += x;
- k += Lowbit(k);
- }
- }
- int getsum(int x)
- {
- int sum = ;
- while(x > )
- {
- sum += c[x];
- x -= Lowbit(x);
- }
- return sum;
- }
- int main()
- {
- int a,b;
- while(scanf("%d",&n)&&n!=)
- {
- memset(c,,sizeof(c));
- for(int i=; i<n; i++)
- {
- scanf("%d%d",&a,&b);
- update(a,);
- update(b+,-);
- }
- for(int i=; i<n; i++)
- printf("%d ",getsum(i));
- printf("%d\n",getsum(n));
- }
- return ;
- }
Color the ball HDU1556的更多相关文章
- (不用循环也可以记录数组里的数)Color the ball --hdu--1556
题目: N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次 ...
- Color the ball(HDU1556)树状数组
每次对区间内气球进行一次染色,求n次操作后后所有气球染色次数. 树状数组,上下区间更新都可以,差别不大. 1.对于[x,y]区间,对第x-1位减1,第y位加1,之后向上统计 #include<b ...
- HDU1556 Color the ball & 牛客 contest 135-I 区间 [差分标记]
一.差分标记介绍 差分标记用来解决针对区间(修改-查询)的问题,复杂度比线段树要更低.推荐这个博客. 例如,给数组中处于某个区间的数进行加减操作,然后查询某个位置上数的变化值. 二.HDU1556 C ...
- Color the ball(hdu1556)(hash)或(线段树,区间更新)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDU1556 Color the ball(差分数组)题解
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU-1556:Color the ball(前缀和)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU 1556 Color the ball(线段树区间更新)
Color the ball 我真的该认真的复习一下以前没懂的知识了,今天看了一下线段树,以前只会用模板,现在看懂了之后,发现还有这么多巧妙的地方,好厉害啊 所以就应该尽量搞懂 弄明白每个知识点 [题 ...
- hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- hdu 1556:Color the ball(线段树,区间更新,经典题)
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
随机推荐
- 目标提取深度神经网络分析权衡 trade offs
RCNN: 直接使用object proposal 方法得到image crops 送入神经网络中,但是crops 的大小不一样,因此使用 ROI Pooling,这个网络层可以把不同大小的输入映射到 ...
- sql 把多列内容合并
这个语句不完整.应该是这样:stuff(select ',' + fieldname from tablename for xml path('')),1,1,'') as ’别名‘这一整句的作用是 ...
- luogu P4342 [IOI1998]Polygon
IOI早期这么多dp? 题目要求断掉环上的一边,我们可以断环为链,开两倍数组 容易想到dp,设\(f_{i,j}\)为区间\([i,j]\)的最大值,然后就是个枚举断点的区间dp 不过可能会有负数出现 ...
- NULL、0、nullptr的区别
某些时候,我们需要将指针赋值为空指针,以防止野指针. 有人喜欢使用NULL作为空指针常量使用,例如:int* p = NULL;. 也有人直接使用0值作为空指针常量,例如:int* p = 0;. ...
- Mybatis进阶学习笔记——输入映射
1.输入映射 输入映射支持的类型: 1) 基本的类型,int,String,double 等(*)2) JavaBean 类型(*)3) 包装JavaBean 类型(对象里面包含另一个对象) 1.1基 ...
- 2018-2019-2 网络对抗技术 20165320 Exp3 免杀原理与实践
### 2018-2019-2 网络对抗技术 20165320 Exp3 免杀原理与实践 一.实验内容 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分) ...
- URLSession
URLSession时ios7中的心得网络接口,与NSURLConnection是并列的. 当程序在前台时,URLSession与NSURLConnection大部分可以互相替代. URLSessio ...
- mysql基本命令[转]
1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...
- STM32 变量无法赋值问题
STM32 在用JLink 调试的时候发现有一条将unsigned char赋值给int的语句始终不能执行,int类型变量的值始终为0: 查资料找到这个问题是编译器优化的原因,也就是说由于编译器优化, ...
- SpringBoot整合MyBatis(XML)
(1).添加依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId> ...