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的更多相关文章
随机推荐
- django1.9 + uwsgi +nginx1.9 部署(centos6.6)
django1.9 + uwsgi +nginx1.9 部署 官方介绍 https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_ngin ...
- 最短路径(Floyd)算法
#include <stdio.h>#include <stdlib.h>/* Floyd算法 */#define VNUM 5#define MV 65536int P[VN ...
- MySQL数据库常用函数
一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 不区分大小写 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等 ...
- ubuntu-E:Encountered a section with no Package: header的解决办法 (转)
E:Encountered a section with no Package: header, E:Problem with MergeList /var/lib/apt/lists/cn.arch ...
- ubuntu sublime text3 lisence
help --> enter lisence ----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855605 813 ...
- 路径 dirname(__FILE__)
require(dirname(__FILE__).'/include/init.php');
- Rendering Paths
渲染路径 Rendering Paths http://game.ceeger.com/Manual/RenderingPaths.html 延迟光照渲染路径的细节 Deferred Lighting ...
- [Unity] UGUI研究院之游戏摇杆
最近在做Unity基于UGUI的摇杆,发现了一种非常简单并且巧妙的方法,原文在这里, 不过要FQ!!http://godstamps.blogspot.tw/2015/07/unity-ugui-sc ...
- php的exit和die
首先, 两者是相等的: exit is equivalent to die; 其次, 都是语言构造器, language construct. 不是函数! 后面的内容用括号括起来只是为了方便... 用 ...
- php后台多用户权限组思路与实现程序代码
网站开发少不了有网站后台,有了后台自然要对用户有同角色来分配一下,特别是多用户系统的情况下,如我一个系统要有多个管理员,那么我这些管理要分成,编辑,友情连接,管理员等,那我们要有权限和角色分配,今天我 ...