博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 3308 LCIS 线段树 单点更新+区间合并
阅读量:7042 次
发布时间:2019-06-28

本文共 2101 字,大约阅读时间需要 7 分钟。

感觉区间合并都一个样,没什么好说的。

//#pragma comment(linker, "/STACK:1024000000,1024000000")#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long ll;typedef pair
pii;#define pb(a) push_back(a)#define INF 0x1f1f1f1f#define lson idx<<1,l,mid#define rson idx<<1|1,mid+1,r#define PI 3.1415926535898template
T min(const T& a,const T& b,const T& c) { return min(min(a,b),min(a,c));}template
T max(const T& a,const T& b,const T& c) { return max(max(a,b),max(a,c));}void debug() {#ifdef ONLINE_JUDGE#else freopen("d:\\in.txt","r",stdin); freopen("d:\\out1.txt","w",stdout);#endif}int getch() { int ch; while((ch=getchar())!=EOF) { if(ch!=' '&&ch!='\n')return ch; } return EOF;}const int MAXN=100100;struct node{ int maxx,pre,suf,lv,rv,len;};node tree[MAXN<<2];void Merge(node &fa,node &l,node &r){ fa.len=l.len+r.len; fa.maxx=max(l.maxx,r.maxx,r.lv>l.rv?l.suf+r.pre:-1); fa.lv=l.lv;fa.rv=r.rv; fa.pre=l.pre==l.len&&l.rv
>1; build(lson); build(rson); Merge(tree[idx],tree[idx<<1],tree[idx<<1|1]); return 0;}int update(int idx,int l,int r,int x,int v){ if(l==r) { tree[idx].lv=tree[idx].rv=v; return 0; } int mid=(r+l)>>1; if(x<=mid)update(lson,x,v); else update(rson,x,v); Merge(tree[idx],tree[idx<<1],tree[idx<<1|1]); return 0;}node query(int idx,int l,int r,int tl,int tr){ if(tl<=l&&tr>=r) return tree[idx]; int mid=(r+l)>>1; if(tl<=mid&&tr>mid) { node q,a,b; a=query(lson,tl,tr); b=query(rson,tl,tr); Merge(q,a,b); return q; }else if(tl<=mid) return query(lson,tl,tr); else return query(rson,tl,tr);}int main(){ int t; scanf("%d",&t); for(int ca=1;ca<=t;ca++) { int n,m; scanf("%d%d",&n,&m); build(1,0,n-1); for(int i=1;i<=m;i++) { char op=getch(); if(op=='Q') { int a,b; scanf("%d%d",&a,&b); node q=query(1,0,n-1,a,b); printf("%d\n",q.maxx); }else { int x,v; scanf("%d%d",&x,&v); update(1,0,n-1,x,v); } } } return 0;}
View Code

 

转载于:https://www.cnblogs.com/BMan/p/3295781.html

你可能感兴趣的文章
做自动化测试之前需要了解的
查看>>
vsftp 详解
查看>>
Linux终端中文字错位解决
查看>>
再谈swap
查看>>
文本处理三剑客之-sed基础用法
查看>>
宏正ATEN发行全球首款Cat 5双滑轨19寸LCD KVM切换器
查看>>
consui(二)集群配置
查看>>
Windows Cluster 常用命令
查看>>
AndroidStudio生成jar、so、aar以及上传远程库jcenter
查看>>
Redis 过期键的设置、获取和删除过期时间
查看>>
我的友情链接
查看>>
word,excel,网页上如何打x的n次方
查看>>
Cacti(系统监控)
查看>>
Ubuntu 12.04 修改/etc/resolv.conf重启后还原成修改前状态解决办法
查看>>
我的友情链接
查看>>
JavaSE 学习参考:访问修饰符
查看>>
利用Python 程序实现Linux 网卡 bonding 实现
查看>>
解决Project facet Java version 6.0 is not supported的方法
查看>>
PlatON在CentOS上编译部署
查看>>
layUI使用不当导致在Ajax提交不进入回调函数
查看>>