2018 ACM-ICPC徐州站网络赛 G题
There's a beach in the first quadrant. And from time to time, there are sea waves. A wave ( xxx , yyy ) means the wave is a rectangle whose vertexes are ( 000 , 000 ), ( xxx , 000 ), ( 000 , yyy ), ( xxx , yyy ). Every time the wave will wash out the trace of former wave in its range and remain its own trace of ( xxx , 000 ) -> ( xxx , yyy ) and ( 000 , yyy ) -> ( xxx , yyy ). 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≤50000)n(n \le 50000)n(n≤50000).
The next nnn lines,each contains two numbers xxx yyy ,( 0<x0 < x0<x , y≤10000000y \le 10000000y≤10000000 ),the iii-th line means the iii-th second there comes a wave of ( xxx , yyy ), it's guaranteed that when 1≤i1 \le i1≤i , j≤nj \le nj≤n ,xi≤xjx_i \le x_jxi≤xj and yi≤yjy_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=103+3+1+1+1+1=10
样例输入
- 3
- 1 4
- 4 1
- 3 3
样例输出
- 10
题目来源
ACM-ICPC 2018 徐州赛区网络预赛
题意:
有n个矩形按顺序出现在坐标轴上,后出现的矩形会覆盖之前出现的矩形, 问最后没被覆盖的边的长度(不含在坐标轴上的边)。
分析::
首先看到这题最先想到的就应该是按矩形加入的顺序从后往前开始计算边长。又因为题目有要求:不存在一个矩形被另一个矩形完全包含,所以说每一个矩形都有突出来的部分可以被计算在答案内。我们从后往前枚举矩形,被枚举过的矩形的边长加入到set中,新加入的矩形的计算方法就是根据当前矩形的边长在set中找到小于当前边长的最长边长(二分),然后更新答案:ans+=(当前边 - set中找到的小于当前边的最大边)。
有一个注意点是二分的时候用的upper_bound()需要使用set内置的,而不是直接调用STL,直接调用STL的话时间大概是(1100ms左右 TLE),使用set内封装的upper_bound的话只要(90ms)。。。。(震惊)
AC code:
- #include<bits/stdc++.h>
- using namespace std;
- set<int> x;
- set<int> y;
- set<int>::iterator tx,ty;
- int X[],Y[];
- int main()
- {
- int n;
- scanf("%d",&n);
- x.insert();
- y.insert();
- for(register int i=;i<n;++i)
- {
- scanf("%d%d",&X[i],&Y[i]);
- }
- long long ans=;
- for(int i=n-;i>=;--i)
- {
- tx=x.upper_bound(X[i]);//使用set内封装的二分
- tx--;
- ty=y.upper_bound(Y[i]);//使用set内封装的二分
- //*ty=(upper_bound(y.begin(),y.end(),Y[i]))超时!!!!
- ty--;
- ans+=(X[i]-*tx);
- ans+=(Y[i]-*ty);
- x.insert(X[i]);
- y.insert(Y[i]);
- }
- printf("%lld\n",ans);
- return ;
- }
2018 ACM-ICPC徐州站网络赛 G题的更多相关文章
- 2019 ICPC南京站网络赛 H题 Holy Grail(BF算法最短路)
计蒜客题目链接:https://nanti.jisuanke.com/t/41305 给定的起点是S,终点是T,反向跑一下就可以了,注意判负环以及每次查询需要添加边 AC代码: #include< ...
- 2016 ACM-ICPC 青岛站网络赛G题 题解
[参考博客][https://blog.csdn.net/Tawn0000/article/details/82255682] 题意: 将n个数按照每k个一组来合并,合并需要花费的cost是两个数的长 ...
- 2013 acm 长沙网络赛 G题 素数+枚举 Goldbach
题目 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3856 先预处理求出两个素数的和与积,然后枚举n-prime和n/pr ...
- ICPC青岛站网络赛-C-高效模拟
嗯这道辣鸡题,当时我队友写了错误的代码,我稍微改动了,思路基本上是对了,但是就是超时,我第一直觉是我这个算法思路是没有任何问题的,但是就是TLE,我感觉这个算法已经优化的不能再优化了啊...后面就怀疑 ...
- 2014 ACM/ICPC 鞍山赛区网络赛(清华命题)
为迎接10月17号清华命题的鞍山现场赛 杭电上的题目 Biconnected(hdu4997) 状态压缩DP Rotate(hdu4998) 相对任一点的旋转 Overt(hdu4999 ...
- hdu 5874 Friends and Enemies icpc大连站网络赛 1007 数学
#include<stdio.h> #include<iostream> #include<algorithm> #include<math.h> #i ...
- hdu 5876 Sparse Graph icpc大连站网络赛 1009 补图最短路
BFS+链表 代码改自某博客 #include<stdio.h> #include<iostream> #include<algorithm> #include&l ...
- ACM-ICPC 2018 徐州赛区网络预赛 G题
题目链接: https://nanti.jisuanke.com/t/31459 具体思路: 先顺序输入,然后回溯,假设已经加入了n个点,那么在加入的同时,首先看一下原先x轴上已经有过的点,找到第一个 ...
- 2017 ACM/ICPC 南宁区 网络赛 Overlapping Rectangles
2017-09-24 20:11:21 writer:pprp 找到的大神的代码,直接过了 采用了扫描线+线段树的算法,先码了,作为模板也不错啊 题目链接:https://nanti.jisuanke ...
随机推荐
- centos 7 防火墙相关操作
centos 7 防火墙相关操作 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewal ...
- 在 Docker 中已运行的 container 如何修改 run 时的 env
https://www.cnblogs.com/xiaouisme/p/9837221.html 首先不推荐这样做,如需修改配置,应删掉重新部署. 其次,可以进行如下操作(未测试,不知道仅重启 con ...
- 团队展示&选题 (白衣天使队)
作业详见此地址: https://www.cnblogs.com/bbplus/p/11735449.html
- os模块,sys模块,json和pickle模块,logging模块
目录 OS模块 sys模块 json和pickle模块 序列化和反序列化 json模块 pickle logging模块 OS模块 能与操作系统交互,控制文件 / 文件夹 # 创建文件夹 import ...
- day10 作业
猜年龄升级版 ''' 1. 可以直接玩猜年龄游戏,不需要登录 2. 登录成功后玩猜年龄游戏 3. 猜年龄猜中后,可以选择两次奖品 4. 注册的用户名不能重复注册 ''' import random p ...
- tar命令-解压和压缩文件
tar命令 可以用来压缩打包单文件.多个文件.单个目录.多个目录. Linux打包命令_tar tar命令可以用来压缩打包单文件.多个文件.单个目录.多个目录. 常用格式: 单个文件压缩打包 tar ...
- PAC在异常检测中的应用
注:资料均来源于网络,本文只做知识分享,如侵立删,谢谢. PAC算法背景简述: 在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观测,收集大量数据后进行分析寻找规律.多变量大数据集无疑会为研 ...
- 0629 Flink Meetup 北京站 PPT下载
工程实用问题解决方案介绍,实用
- Linux服务器惨遭挖矿
昨天为了协助客户测试业务,帮客户开通了一台云主机,因为是测试环境所以密码设置的很简单:1qaz@WSX,今天登陆的是否发现密码认证不通过了,确定机器是被黑掉了,估计多半是被国外小哥入侵挖矿了,记录 ...
- C++面向对象程序设计学习笔记(2)
C++在非面向对象方面的扩充 C++向下兼容C语言,因此C语言中的语法在C++中依然成立 输入输出 C++添加了标准输入流对象cin和标准输出流对象cout来进行输入输出, 例: #include&l ...