UOJ25——IOI2014Wall
1、题目大意:这道题也是线段树修改,有两种修改,一个区间中大于h都变成h,一个区间中小于h都变成h,单点询问
主要是这几种操作
2、分析:这道题是双标记,还是父亲的优先级比儿子低,自己用手推推就可以知道怎么下传标记了(挺好推得),这是一道交互题,
以前从来都没有做过交互题,做完顿时感觉交互和传统没有太大的区别。。。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
struct segment_tree{
int milazy[10000000];
int malazy[10000000];
int x,y,z;
int value[10000000];
void init(){
memset(value,0,sizeof(value));
for(int i=1;i<=8000000;i++)milazy[i]=214748364;
memset(malazy,0,sizeof(malazy));
return;
}
void update(int l,int r,int o){
milazy[2*o]=min(milazy[2*o],milazy[o]);malazy[2*o]=min(malazy[2*o],milazy[o]);
milazy[2*o+1]=min(milazy[2*o+1],milazy[o]);malazy[2*o+1]=min(malazy[2*o+1],milazy[o]);
milazy[2*o]=max(milazy[2*o],malazy[o]);malazy[2*o]=max(malazy[2*o],malazy[o]);
milazy[2*o+1]=max(milazy[2*o+1],malazy[o]);malazy[2*o+1]=max(malazy[2*o+1],malazy[o]);
if(l==r){
value[l]=min(milazy[o],value[l]);value[l]=max(malazy[o],value[l]);
}
malazy[o]=0;milazy[o]=214748364;
return;
}
void add_mi(int l,int r,int o){
update(l,r,o);
if(x>r||y<l) return;
if(x<=l&&r<=y){
milazy[o]=z;update(l,r,o);
return;
}
int mid=(l+r)/2;
add_mi(l,mid,2*o);add_mi(mid+1,r,2*o+1);
return;
}
void add_ma(int l,int r,int o){
update(l,r,o);
if(x>r||y<l)return;
if(x<=l&&r<=y){
malazy[o]=z;update(l, r, o);
return;
}
int mid=(l+r)/2;
add_ma(l,mid,2*o);add_ma(mid+1,r,2*o+1);
return;
}
int query(int l,int r,int o){
update(l,r,o);
if(x>r||x<l)return 0;
if(l==r&&l==x){
return value[l];
}
int mid=(l+r)/2;int ret1,ret2;
ret1=query(l,mid,2*o);ret2=query(mid+1,r,2*o+1);
return max(ret1,ret2);
}
} wt;
void buildWall(int n,int k,int op[],int left[],int right[],int height[],int finalHeight[]){
wt.init();
for(int i=0;i<k;i++){
if(op[i]==1){
wt.x=left[i]+1;wt.y=right[i]+1;wt.z=height[i];
wt.add_ma(1,n,1);
}
else{
wt.x=left[i]+1;wt.y=right[i]+1;wt.z=height[i];
wt.add_mi(1,n,1);
}
}
for(int i=1;i<=n;i++){
wt.x=i;
finalHeight[i-1]=wt.query(1,n,1);
}
return;
}
UOJ25——IOI2014Wall的更多相关文章
随机推荐
- Jquery 基本知识(一)
1. DOM对象:通过例如getElementById方法获取到DOM树中的元素就是DOM对象 jQuery对象:通过jQuery包装DOM对象后产生的对象 --- 注意:jQuery对象和DOM对象 ...
- String类中的一些函数使用方法
最常用的就是Length()函数了,求字符串的长度 String s="";int i=s.length();i结果为0. 如果是String s=null;int i=s.len ...
- Linux下htop的使用
linux top命令VIRT,RES,SHR,DATA的含义 第1行-第4行:显示CPU当前的运行负载,有几核就有几行,我的是4核 Mem:显示内存的使用情况,3887M大概是3.8G,此时的Mem ...
- Codeforces 697A - Pineapple Incident
题目链接:http://codeforces.com/problemset/problem/697/A 题目大意: 输入三个数 t,s,x; 判断x是否合适 合适的位置位 t , t+s, t+s+1 ...
- LVS相关学习
vi /etc/sysctl.conf net.ipv4.conf.eth0.arp_ignore = 1 net.ipv4.conf.eth0.arp_announce = 2 net.ipv4.c ...
- C# Pointer types
https://msdn.microsoft.com/en-us/library/y31yhkeb.aspx
- 平均值mean,众数mode,中值median 和 标准差stddev
平均值mean,众数mode,中值median 和 标准差stddev 均值,众数,中位数,标称差: 均值是就全部数据计算的,它具有优良的数学性质,是实际中应用最广泛的集中趋势测度值.其主要缺点是易受 ...
- CallerInformation
http://www.cnblogs.com/henryzhu/archive/2013/01/27/csharp-5-new-callerinformation.html 去年8月,Visual S ...
- jquery 判断网络图片,或网络文件是否存在
$.ajax({ url : picSrc, async : false, type : 'HEAD', error : function() { picSrc = "https://ss0 ...
- QT读写ini配置文件
/********下面是写ini文件*************************/ //Qt中使用QSettings类读写ini文件 //QSettings构造函数的第一 ...