bzoj 1645: [Usaco2007 Open]City Horizon 城市地平线【线段树+hash】

bzoj题面什么鬼啊……
题目大意:有一个初始值均为0的数列,n次操作,每次将数列(ai,bi-1)这个区间中的数与ci取max,问n次后元素和
离散化,然后建立线段树,每次修改在区间上打max标记即可

#include<iostream>
#include<cstdio>
#include<map>
#include<algorithm>
using namespace std;
const int N=100005;
int n,g[N],tot,a[N],b[N],c[N],has,h[N];
map<int,int>mp;
struct qwe
{int l,r,mx;
}t[N<<2];
int read()
{int r=0,f=1;char p=getchar();while(p>'9'||p<'0'){if(p=='-')f=-1;p=getchar();}while(p>='0'&&p<='9'){r=r*10+p-48;p=getchar();}return r*f;
}
void build(int ro,int l,int r)
{t[ro].l=l,t[ro].r=r;if(l==r)return;int mid=(l+r)>>1;build(ro<<1,l,mid);build(ro<<1|1,mid+1,r);
}
void pd(int ro)
{if(t[ro].mx!=0){t[ro<<1].mx=max(t[ro<<1].mx,t[ro].mx);t[ro<<1|1].mx=max(t[ro<<1|1].mx,t[ro].mx);}
}
void update(int ro,int l,int r,int v)
{if(l>r)return;if(t[ro].l==l&&t[ro].r==r){t[ro].mx=max(t[ro].mx,v);return;}pd(ro);int mid=(t[ro].l+t[ro].r)>>1;if(r<=mid)update(ro<<1,l,r,v);else if(l>mid)update(ro<<1|1,l,r,v);elseupdate(ro<<1,l,mid,v),update(ro<<1|1,mid+1,r,v);
}
int ques(int ro,int p)
{if(t[ro].l==t[ro].r)return t[ro].mx;pd(ro);int mid=(t[ro].l+t[ro].r)>>1;if(p<=mid)return ques(ro<<1,p);elsereturn ques(ro<<1|1,p);
}
int main()
{n=read();for(int i=1;i<=n;i++)a[i]=read(),b[i]=read(),c[i]=read(),g[++tot]=a[i],g[++tot]=b[i];sort(g+1,g+1+tot);for(int i=1;i<=tot;i++)if(i==1||g[i]!=g[i-1])mp[g[i]]=++has,h[has]=g[i];build(1,1,has);for(int i=1;i<=n;i++)update(1,mp[a[i]]+1,mp[b[i]],c[i]);long long ans=0;for(int i=2;i<=has;i++){int nw=ques(1,i);ans+=1ll*nw*(h[i]-h[i-1]);}printf("%lld\n",ans);return 0;
}

转载于:https://www.cnblogs.com/lokiii/p/9003379.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis单机和集群环境搭建

一、安装单机版redis 1、可以自己去官网下载&#xff0c;当然也可以用课程提供的压缩包 # yum install gcc # wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz # tar -xzvf tcl8.6.1-src.tar.gz # cd /usr/local/tcl8.6.1/unix/ # ./configure # make &…

yum离线安装

安装yum-plugin-downloadonly插件 yum install -y yum-plugin-downloadonly下载对应的软件包&#xff0c;我们以mysql为例&#xff0c;终端输入如下命令 yum install -y --downloadonly --downloaddir/soft/mysql mysql --downloaddir用来指定下载的路径转载于:https://www.cnb…

算法 --- 递归实现多级树展开结构

说明 先根据数据渲染,然后再实现事件 渲染 在项目中,经常会给出一个深度不确定的数组,数字结构如下: data [{name: a, child:[{name: a1},{name: a2, child: [{name:a21}]}]},{name: b} ]要求将数组渲染成对应的目录结构, 结构如下: <ul><li>a<ul><…

PYTHON自动化Day4-交换变量,字符串方法,拷贝,集合,文件,文件指针

一.判断 # 非空即真、非0即真 # 不为空的话就是true&#xff0c;是空的话就是false # 只要不是0就是true&#xff0c;是0就是false# 布尔类型 # True False name input(请输入你的名字&#xff1a;).strip() a [] #false d{} # false c 0 #false f tuple() #false e #fa…

Ajax-jsonp

一、什么是Jsonp jsonp(json with padding) 是一种“使用模式”&#xff0c;可以让网页从别的域名那获取资料&#xff0c;即跨域读取数据。 为什么会使用jsonp呢&#xff1f;因为同源策略&#xff08;数据来源一致&#xff09;&#xff0c;现在所有支持javascript 的浏览器都会…

javascript --- [读书笔记] 回流与重绘 前端优化小结

1. 浏览器渲染原理 请说出: 从用户在浏览器地址输入网址,到看整个页面,中间都发生了哪些事情? HTTP请求阶段HTTP响应阶段浏览器渲染阶段 1.1 可能用到的知识 1.1.1 进程 Process、线程 Thread、 栈内存 Stack 进程: 就是开的每一个程序: QQ、网易云音乐、Typora、VSCode……

ARP协议,以及ARP欺骗

1.定义&#xff1a; 地址解析协议&#xff0c;即ARP&#xff08;Address Resolution Protocol&#xff09;&#xff0c;是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机&#xff0c;并接收返回消息&#xff0c;以此…

css --- [小结]让盒子水平垂直居中的解决方案

描述 有如下模型,想办法让 <style>.box{width: 500px;height: 500px;background: skyblue;} </style> <div class"box"><div class"inner"></div> </div>想办法让inner在box中水平垂直居中 方案1: 使用绝对定位 让…

数组洗牌 Fisher Yates

看播放器代码时发现的这个洗牌算法&#xff0c;再网上查了一番 作用是把数组变成随机序列&#xff0c;原理类似于从牌堆A中随机抽牌放进牌堆B 代码1&#xff1a; 返回一个由&#xff08;数组下标&#xff09;组成的数组 function random(length) {function shuffle (arr) {for…

一个不错的MYSQL数据库备份类,PHP版,一个文件,精简版

1 <?php2 class DbManage {3 var $db; // 数据库连接4 var $database; // 所用数据库5 var $sqldir; // 数据库备份文件夹6 // 换行符7 private $ds "\n";8 // 存储SQL的变量9 public $sqlContent "";10 // 每条sql…

javascript --- 堆栈内存与闭包的作用

你可能会用到的 堆内存: 存储引用类型值所在的空间栈内存: 存储基本类型值和存储代码所在空间函数上下文: JS每一个函数在执行的时候都会创建一个执行上下文 1. 堆内存中的数字和字符串都是相等的 let a {}, b0, c0; a[b] marron; a[c] Mar console.log(a[b]) // Mar第一…

python_sting字符串的方法及注释

string类型是python内置的类型&#xff0c;无需安装 方法/属性说明 capitalize() 把字符串的第一个字符改为大写 casefold() 把整个字符串的所有字符改为小写 center(width) 将字符串居中&#xff0c;并使用空格填充至长度width的新字符串 count(sub[,start[,end]]) …

作业3

import turtle turtle.bgcolor(red) turtle.color(yellow)turtle.fillcolor(yellow) turtle.begin_fill() for i in range(5):turtle.forward(100)turtle.right(144) turtle.end_fill() turtle.done()转载于:https://www.cnblogs.com/zhangkef97/p/9016608.html

javascript --- [小练习]变量提升、优先级综合

求下列函数输出结果 function Foo() {getName function() {console.log(1)}return this } Foo.getName function() {console.log(2) } Foo.prototype.getName function() {console.log(3) } var getName function() {console.log(4) }function getName() {console.log(5) …

Confluence 6 自定义 Decorator 模板的宏和针对高级用户

宏 页面的某些部分使用的是 Velocity 宏进行创建的&#xff0c;包括导航栏。有关宏的创建&#xff0c;你可以参考页面 Working With Decorator Macros 页面中的内容。 针对高级用户 velocity 目录是 Confluence 首先进行模板搜索的查找路径。你可以对 Confluence 的 velocity …

Matlab之rand(), randn(), randi()函数的使用方法

1. rand()函数用于生成取值在&#xff08;0~1&#xff09;之间均匀分布的伪随机数。rand(n)&#xff1a;生成n*n的0~1之间的满足均匀分布的伪随机矩阵&#xff1b;rand(m,n)&#xff1a;生成m*n的伪随机数&#xff1b;rand(m,n,double)&#xff1a;生成m*n的双精度伪随机数&am…

javascript --- [有趣的条件]双等号的隐式调用和数据劫持

1 双等号的隐式调用和数据劫持 求下面条件,在a为什么样时,等号成立 if(a 1 && a 2 && a 3){console.log(等号成立) }1.1 双等号的隐式转换 首先得了解双等号的隐式转换规则 等式备注对象 字符串隐式调用 toString方法将对象转换成字符串null undeifne…

分组查询

1、简单分组查询 语法形式&#xff1a; select function() from table_name where condition group by field; 进行分组查询时&#xff0c;分组所依据的字段上的值一定要有重复值&#xff0c;否则分组没有任何意义。 2、实现统计功能分组查询 关键字group by单独使用时&#xf…

深入探讨多模态模型和计算机视觉

近年来&#xff0c;机器学习领域在从图像识别到自然语言处理的不同问题类型上取得了显着进展。然而&#xff0c;这些模型中的大多数都对来自单一模态的数据进行操作&#xff0c;例如图像、文本或语音。相比之下&#xff0c;现实世界的数据通常来自多种模态&#xff0c;例如图像…

移动硬盘函数不正确要如何寻回资料

移动磁盘打不开函数不正确&#xff0c;是因为这个I盘的文件系统内部结构损坏导致的。要恢复里面的数据就必须要注意&#xff0c;这个盘不能格式化&#xff0c;否则数据会进一步损坏。具体的恢复方法看正文 工具/软件&#xff1a;AuroraDataRecovery 步骤1&#xff1a;先百度搜索…