3211: 花神游历各国

Time Limit: 5 Sec  Memory Limit: 128 MB
Submit: 3438  Solved: 1277
[Submit][Status][Discuss]

Description

Input

Output

每次x=1时,每行一个整数,表示这次旅行的开心度

Sample Input

4
1 100 5 5
5
1 1 2
2 1 2
1 1 2
2 2 3
1 1 4

Sample Output

101
11
11

线段树

开更号直接暴力单点更新,因为一个int范围内的正整数最多开不到8次更号就会变成1,

这也意味着一个点最多只需要单点更新不到8次,超过就不需要再更新了,不会超时

注意节点值可能为0,所以你需要开个flag[]标记当前节点是否需要更新

上帝造题7分钟节点值没有0就不用开flag[]标记了,直接看当前节点值是否等于节点对应区间长度应该就行

但注意L可能大于R

#include<stdio.h>
#include<math.h>
#define LL long long
LL tre[444444], f[444444];
void Create(int l, int r, int x)
{int m;if(l==r){scanf("%lld", &tre[x]);if(tre[x]<=1)  f[x] = 1;else  f[x] = 0;return;}m = (l+r)/2;Create(l, m, x*2);Create(m+1, r, x*2+1);tre[x] = tre[x*2]+tre[x*2+1];f[x] = f[x*2]&f[x*2+1];
}
void Update(int l, int r, int x, int a, int b)
{int m;if(f[x])return;if(l==r){tre[x] = sqrt(tre[x]*1.0);if(tre[x]<=1)  f[x] = 1;return;}m = (l+r)/2;if(a<=m)Update(l, m, x*2, a, b);if(b>=m+1)Update(m+1, r, x*2+1, a, b);tre[x] = tre[x*2]+tre[x*2+1];f[x] = f[x*2]&f[x*2+1];
}
LL Query(int l, int r, int x, int a, int b)
{int m;LL sum;if(l>=a && r<=b)return tre[x];sum = 0;m = (l+r)/2;if(a<=m)sum += Query(l, m, x*2, a, b);if(b>=m+1)sum += Query(m+1, r, x*2+1, a, b);return sum;
}int main(void)
{int n, q, t, a, b;while(scanf("%d", &n)!=EOF){Create(1, n, 1);scanf("%d", &q);while(q--){scanf("%d%d%d", &t, &a, &b);if(t==1)printf("%lld\n", Query(1, n, 1, a, b));elseUpdate(1, n, 1, a, b);}}return 0;
}

bzoj 3211: 花神游历各国 bzoj 3038: 上帝造题的七分钟2相关推荐

  1. BZOJ 3038: 上帝造题的七分钟2【线段树区间开方问题】

    3038: 上帝造题的七分钟2 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 1469  Solved: 631 [Submit][Status][D ...

  2. BZOJ 3038 上帝造题的七分钟2

    Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对 ...

  3. [BZOJ 3211]花神游历各国(并查集+树状数组)

    Description Solution 树状数组单点修改区间查询 我们知道一个数n最多修改loglogn次就会变为1 并查集维护每个数右边第一个不为1的位置 #include<cstdio&g ...

  4. BZOJ 3211: 花神游历各国

    Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 5 5 1 1 2 2 1 2 1 1 2 2 2 3 ...

  5. 【luogu4145】 上帝造题的七分钟2 / 花神游历各国 [线段树]

    P4145 上帝造题的七分钟2 / 花神游历各国 把一段区间里的每个数都开方 求区间和 可以发现最多开方开6次就能都变为1 所以可以hei暴力地一个点一个点地改 具体操作我用的和buildtree差不 ...

  6. 3211: 花神游历各国

    3211: 花神游历各国 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 1042  Solved: 381 [Submit][Status] Desc ...

  7. 【暑假训练 7.10】 codevs 2492 上帝造题的七分钟2

    Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对 ...

  8. BZOJ3038 上帝造题的七分钟

    Time Limit: 3 Sec Memory Limit: 128 MB Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说, ...

  9. P4145 上帝造题的七分钟2 / 花神游历各国(线段树区间开平方)

    有点意思,不需要什么懒标记之类的东西,因为一个数无论怎样开平方,最后取整的结果必然会是1,所以我们不妨用最大值来维护,若区间最大值不为1,就暴力修改,否则不用管. #include<bits/s ...

最新文章

  1. 9.优先队列,priority_queue
  2. C#:WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置
  3. 文件夹去掉git版本控制_git 从版本控制中删除文件及.gitignore的用法
  4. 可能存在无限递归_无限分类递归+排序解剖
  5. 【Python3】复制、移动、删除文件及文件夹
  6. 资深开发者告诉你“页游转手游”应注意的五大点
  7. php if多条件_通过PHP与Python代码对比浅析语法差异
  8. kubernetes PVC介绍
  9. 分享一段php获取随意时间的前一天代码
  10. EDU 61 F. Clear the String 区间dp
  11. 内屏损坏强制usb调试_反渗透膜工作压力及调试
  12. 3d3s9.0硬件复制狗
  13. eclipse之 Type Hierachy:Viewing the type hierarchy
  14. html embed函数爬取,HTML DOM Embed用法及代码示例
  15. python做项目看板_一个好用的看板工具
  16. 白胡子不杀黑胡子的真正原因
  17. 如何评价近几年顶会的超分,去噪,去模糊等图像复原文章?
  18. 含有中文的图片正常显示(微信小程序)
  19. 30M DEM数据处理成图
  20. ARC059 E - Children and Candies(dp)

热门文章

  1. python可以给你干什么-Python可以用来做什么 为你揭开python神秘面纱
  2. python画图代码大全-Python实现画图软件功能方法详解
  3. python入门代码-Python入门学习系列——Python代码测试
  4. 语音识别的原理_语音识别原理_语音识别原理框图 - 云+社区 - 腾讯云
  5. 基于TMS320VC5507的语音识别系统实现
  6. 10 个 PHP 常见安全问题(实例讲解)
  7. 监测wifi连接_超声波传感器在物联网河流水位监测过程中扮演重要角色
  8. 【PYTHON笔记】:文件打开和关闭
  9. 8运行不了_民航局暂停运行737max8,分析可能因为“它”导致飞机俯冲坠落
  10. python发送soap报文_python用http发送soap报文进行webservice接口调用