Portal --> agc019C

Description

  有一个\(10^8*10^8\)的网格图,一格距离为\(100\),第\(x\)条竖线和第\(y\)条横线的交点记为\((x,y)\),有一些点上面有半径为\(10\)的喷泉(一个圆),一行或者一列至多一个喷泉,现在一个人要从\((x1,y1)\)走到\((x2,y2)\),只能沿着网格走,遇到喷泉的话可以沿着边缘走,问最短距离

  

Solution

  一开始看错题以为可以不沿着网格走的我真的是太弱智了。。

​  

  因为只能沿着网格走,所以我们肯定只会往一个方向走(不会来回走这样),然后计算一下就会发现。。因为\(2\pi*\frac{1}{4}\)是小于\(10*2\)的,所以我们尽量在有喷泉的地方拐弯,以从左下走到右上为例的话,每次拐弯\(y\)会\(+1\),然后我们又要尽量找有喷泉的地方拐弯,所以其实就是相当于找最长的上升序列

  如果说是从右上走到左下的话就反过来(或者直接把所有的坐标反转一下再进行同样的操作即可)

  一个需要注意的点:如果说最长的上升序列的长度\(=min(abs(x1-x2),abs(y1-y2))+1\),也就是说每一行/每一列都有喷泉的话,答案要再加上\(\frac{1}{4}\)圆周长,因为最后一个喷泉不能拐弯了而是要绕过去

  

  mark:不要一看到有点像几何之类的就怂==又不一定是难题。。。

  mark:贪心什么的。。以及看清楚题目!

  

  代码大概长这个样子

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const double pi=acos(-1);
const int N=2*(1e5)+10,inf=2147483647;
struct F{
int x,y;
void read(){scanf("%d%d",&x,&y);}
friend bool operator < (F x,F y){return x.x<y.x;}
}a[N];
int lis[N],rec[N];
int n,m;
int stx,sty,edx,edy;
double ans;
int Abs(int x){return x<0?-x:x;}
void solve(){
int tmp,len=0;
memset(rec,-1,sizeof(rec));
for (int i=1;i<=lis[0];++i){
if (rec[len]<lis[i]){
rec[++len]=lis[i];
continue;
}
tmp=lower_bound(rec+1,rec+1+len,lis[i])-rec;
rec[tmp]=lis[i];
}
if (len==(edx-stx+1)||len==Abs(sty-edy)+1) ans=pi*5.0;
else ans=0;
ans+=1LL*((edx-stx)+Abs(sty-edy))*100;
ans+=(pi*5.0-20)*len;
printf("%.15lf\n",ans);
} int main(){
#ifndef ONLINE_JUDGE
freopen("a.in","r",stdin);
#endif
scanf("%d%d%d%d",&stx,&sty,&edx,&edy);
if (stx>edx) swap(stx,edx),swap(sty,edy);
scanf("%d",&n);
for (int i=1;i<=n;++i) a[i].read();
sort(a+1,a+1+n);
if (sty>edy){
for (int i=1;i<=n;++i) a[i].y=1e8-a[i].y+1;
sty=1e8-sty+1; edy=1e8-edy+1;
}
lis[0]=0;
for (int i=1;i<=n&&a[i].x<=edx;++i)
if (stx<=a[i].x){
if ((sty>=edy&&edy<=a[i].y&&a[i].y<=sty)||(sty<=edy&&sty<=a[i].y&&a[i].y<=edy))
lis[++lis[0]]=a[i].y;
}
solve();
}

【agc019C】Fountain Walk的更多相关文章

  1. 【xsy1503】 fountain DP

    题目大意:给你$D$个格子,有$n$个喷水器,每个喷水器有一个喷水距离$r_i$. 现在你需要在这$D$个格子中选择$n$个位置按照任意顺序安装这$n$个喷水器,需要满足$n$个喷水器互相喷不到对方. ...

  2. 【BZOJ3470】Freda’s Walk 概率与期望

    [BZOJ3470]Freda’s Walk Description 雨后的Poetic Island空气格外清新,于是Freda和Rainbow出来散步. Poetic Island的交通可以看作一 ...

  3. 带给你灵感:30个超棒的 SVG 动画展示【上篇】

    前端开发人员和设计师一般使用 CSS 来创建 HTML 元素动画.然而,由于 HTML 在创建图案,形状,和其他方面的局限性,它们自然的转向了 SVG,它提供了更多更有趣的能力.借助SVG,我们有更多 ...

  4. 【转】Cocos2d - 观察者模式NotificationCenter

    http://shahdza.blog.51cto.com/2410787/1611575 [唠叨] 观察者模式 也叫订阅/发布(Subscribe/Publish)模式,是 MVC( 模型-视图-控 ...

  5. 【Sharing】如何成为一名黑客

    [声明]此文为转载,只为收藏. 从小到大听说了无数关于“电脑黑客”的故事,比如XXX入侵美国五角大楼,再比如前几年的“熊猫烧香”病毒,这些故事的主角都被我们的媒体称之为“黑客”.其实这些人,更大程度上 ...

  6. 【转】最短路&差分约束题集

    转自:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★254 ...

  7. 【转载】图论 500题——主要为hdu/poj/zoj

    转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  8. 【综述】(MIT博士)林达华老师-"概率模型与计算机视觉”

    [综述](MIT博士)林达华老师-"概率模型与计算机视觉” 距上一次邀请中国科学院的樊彬老师为我们撰写图像特征描述符方面的综述(http://www.sigvc.org/bbs/thread ...

  9. 【CF492E】【数学】Vanya and Field

    Vanya decided to walk in the field of size n × n cells. The field contains m apple trees, the i-th a ...

随机推荐

  1. jdk10 var定义变量的由来

    百家号03-1714:11 题图:by jordhammond from instagram 本文选自聊聊架构公众号,略有修改 以前我们 Java 程序员经常会对其他语言中的 var 关键字耿耿于怀, ...

  2. java控制台编译通过,运行出现找不到或无法加载主类的情况

    参考链接:http://www.knowsky.com/1046493.html 当建了一个包之后(假设建的包的名字为com),找到该java文件的com目录,发现编译能够通过,但是运行的时候出现了一 ...

  3. Final阶段中间产物

    空天猎功能说明书:https://git.coding.net/liusx0303/Plane.git 空天猎代码控制:https://coding.net/u/MR__Chen/p/SkyHunte ...

  4. 除了C语言,C++······竟然还有Z语言?

    只能说自己见识短,头一次听说Z语言.先普及一下吧: Z语言是由牛津大学程序设计研究小组开发的一种形式语言,它是一种以一阶谓词演算为主要理论基础的规约语言,是一种功能性语言.Z语言是将事物的状态和行为用 ...

  5. ResNet笔记

    参考: Deep Learning-TensorFlow (14) CNN卷积神经网络_深度残差网络 ResNet 先前的研究已经证明,拥有至少一个隐层的神经网络是一个通用的近似器,只要提高网络的深度 ...

  6. p4 : a problem about "./behavioral-model"

    当sudo ./behavioral-moel时候会发生这个 这个时候记得要先在 p4factory目录下先执行一下这个 sudo ./tools/veth_setuo.sh 再去执行sudo ./b ...

  7. 第三章 深入Servlet技术

    3.1 配置Servlet <servlet-name>,<servlet-class>是必须配置的,以便于web容器知道浏览器具体访问的是哪个servlet. <ini ...

  8. Profibus基础知识学习——报文

    转自:http://bbs.ednchina.com/BLOG_ARTICLE_3031246.HTM Profibus DP通讯协议简单介绍 一. 首先,Profibus DP通讯协议是一种单一的. ...

  9. ASP.NET MVC 1.0 参考源码索引

    http://www.projky.com/asp.netmvc/1.0/System/Web/Mvc/AcceptVerbsAttribute.cs.htmlhttp://www.projky.co ...

  10. TADOConnection.Close - connection still active on MS-SQL server

    I have several Delphi programs (XE3), that use a TADOConnection to connect to a MS-SQL Server. I rec ...