ACM-ICPC 2018 徐州赛区网络预赛 G Trace
程序员文章站
2022-03-13 15:46:42
...
一道长相很水实际也很水但就是没有做出来的题
【题目链接】G Trace
【题目大意】
第一象限有一个海滩,海水从(0,0)处涌出。每一个海浪有参数x、y,表示冲刷掉矩形(0,0)-(x,y)内的痕迹并保留自己的痕迹。求n次冲刷后海岸上的痕迹总长。
【Input】
3
1 4
4 1
3 3
【Output】
10
【Hint】
【解题思路】
正着遍历有覆盖操作,很麻烦,我们倒着想。
每一次涨潮,痕迹从(x,y)向坐标轴延伸。那么我们只需要找x和y方向第一条拦住它的痕迹即可。丢到set里用lower_bound( ) 实现。
eg:(1,4)在x方向上被x=0挡住,在y方向上被y=3挡住。)
【代码】
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <set>
using namespace std;
typedef long long ll;
const int maxn=10000000+5;
const int inf=0x3f3f3f3f;
const int MAXN = 3e5;
int a[maxn],b[maxn],n;
set<int> x,y;
int main()
{
cin>>n;
for (int i=n;i>0;i--) {
scanf("%d%d",&a[i],&b[i]);
}
ll sum=0;
x.insert(0);
y.insert(0);
for (int i=1;i<=n;i++) {
set<int>::iterator it =x.lower_bound(a[i]);
sum+=a[i]-*(--it);
x.insert(a[i]);
it=y.lower_bound(b[i]);
sum+=b[i]-*(--it);
y.insert(b[i]);
}
cout<<sum<<endl;
return 0;
}
推荐阅读
-
ACM-ICPC 2018 徐州赛区网络预赛 H - Ryuji doesn't want to study
-
ACM-ICPC 2018 徐州赛区网络预赛 H. Ryuji doesn't want to study(线段树区间求和)
-
ACM-ICPC 2018 徐州赛区网络预赛 H. Ryuji doesn't want to study—— 树状数组
-
ACM-ICPC 2018 徐州赛区网络预赛 H Ryuji doesn't want to study(线段树 两种做法)
-
【ACM-ICPC 2018 徐州赛区网络预赛】H题 Features Track ---- 树状数组
-
ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (线段树维护)
-
计蒜客 Trace(2018 ICPC亚洲区域赛网络赛 徐州 G)(线段树)
-
ACM-ICPC 2018 徐州赛区网络预赛 Trace
-
Trace-----ACM-ICPC 2018 徐州赛区网络预赛
-
ACM-ICPC 2018 沈阳赛区网络预赛 F题 Fantastic Graph