线段树lazy标记??Hdu4902
Nice boat
Time Limit: 30000/15000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 335    Accepted Submission(s): 159
Also, this devil is looking like a very cute Loli.
Let us continue our story, z*p(actually you) defeat the 'MengMengDa' party's leader, and the 'MengMengDa' party dissolved. z*p becomes the most famous guy among the princess's knight party.
One day, the people in the party find that z*p has died. As what he has done in the past, people just say 'Oh, what a nice boat' and don't care about why he died.
Since then, many people died but no one knows why and everyone is fine about that. Meanwhile, the devil sends her knight to challenge you with Algorithm contest.
There is a hard data structure problem in the contest:
There are n numbers a_1,a_2,...,a_n on a line, everytime you can change every number in a segment [l,r] into a number x(type 1), or change every number a_i in a segment [l,r] which is bigger than x to gcd(a_i,x) (type 2).
You should output the final sequence.
For each test case, the first line contains a integers n.
The next line contains n integers a_1,a_2,...,a_n separated by a single space.
The next line contains an integer Q, denoting the number of the operations.
The next Q line contains 4 integers t,l,r,x. t denotes the operation type.
T<=2,n,Q<=100000
a_i,x >=0
a_i,x is in the range of int32(C++)
Please output a single more space after end of the sequence
1
10
16807 282475249 1622650073 984943658 1144108930 470211272 101027544 1457850878 1458777923 2007237709
10
1 3 6 74243042
2 4 8 16531729
1 3 4 1474833169
2 1 8 1131570933
2 7 9 1505795335
2 3 7 101929267
1 4 10 1624379149
2 2 8 2110010672
2 6 7 156091745
1 2 5 937186357
16807 937186357 937186357 937186357 937186357 1 1 1624379149 1624379149 1624379149
pid=4906" target="_blank" style="color:rgb(26,92,200); text-decoration:none">4906
4905 4904pid=4903" target="_blank" style="color:rgb(26,92,200); text-decoration:none">4903
pid=4901" target="_blank" style="color:rgb(26,92,200); text-decoration:none">4901
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include <queue>
#include <stack>
#include <string>
#include <iostream>
#include <set>
using namespace std;
const int MAX= 1e5+10;
const int inf = 0x3f3f3f3f;
const int MOD = 1e9+10;
const double eps= 1e-8;
typedef long long LL ;
typedef vector<int> vec;
typedef vector<vec> mat; LL gcd(LL a,LL b) {
return b==0?a:gcd(b,a%b);
} LL ans[MAX<<2],col[MAX<<2],a[MAX]; inline void push_up(int o) {
if(col[o<<1]==col[o<<1|1]) col[o]=col[o<<1];
}
inline void push_down(int o) {
if( col[o]!=-1) {
col[o<<1]=col[o<<1|1]=col[o];
col[o]=-1;
}
return ;
}
void build(int L,int R,int o) {
col[o]=-1;
if(L==R) {
col[o]=a[L];
return ;
}
int mid=(L+R)>>1;
build(L,mid,o<<1);
build(mid+1,R,o<<1|1);
push_up(o);
} void modify1(int L,int R,int o,int ls,int rs,LL x) {
if(ls<=L&&rs>=R) {
col[o]=x;
return ;
}
push_down(o);
int mid=(L+R)>>1;
if(ls<=mid) modify1(L,mid,o<<1,ls,rs,x);
if(rs>mid) modify1(mid+1,R,o<<1|1,ls,rs,x);
push_up(o);
}
void modify2(int L,int R,int o,int ls,int rs,LL x) {
if(ls<=L&&rs>=R&&col[o]!=-1) {
if(col[o]>x) {
col[o]=gcd(col[o],x);
}
return ;
}
push_down(o);
int mid=(L+R)>>1;
if(ls<=mid) modify2(L,mid,o<<1,ls,rs,x);
if(rs>mid) modify2(mid+1,R,o<<1|1,ls,rs,x);
push_up(o);
}
LL Query(int L,int R,int o,int k) {
if(L==R) {
return col[o];
}
push_down(o);
int mid=(L+R)>>1;
if(k<=mid) return Query(L,mid,o<<1,k);
else return Query(mid+1,R,o<<1|1,k);
}
int main() {
//freopen("in.txt","r",stdin);
int cas,n,op,ls,rs,m;
LL x;
scanf("%d",&cas);
while(cas--) {
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%I64d",&a[i]);
build(1,n,1);
scanf("%d",&m);
for(int i=0;i<m;i++) {
scanf("%d %d %d %I64d",&op,&ls,&rs,&x);
if(op==1) {
modify1(1,n,1,ls,rs,x);
}
else modify2(1,n,1,ls,rs,x);
} for(int i=1;i<=n;i++) {
// if(i==1) printf("%I64d",Query(1,n,1,i));
printf("%I64d ",Query(1,n,1,i));
}
printf("\n");
//printf(" ");
}
return 0;
}
线段树lazy标记??Hdu4902的更多相关文章
- poj3468 线段树+lazy标记
		
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 92921 ...
 - POJ3237 Tree(树剖+线段树+lazy标记)
		
You are given a tree with N nodes. The tree’s nodes are numbered 1 through N and its edges are numbe ...
 - 线段树+lazy标记 2019年8月10日计蒜客联盟周赛 C.小A的题
		
题目链接:https://nanti.jisuanke.com/t/40852 题意:给定一个01串s,进行m次操作,|s|<=1e6,m<=5e5 操作有两种 l r 0,区间[l,r] ...
 - HDU_1698 Just a Hook(线段树+lazy标记)
		
pid=1698">题目请点我 题解: 接触到的第一到区间更新,须要用到lazy标记.典型的区间着色问题. lazy标记详情请參考博客:http://ju.outofmemory.cn ...
 - POJ  3225  线段树+lazy标记
		
lazy写崩了--. 查了好久 /* U-> [l,r]–>1 I-> [1,l-1] [r+1,+无穷] –>0 D-> [l,r]–>0 C-> [1,l ...
 - 线段树+Lazy标记(我的模版)
		
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ...
 - C++-POJ2777-Count Color[线段树][lazy标记][区间修改]
		
分析:https://www.bilibili.com/read/cv4777102 #include <cstdio> #include <algorithm> using ...
 - hdu-3397 Sequence operation 线段树多种标记
		
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3397 题目大意: 0 a b表示a-b区间置为0 1 a b表示a-b区间置为1 2 a b表示a- ...
 - HDU 3468:A Simple Problem with Integers(线段树+延迟标记)
		
A Simple Problem with Integers Case Time Limit: 2000MS Description You have N integers, A1, A2, ... ...
 
随机推荐
- Odoo8.0安装wkhtmltopdf报表运行环境
			
#下载 #注意根据操作系统选择相应版本 (旧地址)wget http://sourceforge.net/projects/wkhtmltopdf/files/0.12.1/wkhtmltox ...
 - 【DB2】查询上月末、上年末、上年同期等信息
			
此处以20180612为例子 想得到上年末.上年同期.上月末这些时间点,只需要记住函数ADD_MONTHS.LAST_DAY.ADD_YEARS这些函数即可. 上年末 SELECT SUBSTR(TO ...
 - Oracle怎么导出存储过程
			
Oracle怎么导出存储过程 http://www.myexception.cn/database/1564245.html 导出: 1, 2,点击输出文件,选择要导出文件,选择要导出的目录以及设置导 ...
 - java基础讲解07-----数组
			
1.什么是数组 2.怎么使用数组 package test; public class ShuZu { public static void main(String[] args ...
 - js中加入数据缓存
			
因为我们的系统设计 所有的数据查询全部是采用参数化json 后台解析后进行数据返回 由于使用统一的数据查询入口 所有可以很方便的为数据设置缓存 var ModelDataCache = new Arr ...
 - STL容器分析--map
			
映射和多重映射基于某一类型Key的键集的存在,提供对T类型的数据进行快速和高效的检索.
 - redis安装和配置(一)
			
Redis 的官方下载站是http://redis.io/download 怎么安装 Redis 数据库呢?下面将介绍Linux 版本的安装方法 步骤一: 下载Redis 下载安装包:wget htt ...
 - linux 批量替换内容
			
sed -i "s/被替换的内容/替换的内容/g" `grep "被替换的内容" -rl 目录` -r = 搜索下级目录
 - poj  Ping pong LA 4329  (树状数组统计数目)
			
Ping pong Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2302 Accepted: 879 Descript ...
 - [转]RPC、CORBA、WebService之区别
			
RPC是由Sun发明的远程过程调用协议,是第一种真正的分布式应用模型.Windows上使用的R PC是DCERPC的扩展.严格地说,RPC是一种逻辑上的协议,它可以使用Socket.Named Pip ...