Can you answer these queries?

链 接 链接 链接 HDU - 4027
题 目 是 区 间 修 改 区 间 查 询 , 但 是 区 间 开 根 号 , 求 区 间 和 题目是区间修改区间查询,但是区间开根号,求区间和 题目是区间修改区间查询,但是区间开根号,求区间和
本 来 想 用 懒 标 记 , 但 好 像 不 太 方 便 , 但 我 们 关 注 下 数 据 特 点 本来想用懒标记,但好像不太方便,但我们关注下数据特点 本来想用懒标记,但好像不太方便,但我们关注下数据特点
最 大 2 e 64 次 方 , 也 就 是 64 次 开 根 号 就 成 为 了 1 然 后 就 不 再 改 变 最大2e64次方,也就是64次开根号就成为了1然后就不再改变 最大2e64次方,也就是64次开根号就成为了1然后就不再改变
所 以 我 们 区 间 修 改 可 以 改 为 单 点 修 改 , 然 后 加 一 个 类 似 剪 枝 的 操 作 就 可 以 不 超 时 了 所以我们区间修改可以改为单点修改,然后加一个类似剪枝的操作就可以不超时了 所以我们区间修改可以改为单点修改,然后加一个类似剪枝的操作就可以不超时了


代 码 代码 代码

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cmath>using namespace std;typedef long long ll;const int N = 1e5 + 10;struct node{int l, r;ll sum;
}tr[N << 2];int n, m;
ll arr[N];void pushup(int u)
{tr[u].sum = tr[u<<1].sum + tr[u<<1|1].sum;
}void build(int u, int l, int  r)
{tr[u] = {l, r, 0};if(l == r) {tr[u].sum = arr[l];return ;}int mid = l + r >> 1;build(u<<1, l, mid);build(u<<1|1, mid+1, r);pushup(u);}void modify(int u,int l,int r)
{if(tr[u].sum == (tr[u].r - tr[u].l + 1)){return;}if(tr[u].l == tr[u].r){tr[u].sum = sqrt(tr[u].sum);return ;}int mid = tr[u].l + tr[u].r >> 1;if(l <= mid) modify(u<<1, l, r);if(r > mid) modify(u<<1|1, l, r);pushup(u);
}ll query(int u,int l,int r)
{//if(tr[u].r < l || tr[u].l > r) return 0;if(tr[u].l >= l && tr[u].r <= r){return tr[u].sum;}ll res = 0;int mid = tr[u].l + tr[u].r >> 1;if(l <= mid){res += query(u<<1, l, r);}if(r > mid) res += query(u<<1|1, l, r);return res;
}int main()
{int idx = 0;while(~scanf("%d", &n)){for(int i = 1; i <= n; i ++){scanf("%lld", &arr[i]);}scanf("%d", &m);build(1, 1, n);printf("Case #%d:\n", ++idx);while(m--){int op, x, y;scanf("%d %d %d", &op, &x, &y);if(x > y) x ^= y ^= x ^= y;if(op == 0){modify(1, x, y);}else{ll res = query(1, x, y);printf("%lld\n", res);}}puts("");}return 0;
}

HDU - 4027相关推荐

  1. hdu - 4027 Can you answer these queries?

    http://acm.hdu.edu.cn/showproblem.php?pid=4027 /** * 题意:给你n个数,对这些数进行操作,有m组操作 * q == 0 [x,y]区间内的每个数开方 ...

  2. hdu 4027 Can you answer these queries?

    http://acm.hdu.edu.cn/showproblem.php?pid=4027 [更新区间,查询区间]的线段树,必须抓住修改6次以后每个数必然会变成1,然后以后的修改都将不起作用,在此之 ...

  3. hdu 4027(线段树)

    题意:给定100000个数,两种操作,0 i j表示将i j这段的数字都开根号(向下取整),1 i j表示查询i j之间的所有值的和...(所有的和都不超过64位) 解题思路:这题要做区间的开平方操作 ...

  4. HDU - 4027 Can you answer these queries?(线段树)

    题目链接:点击查看 题目大意:给定n艘敌军的舰队,每艘舰队都有一定的耐力值,随后进行m次操作,共包括两种操作,分别是输出区间[l,r]中的耐力 值之和,以及将区间[l,r]中的每个的耐力值都开平方 题 ...

  5. HDU 4027 Can you answer these queries?(线段树/区间不等更新)

    传送门 Can you answer these queries? Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65768/6576 ...

  6. Can you answer these queries? HDU - 4027

    给一串数字,再给一串操作,操作分两种,第一种是求u,v区间之和,第二种是把u,v区间内所有数变成其平方根,所给数字不超过long long 暴力更新,因为2的63次方sqrt不到10次就可以变成1,所 ...

  7. [kuangbin带你飞]专题七线段树 更新ing

    这,先写应该再两个月之前就已经写好了,只是没有发出来,还有些题没有做,慢慢更新,一下线段树吧.其实每个专题都觉得恶心 淦 建议写的时候每个题都要自己去敲,不要直接把模板拿过来改一改 之前写的一个无任何 ...

  8. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  9. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

最新文章

  1. 2.Azure资源组迁移
  2. 598. Range Addition II(Python)
  3. Java黑皮书课后题第2章:2.6(求一个整数各位数的和)读取一个0和1000之间的整数,并将给整数的各位数字相加
  4. C# 读取网页源码的三种办法WebClient、WebRequest、HttpWebRequest
  5. linux的内置的账户_6 款面向 Linux 用户的开源绘图应用程序
  6. 【Flink】Flink状态的缩放(rescale)与键组(Key Group)设计
  7. 用Entlib的配置程序块遇到的问题
  8. 如何安装python3.7.2_CentOS7下安装Python3及Pip3并保留Python2
  9. oracle 查看日志组切换状态_【DB笔试面试800】在Oracle中,归档和非归档模式之间的不同点是什么?它们各自的优缺点是什么?...
  10. 17.1 情感分析全貌 意境级
  11. cogs 315. [POJ3255] 地砖RoadBlocks
  12. member selection 运算符是什么
  13. POJ- 1751 Highways
  14. DSP2812 RAM不够用的解决方法【转载】
  15. 龙芯3A3000和龙芯3B3000芯片处理器参数介绍
  16. 微信小程序订阅消息定时发送消息
  17. Python数据可视化工具matplotlib(五)-- 面积图、填图、饼图
  18. Python机器学习笔记之pandas绘图
  19. matlab loglog
  20. 粒子群算法(PSO)优化最小二乘支持向量机回归预测,PSO-LSSVM回归预测,多输入单输出模型。

热门文章

  1. HDU 5965 扫雷 递推
  2. Android 闪电效果 (Electric Screen,电动屏幕)
  3. 倾家荡产、隐私全无?独家揭秘撞库攻击!
  4. HDFS missing blocks的处理办法
  5. halcon 库文件使用
  6. 社交NB的年轻人,是如何赚零花钱的?
  7. 概率论-协方差Covariance相关系数Correlation Coefficient
  8. 弱电控制强电(电子)项目--物联网工厂创业项目(智能家居核心)
  9. 趣味游戏—石头剪刀布
  10. Java解惑系列(三): 让人疑惑的0xff