博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACM-ICPC 2018 徐州赛区网络预赛 G. Trace
阅读量:5375 次
发布时间:2019-06-15

本文共 2304 字,大约阅读时间需要 7 分钟。

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(n50000).

The next nn lines,each contains two numbers xyy ,( 0 < x0<x , y \le 10000000y10000000 ),the ii-th line means the ii-th second there comes a wave of ( xx , yy ), it's guaranteed that when 1 \le i1i , j \le njn ,x_i \le x_jxixj and y_i \le y_jyiyj 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

样例输入复制

31 44 13 3

样例输出复制

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

 

 

 

 

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

 

#include 
using namespace std;long long gao(vector
vec) { int sz = vec.size(); set
st; long long ans = 0; for (int i = sz-1; i >= 0; i--) {//倒着访问 set
::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) == 1) { vector
vec1, vec2; int x,y; while(n--) { scanf("%d%d", &x, &y); vec1.push_back(x); vec2.push_back(y); } cout<

 

 

转载于:https://www.cnblogs.com/Lis-/p/9615092.html

你可能感兴趣的文章
C# 语句 分支语句 switch----case----.
查看>>
反射获取 obj类 的属性 与对应值
查看>>
表单中的readonly与disable的区别(zhuan)
查看>>
win10下安装配置mysql-8.0.13--实战可用
查看>>
周记2018.8.27~9.2
查看>>
MySQL中 1305-FUNCTION liangshanhero2.getdate does not exit 问题解决
查看>>
python序列化和json
查看>>
mongodb
查看>>
SSH-struts2的异常处理
查看>>
《30天自制操作系统》学习笔记--第14天
查看>>
LGPL协议的理解
查看>>
1、Python基础
查看>>
Unity The Tag Attribute Matching Rule
查看>>
试着理解下kvm
查看>>
WebService学习总结(二)--使用JDK开发WebService
查看>>
Tizen参考手机RD-210和RD-PQ
查看>>
竞价广告系统-位置拍卖理论
查看>>
策略模式 C#
查看>>
[模板]树状数组
查看>>
设计模式学习的好方法
查看>>