https://vjudge.net/contest/66989#problem/H

此题真是坑到爆!!说好的四舍五入害我改了一个多小时,不用四舍五入!!有好几个坑点,注意要交换l,r的位置,还有输出格式问题

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
const int maxn=100010;
ll value[maxn<<2];
void pushup(int rt)//pushup应该随题目变化情况改变而改变
{value[rt]=value[rt<<1]+value[rt<<1|1];
}
void btree(int l,int r,int rt)
{if(l==r){scanf("%lld",&value[rt]);return ;}int m=(l+r)>>1;btree(ls);btree(rs);pushup(rt);
}
void update(int L,int R,int l,int r,int rt)
{if(value[rt]==r-l+1)return;//没有这句就会超时if(l==r){value[rt]=(ll)(sqrt(value[rt]));//不四舍五入return;}int m=(l+r)>>1;if(L<=m)update(L,R,ls);if(R>m)update(L,R,rs);pushup(rt);
}
ll query(int L,int R,int l,int r,int rt)
{if(L<=l&&r<=R)return value[rt];int m=(l+r)>>1;ll ans=0;if(L<=m)ans+=query(L,R,ls);if(R>m)ans+=query(L,R,rs);return ans;
}
int main()
{int n,m,cnt=0;while(~scanf("%d",&n)){printf("Case #%d:\n",++cnt);btree(1,n,1);scanf("%d",&m);while(m--){int t,l,r;scanf("%d%d%d",&t,&l,&r);if(l>r)swap(l,r);//这一点也是容易被坑的!!if(t==0)update(l,r,1,n,1);if(t==1)printf("%lld\n",query(l,r,1,n,1));}printf("\n");}return 0;
}
/*
10
1 2 3 4 5 6 7 8 9 10
5
0 1 10
1 1 10
1 1 5
0 5 8
1 4 8
*/

转载于:https://www.cnblogs.com/acjiumeng/p/6501124.html

hdu4027线段树相关推荐

  1. 数据结构---线段树

    线段树 转载请注明出处,谢谢!http://blog.csdn.net/metalseed/article/details/8039326  持续更新中···   一:线段树基本概念 1:概述 线段树 ...

  2. 【转】线段树题目 汇总 讲解(by not only success)

    转载自:http://www.notonlysuccess.com/ 非常喜欢他的代码风格以及简洁的思路,感谢notonlysuccess! PS:他的个人网站好像是上不去了-.- 线段树 很早前写的 ...

  3. 数据结构 —— 线段树

    [概述] 线段树是一种二叉搜索树,其存储的是一个区间的信息,每个结点以结构体的形式去存储,每个结构体包含三个元素:区间左端点.区间有端点.该区间要维护的信息(视实际情况而定),其基本思想是分治的思想. ...

  4. ACM大牛总结的线段树专辑

    https://blog.csdn.net/qq_25605637/article/details/46967529 [完全版]线段树 很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章 ...

  5. 【线段树】线段树及其相关 复习

    划分树: poj2104 K-th number /*******************************\* @prob: poj2104 K-th number ** @auth: Wan ...

  6. ACM_大牛总结的线段树专辑

    附上原出处:http://blog.csdn.net/qq_25605637/article/details/46967529 [完全版]线段树 这是从大牛那里粘过来的总结,对于刚训练线段树的我来说帮 ...

  7. 二逼平衡树——树套树(线段树套Splay平衡树)

    题面 Bzoj3196 解析 线段树和Splay两棵树套在一起,常数直逼inf,但最终侥幸过了 思路还是比较简单, 在原数组维护一个下标线段树,再在每一个线段树节点,维护一个对应区间的权值Splay. ...

  8. 线段树——HDU - 1698

    题目含义 就是初始化一堆数为1 可以经过操作把一个区间的数都改变 并求这堆数的总大小 题目分析 有一个 #include<iostream> #include<stdio.h> ...

  9. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)

    BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...

  10. 【线段树分治 线性基】luoguP3733 [HAOI2017]八纵八横

    不知道为什么bzoj没有HAOI2017 题目描述 Anihc国有n个城市,这n个城市从1~n编号,1号城市为首都.城市间初始时有m条高速公路,每条高速公路都有一个非负整数的经济影响因子,每条高速公路 ...

最新文章

  1. HDU 2243 考研路茫茫——单词情结(自动机)
  2. 用python画xy散点图-使用python绘制散点图并标示密度
  3. prometheus下载慢_Prometheus + Grafana 监控 SpringBoot
  4. 【转载】windows mobile 上隐藏和关闭X以及OK的处理
  5. Java二叉树的构建与遍历
  6. python dump函数用法_Python中json库的load和dump函数
  7. c语言如何判断是否是子序列,leetcode392(判断子序列)--C语言实现
  8. 英特尔推出第二代神经拟态研究芯片Loihi 2和全新Lava软件框架
  9. Web前端开发最佳实践(3):前端代码和资源的压缩与合并
  10. System.out.println 在idea控制台输出的中文乱码问题
  11. 动态规划实例(十五):最短路径Floyd
  12. 送一波福利,给「沉默王二」的读者朋友们
  13. 使用主题背景编辑器设计应用主题背景
  14. Efficientnet笔记:各个框架最适合的图像尺寸
  15. opencv 车牌识别---新能源车牌处理(二值化后按位取反)
  16. SVN怎么去掉版本控制,去除调svn绿色图标显示
  17. Bartender 的二维码QR Code出现编码错误:输入数据包含对所选编码无效的字符
  18. hbuilderx gitee操作教程
  19. Android studio下载及安装方法
  20. 基于GPT硬盘模式重装win10操作系统

热门文章

  1. 0627-TP整理三(对表的操作,数据的显示)
  2. Docker零基础入门指南(一):Docker介绍
  3. 脚本——LoadRunner文件操作函数详解
  4. 圆桌讨论:计算机视觉如何渗透你我的生活?|CCF-GAIR 2017
  5. 如何在github用git Pages上传自己在本地做的项目?
  6. ARP协议-路由交换原理5-【HCNA笔记】
  7. gulp教程之gulp-minify-css
  8. Android 日历提供器(一)
  9. 高度可定制化 IM聊天界面设计
  10. idea新建一个springboot项目_SpringBoot(二):第一个Spring Boot项目