ACM-ICPC 2018 徐州赛区网络预赛 G. Trace
There's a beach in the first quadrant. And from time to time, there are sea waves. A wave ( xx , yy ) means the wave is a rectangle whose vertexes are ( 00 , 00 ), ( xx , 00 ), ( 00 , yy ), ( xx , yy ). Every time the wave will wash out the trace of former wave in its range and remain its own trace of ( xx , 00 ) -> ( xx , yy ) and ( 00 , yy ) -> ( xx , yy ). Now the toad on the coast wants to know the total length of trace on the coast after n waves. It's guaranteed that a wave will not cover the other completely.
Input
The first line is the number of waves n(n \le 50000)n(n≤50000).
The next nn lines,each contains two numbers xx yy ,( 0 < x0<x , y \le 10000000y≤10000000 ),the ii-th line means the ii-th second there comes a wave of ( xx , yy ), it's guaranteed that when 1 \le i1≤i , j \le nj≤n ,x_i \le x_jxi≤xj and y_i \le y_jyi≤yj don't set up at the same time.
Output
An Integer stands for the answer.
Hint:
As for the sample input, the answer is 3+3+1+1+1+1=103+3+1+1+1+1=10

样例输入复制
3
1 4
4 1
3 3
样例输出复制
10 题意:输入n代表有n波海浪,海浪会有一个范围,冲成一个矩形,会在边缘的地方留下痕迹,如果这波海浪碰到了之前留下来的痕迹,会把它的痕迹所冲掉,然后问最后总共留下来的痕迹有多少
注意;你后面的海浪不可能把之前的一波海浪全部覆盖 思路:首先我们肯定要倒着来访问
比赛时的想法:然后我开始没看到那句后面的不会把前面的浪全部冲掉那一句话,然后我的想法是给每个行列位置置一个浪冲的的最大范围,然后只要用那个最大的范围减中间差值即可
但是后面我写炸了,用的是线段树维护最大冲浪范围, 赛后:我们仔细想想(后面的浪不会把之前的浪全部冲掉这一句话),所以我们只可能出现 (一个比x大,一个比y小), (一个比x小,一个比y大)
我们倒着来,找最近的比他小的数即可,二分找来降低复杂度, 如果有比他小的 那么我们就+他们的差值

如果当前的坐标就是最小的,找不到的时候,那么我们的这个是最小,说明我们的另外一个坐标肯定比他们长,
比他们长的话就加当前长度即可(因为另一边肯定比他长,然后就露出去了)

#include <bits/stdc++.h>
using namespace std; long long gao(vector<int> vec) {
int sz = vec.size();
set<int>st;
long long ans = ;
for (int i = sz-; i >= ; i--) {//倒着访问
set<int>::iterator it = st.lower_bound(vec[i]);
if (it == st.begin()) {//如果当前的坐标比所有的小,说明另一个肯定比他们大,所以加全部,图二
ans += vec[i];
} else {
it--;
ans += vec[i] - *it;//图一
}
st.insert(vec[i]);
}
return ans;
}
int main() {
int n;
while(scanf("%d", &n) == ) {
vector<int>vec1, vec2;
int x,y;
while(n--) {
scanf("%d%d", &x, &y);
vec1.push_back(x);
vec2.push_back(y);
}
cout<<gao(vec1) + gao(vec2)<<endl;
}
}
ACM-ICPC 2018 徐州赛区网络预赛 G. Trace的更多相关文章
- ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心)
ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心) Trace 问答问题反馈 只看题面 35.78% 1000ms 262144K There's a beach in t ...
- ACM-ICPC 2018 徐州赛区网络预赛 G Trace(思维+set)
https://nanti.jisuanke.com/t/31459 题意 n个矩阵,不存在包含,矩阵左下角都在(0,0),给右上角坐标,后来的矩阵会覆盖前面的矩阵,求矩阵周长. 分析 set按照x或 ...
- ACM-ICPC 2018 徐州赛区网络预赛 G Trace(逆向,两颗线段树写法)
https://nanti.jisuanke.com/t/31459 思路 凡是后面的轨迹对前面的轨迹有影响的,可以尝试从后往前扫 区间修改需要push_down,单点更新所以不需要push_up(用 ...
- ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (set维护)
注意题目保证不会有一个矩形完全包括另一个矩形的情况 时间序上从后往前看,一个坐标\((x,y)\)加进来之前,如果已经有\(x_i<x\),则对结果的贡献为\(x-x_i\);若不存在\(x_i ...
- ACM-ICPC 2018 徐州赛区网络预赛 G. Trace【树状数组维护区间最大值】
任意门:https://nanti.jisuanke.com/t/31459 There's a beach in the first quadrant. And from time to time, ...
- ACM-ICPC 2018 徐州赛区网络预赛-G Trace(线段树的应用
Problem:Portal传送门 Problem:Portal传送门 原题目描述在最下面. 我理解的题意大概是:有n次涨潮和退潮,每次的范围是个x×y的矩形,求n次涨退潮后,潮水痕迹的长度. ...
- ACM-ICPC 2018 徐州赛区网络预赛 G. Trace-树状数组-区间修改,单点查询
赛后和队友讨论了一波,感谢无敌的队友给我细心的讲题 先埋坑 #include<iostream> #include<string.h> #include<algorith ...
- ACM-ICPC 2018 徐州赛区网络预赛 G题
题目链接: https://nanti.jisuanke.com/t/31459 具体思路: 先顺序输入,然后回溯,假设已经加入了n个点,那么在加入的同时,首先看一下原先x轴上已经有过的点,找到第一个 ...
- ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer (最大生成树+LCA求节点距离)
ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer J. Maze Designer After the long vacation, the maze designer ...
随机推荐
- mat 使用 分析 oom 使用 Eclipse Memory Analyzer 进行堆转储文件分析
概述 对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现.JVM 能够记录 ...
- win10系统同时安装python2和python3
1.官网下载python2和python3版本 2.安装python3,勾上Add Python3.5 to PATH,自定义选择安装目录,安装,验证:WIN+R--->cmd,输入python ...
- js删除数组中元素的方法
一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删 ...
- Spring AOP实现Mysql数据库主从切换(一主多从)
设置数据库主从切换的原因:数据库中经常发生的是“读多写少”,这样读操作对数据库压力比较大,通过采用数据库集群方案, 一个数据库是主库,负责写:其他为从库,负责读,从而实现读写分离增大数据库的容错率. ...
- python-day91--同源策略与Jsonp
一.同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之 ...
- leetcode-algorithms-3 Longest Substring Without Repeating Characters
leetcode-algorithms-3 Longest Substring Without Repeating Characters Given a string, find the length ...
- Mysql优化系列--Innodb引擎下mysql自身配置优化-转
原文链接:http://www.cnblogs.com/kevingrace/p/6133818.html 谢谢楼主 1.简单介绍 InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全 ...
- os模块,序列化模块,json模块,pickle模块
一.os模块os.system("bash command") 运行shell命令,直接显示 os.popen("bash command).read() 运行shell ...
- 抓包工具Charles的简单使用
一.Charles破解 下载安装及破解方法: 1.下载charles并安装 云盘下载地址:Windows 64bit 32bit 2.安装后先打开Charles一次(Windows版可以忽略此步 ...
- Hadoop--Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Starting namenodes on [localhost]
Unable to load native-hadoop library for your platform... using builtin-java classes where applicabl ...