[AtCoder 2702]Fountain Walk - LIS
Problem Statement
In the city of Nevermore, there are 108 streets and 108 avenues, both numbered from0 to 108−1. All streets run straight from west to east, and all avenues run straight from south to north. The distance between neighboring streets and between neighboring avenues is exactly 100 meters.
Every street intersects every avenue. Every intersection can be described by pair(x,y), where x is avenue ID and y is street ID.
There are N fountains in the city, situated at intersections (Xi,Yi). Unlike normal intersections, there's a circle with radius 10 meters centered at the intersection, and there are no road parts inside this circle.
The picture below shows an example of how a part of the city with roads and fountains may look like.
City governors don't like encountering more than one fountain while moving along the same road. Therefore, every street contains at most one fountain on it, as well as every avenue.
Citizens can move along streets, avenues and fountain perimeters. What is the shortest distance one needs to cover in order to get from intersection (x1,y1) to intersection (x2,y2)?
Constraints
- 0≤x1,y1,x2,y2<108
- 1≤N≤200,000
- 0≤Xi,Yi<108
- Xi≠Xj for i≠j
- Yi≠Yj for i≠j
- Intersections (x1,y1) and (x2,y2) are different and don't contain fountains.
- All input values are integers.
Input
Input is given from Standard Input in the following format:
x1 y1 x2 y2
N
X1 Y1
X2 Y2
:
XN YN
Output
Print the shortest possible distance one needs to cover in order to get from intersection (x1,y1) to intersection (x2,y2), in meters. Your answer will be considered correct if its absolute or relative error doesn't exceed 10−11.
Sample Input 1
1 1 6 5
3
3 2
5 3
2 4
Sample Output 1
891.415926535897938
One possible shortest path is shown on the picture below. The path starts at the blue point, finishes at the purple point and follows along the red line.
Sample Input 2
3 5 6 4
3
3 2
5 3
2 4
Sample Output 2
400.000000000000000
Sample Input 3
4 2 2 2
3
3 2
5 3
2 4
Sample Output 3
211.415926535897938
愚人节赛的第二题(滑稽)。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define y1 Y1
using namespace std;
const int maxn=,inf=1e8;
const double qarc=acos(-)*5.0;
int n,cnt,x1,x2,y1,y2;
int f[maxn],g[maxn],b[maxn];
struct p{int x,y;}a[maxn];
inline int read(){
int x=,f=;char ch=getchar();
for(;ch<''||ch>'';f=ch=='-'?-:,ch=getchar());
for(;ch>=''&&ch<='';x=x*+ch-,ch=getchar());
return x*f;
}
bool cmp(p a,p b){return a.x<b.x;}
int main(){
x1=read();y1=read();x2=read();y2=read();n=read();
for(int i=;i<=n;i++)a[i].x=read(),a[i].y=read();
if(x1>x2){
x1=inf-x1;x2=inf-x2;
for(int i=;i<=n;i++)a[i].x=inf-a[i].x;
}
if(y1>y2){
y1=inf-y1;y2=inf-y2;
for(int i=;i<=n;i++)a[i].y=inf-a[i].y;
}
sort(a+,a+n+,cmp);
int tot=,ans1=;
for(int i=;i<=n;i++)
if(a[i].x>=x1&&a[i].x<=x2&&a[i].y>=y1&&a[i].y<=y2)
b[++tot]=a[i].y;
for(int i=;i<=tot;i++){
f[i]=lower_bound(g+,g+ans1+,b[i])-g;
if(f[i]>ans1)ans1=f[i],g[ans1]=b[i];
else g[f[i]]=min(g[f[i]],b[i]);
}
double ans=(double)(x2+y2-x1-y1)*100.0;
ans-=ans1*(-qarc);
if(ans1==min(y2-y1+,x2-x1+))ans+=qarc;
printf("%.15lf",ans);
return ;
}
[AtCoder 2702]Fountain Walk - LIS的更多相关文章
- 【agc019C】Fountain Walk
Portal --> agc019C Description 有一个\(10^8*10^8\)的网格图,一格距离为\(100\),第\(x\)条竖线和第\(y\)条横线的交点记为\((x,y)\ ...
- Agc019_C Fountain Walk
传送门 题目大意 给定网格图上起点和终点每个格子是长为$100$米的正方形,你可以沿着线走. 平面上还有若干个关键点,以每个关键点为圆心,$10$为半径画圆,表示不能进入圆内的线,但是可以从圆周上走, ...
- 【AtCoder】AGC019
A - Ice Tea Store 算一下每种零售最少的钱就行,然后优先买2,零头买1 #include <bits/stdc++.h> #define fi first #define ...
- AtCoder Beginner Contest 085(ABCD)
A - Already 2018 题目链接:https://abc085.contest.atcoder.jp/tasks/abc085_a Time limit : 2sec / Memory li ...
- AtCoder Grand Contest 031 简要题解
AtCoder Grand Contest 031 Atcoder A - Colorful Subsequence description 求\(s\)中本质不同子序列的个数模\(10^9+7\). ...
- AtCoder Beginner Contest 165
比赛链接:https://atcoder.jp/contests/abc165/tasks A - We Love Golf 题意 区间 $[a, b]$ 中是否存在 $k$ 的倍数. 代码 #inc ...
- Lis日常维护
1.[问题]护士站打印LIs条码,出来是PDF格式的 [解决]在文件夹Client\NeusoftLis\Xml\Print.xml中把BarcodePrint Name的值改成安装的斑马打印机名(不 ...
- uva10635 LIS
Prince and PrincessInput: Standard Input Output: Standard Output Time Limit: 3 Seconds In an n x n c ...
- python os.walk()
os.walk()返回三个参数:os.walk(dirpath,dirnames,filenames) for dirpath,dirnames,filenames in os.walk(): 返回d ...
随机推荐
- 03中间件mycat对pxc集群的分片处理
安装第二个pxc集群 作为mycat的第二个分片 直接拷贝其中的一个虚拟机,然后还原到最初的状态,这样会小很多,启动改一下IP和基础配置,然后再次拷贝这个虚拟机两份改IP重启即可 正常安装pxc集群即 ...
- Cassandra 原理介绍
Cassandra最初源自Facebook,结合了Google BigTable面向列的特性和[Amazon Dynamo](http://en.wikipedia.org/wiki/Dynamo(s ...
- python学习第34天
# 互斥锁# 进程之间的数据共享 # 关于数据安全的问题# 进程池(自己了解,后面线程部分还会讲) # from multiprocessing import Pool# 线程的概念 (面试的重点)# ...
- P3966 [TJOI2013]单词
P3966 [TJOI2013]单词 题目描述 小张最近在忙毕设,所以一直在读论文.一篇论文是由许多单词组成但小张发现一个单词会在论文中出现很多次,他想知道每个单词分别在论文中出现了多少次. 输入输出 ...
- mysql 与 oracle 的连表update
mysql: update 表A a,表B b set a.xx=b.xx where a.id=b.id; oracle update 表A set a.xx=(select b.xx from 表 ...
- 论文阅读笔记五十三:Libra R-CNN: Towards Balanced Learning for Object Detection(CVPR2019)
论文原址:https://arxiv.org/pdf/1904.02701.pdf github:https://github.com/OceanPang/Libra_R-CNN 摘要 相比模型的结构 ...
- OpenCV-Python:霍夫变换
霍夫变换常用来在图像中提取直线和圆等几何形状.如下图: 我们下面来看看如何使用霍夫变换来检测直线.一条直线可以用数学表达式 y = mx + 或者 ρ = xcosθ + y sinθ表示(极坐标) ...
- MVC Bundle生成的css路径问题
项目是嵌套在主站的一个子站点,结果用CssRewriteUrlTransform来将相对目录路径改成相对网站根目录路径的时候发现少了虚拟目录的路径.最终解决方案: /// <summary> ...
- ubuntu tomcat 8.5.33 开启https
用jdk自带的个工具生成数字证书: han@ubuntu:~$ sudo $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keyst ...
- Linux禁止普通用户su至root
linux系统为了限制权限,有时候需要禁止普通用户su到root用户 为禁止普通用户su至root,需要分别修改/etc/pam.d/su和/etc/login.defs两个配置文件. 二.详细配置 ...