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的更多相关文章
随机推荐
- 机器学习笔记--KNN算法1
前言 Hello ,everyone. 我是小花.大四毕业,留在学校有点事情,就在这里和大家吹吹我们的狐朋狗友算法---KNN算法,为什么叫狐朋狗友算法呢,在这里我先卖个关子,且听我慢慢道来. 一 K ...
- redis哨兵配置
redis哨兵配置主从 redis哨兵的启动和redis实例的启动没有关系.所以可以在任何机器上启动redis哨兵.至少要保证有两个哨兵在运行,要不然宕机后哨兵会找不到主节点. 配置步骤: 1.在 ...
- Node.js Tools 1.2 for Visual Studio 2015 released
https://blogs.msdn.microsoft.com/visualstudio/2016/07/28/node-js-tools-1-2-visual-studio-2015/ What ...
- apache struts 2 任意代码执行漏洞
漏洞检测地址:http://0day.websaas.cn 漏洞利用工具,如下: 漏洞利用,如下: step1 step2 step3 提权思路,如下: 1.开启虚拟终端,执行命令,但是,提示“连接被 ...
- WindowsService 创建.安装.部署
windows服务的用法很适合用于一些长期跑的项目..不需要人工操作..不需要服务器一直登陆..很方便.. 不说废话..直接开整.. 启动VS2012..创建Windows服务项目.. 确定..创建成 ...
- kafka+zookeeper环境配置(Mac 或者 linux环境)
一.zookeeper下载与安装 1)下载 adeMacBook-Pro:zookeeper_soft apple$ wget http://mirrors.cnnic.cn/apache/zooke ...
- vim基础命令
2015-06-04 by komilevim基础命令 打开一个文件 vim index.php 几种模式说明Normal Mode也就是最一般的普通模式,默认进入vim之后,处于这种模式.Inser ...
- linux脚本编程(shell)浅介 (转载)
linux脚本(shell)编程 啊,昨天上网看到一篇讲 linux/unix shell 的文章,想想自己最后写这东西也是一年前的事了,想想都快忘光了. 还是整理一下,做一次回顾,以后说不定还用得上 ...
- PHP+MySQL存储数据出现中文乱码的问题
PHP+MySQL出现中文乱码的原因: 1. MYSQL数据库的编码是utf8,与PHP网页的编码格式不一致,就会造成MYSQL中的中文乱码. 2. 使用MYSQL中创建表.或者选择字段时设置的类型不 ...
- webapp中的meta
<!--开发后删除--> <meta http-equiv="Pragma" name="no-store" /><!--必须联网 ...