2014多校第四场1006 || HDU 4902 Nice boat (线段树 区间更新)
题目链接
题意 : 给你n个初值,然后进行两种操作,第一种操作是将(L,R)这一区间上所有的数变成x,第二种操作是将(L,R)这一区间上所有大于x的数a[i]变成gcd(x,a[i])。输出最后n个数。
思路 : 暴力线段树,将区间进行更新,可以用延迟标记,也可以不用。p数组代表当前节点这一段上的值是不是相同,不全相同就是-1.
1 //4902 2 #include <cstdio> 3 #include <cstring> 4 #include <iostream> 5 #include <algorithm> 6 7 using namespace std ; 8 9 #define LL long long 10 LL a ,lz[100011*4],p[100011*4]; 11 12 void pushup(int rt) 13 { 14 if(p[rt << 1] == p[rt << 1 | 1]) 15 p[rt] = p[rt << 1] ; 16 else p[rt] = -1 ; 17 } 18 19 void pushdown(int rt) 20 { 21 if(lz[rt] != -1) 22 { 23 lz[rt << 1] = lz[rt << 1 | 1] = lz[rt] ; 24 p[rt << 1] = p[rt << 1 | 1] = lz[rt] ; 25 lz[rt] = -1 ; 26 } 27 } 28 void build(int l,int r,int rt) 29 { 30 lz[rt] = -1 ; 31 if(l == r) 32 { 33 scanf("%I64d",&a) ; 34 p[rt] = a; 35 return ; 36 } 37 int mid = (l + r) >> 1 ; 38 build(l,mid,rt << 1) ; 39 build(mid+1,r,rt << 1 | 1) ; 40 pushup(rt) ; 41 } 42 43 void update(int L,int R,int l,int r,int rt,LL sc,int flag) 44 { 45 if(flag > 0) 46 { 47 if(l >= L && r <= R) 48 { 49 p[rt] = lz[rt] = sc ; 50 return ; 51 } 52 } 53 else 54 { 55 if(p[rt] != -1 && (l >= L && r <= R)) 56 { 57 if(p[rt] > sc) 58 { 59 lz[rt] = p[rt] = __gcd(p[rt],sc) ; 60 } 61 return ; 62 } 63 } 64 pushdown(rt) ; 65 int mid = (l+r) >> 1 ; 66 if(mid >= L) 67 update(L,R,l,mid,rt << 1,sc,flag) ; 68 if(R > mid) 69 update(L,R,mid+1,r,rt << 1 | 1,sc,flag) ; 70 pushup(rt) ; 71 } 72 73 void output(int l ,int r,int rt) 74 { 75 if(l == r) 76 { 77 printf("%I64d ",p[rt]) ; 78 return ; 79 } 80 pushdown(rt) ; 81 int mid = (l + r) >> 1 ; 82 output(l,mid,rt << 1) ; 83 output(mid+1,r,rt << 1 | 1) ; 84 } 85 int main() 86 { 87 int T ,n,Q ; 88 cin >> T ; 89 while(T--) 90 { 91 scanf("%d",&n) ; 92 build(1,n,1) ; 93 scanf("%d",&Q) ; 94 int t,l,r; 95 LL x ; 96 while(Q--) 97 { 98 scanf("%d %d %d %I64d",&t,&l,&r,&x) ; 99 if(t == 1) 100 update(l,r,1,n,1,x,1) ; 101 else 102 update(l,r,1,n,1,x,-1) ; 103 } 104 output(1,n,1) ; 105 puts("") ; 106 } 107 return 0 ; 108 }
View Code
转载于:https://www.cnblogs.com/luyingfeng/p/3885400.html
2014多校第四场1006 || HDU 4902 Nice boat (线段树 区间更新)相关推荐
- HDU - 4902 Nice boat(线段树)
题目链接:点击查看 题目大意:给出 n 个数字组成的数列 a ,需要进行 m 次操作,每次操作分为以下两种: 1 l r val:将区间 [ l , r ] 内的 a[ i ] 都赋值为 val 2 ...
- 石油大 2019年第二阶段我要变强个人训练赛第十八场 Problem N 扶桑号战列舰(线段树+区间更新+区间查询)
链接:http://icpc.upc.edu.cn/problem.php?cid=1803&pid=13 题意:给出一个n,接下来一行给出n个数.才开始所有数为0,每次操作可以选一个区间[l ...
- hdu 5692 Snacks(dfs序+线段树区间更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5692 解题思路:这道题是树节点的点权更新,而且涉及到子树,常用的思路是利用dfs序,用线段树来对区间进 ...
- hdu 3966(树链剖分+线段树区间更新)
传送门:Problem 3966 https://www.cnblogs.com/violet-acmer/p/9711441.html 学习资料: [1]线段树区间更新:https://blog.c ...
- POJ 2777 ZOJ 1610 HDU 1698 --线段树--区间更新
直接将这3题 放一起了 今天在做线段树的东西 这3个都是区间更新的 查询方式互相不同 反正都可以放到一起吧 直接先上链接了 touch me touch me touch me 关于涉及到区间的修改 ...
- hdu 1698 Just a Hook 线段树区间更新
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 Let us number the consecutive metallic sticks of ...
- HDU 4533 威威猫系列故事――晒被子(线段树区间更新+分情况推公式)
因为马拉松初赛中吃鸡腿的题目让不少人抱憾而归,威威猫一直觉得愧对大家,这几天他悄悄搬到直角坐标系里去住了. 生活还要继续,太阳也照常升起,今天,威威猫在第一象限晒了N条矩形的被子,被子的每条边都和坐 ...
- HDU 5861 Road 线段树区间更新单点查询
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5861 Road Time Limit: 12000/6000 MS (Java/Othe ...
- hdu 5124(线段树区间更新+lazy思想)
http://acm.hdu.edu.cn/showproblem.php?pid=5124 题意:区间覆盖次数问题. 解题思路:线段树水之. #include<iostream> #in ...
最新文章
- pac (PAC(Proxy Auto Config) 是一个 Script;经由编写这个 Script,我们可以让系统判断在怎么样的情形下,要利用哪一台 Proxy 来进行联机。)...
- java字符后移_java把字符串参数往后移3位后输出
- Delphi的文件操作
- 你熟知的开源项目,幕后推手竟然是他们?
- linux程序网络验证,【redhat5.5】linux的LDAP认证服务器的配置及客户端pam网络验证实例...
- 【Linux学习记录】Linux文件属性权限、目录管理
- mouseover 和 mouseenter 的区别
- 彻底卸载360安全卫士的方法
- 小程序云开发之--微信公众号文章采集篇
- 分数计算器java报告_20182307 2019-2020-1 《数据结构与面向对象程序设计》实验四报告...
- WeQuant交易策略—5日均线
- SPA Matlab Code(转载)
- ologit 平行线检验 brant踩坑历程not all independent variables can be retained in binary logits brant test cann
- 三-五功能/半亮/25%亮/全亮/爆闪/SOS_专用应急灯手电筒IC方案
- 中高级Java程序员,你不得不掌握的基本功,挑战20k+
- 机器学习实战 美国50K工资分类
- 大数据系列sql基础知识(史上最全,收藏起来)
- Scrapy框架的使用之Scrapy爬取新浪微博
- 【小白】学深度学习 发现一个褥百度GPU羊毛的机会
- python学习小记
热门文章
- 妙用Windows安全模式执行杀毒
- js---25桥模式
- PostgreSQL数据库服务端监听设置及客户端连接方法教程
- Skype for Business Server 2015-12-WAP-发布-2-邮件服务器
- CHM格式的可以全文搜索的Spring3.2官方参考文档
- Windows 8实用窍门系列:10.Windows 8的基本变换和矩阵变换以及AppBar应用程序栏
- mysql数据库同步 debug
- Larbin简介,及其在Ubuntu10.04下的编译安装
- 爬取百度网盘资源报user is not authorized, hitcode:119
- koa2+vue实现登陆以及是否登陆控制