2019.3.2jzoj

1320. 拯救奶牛
贝希被困在一个三角形的迷宫之中。这个迷宫有N行(1 <= N <= 1000000)。比如下图是一个3行的迷宫。
  
  迷宫的第i行有2*i-1个三角形,从左到右分别编号为(i,1)、(i,2)等等。贝希每次可以从一个三角形走到任意一个一个跟当前的三角形有邻边的三角形。比如说,如果她目前处于三角形(3,3),那么,她可以走到三角形(3,2)、(3,4)和(4,4)。贝希每次需要一分钟的时间来移动到下一个三角形。
  
  农夫约翰发现贝希被困了!于是她跟踪贝希的iPhone手机(可怜的触摸屏~),得知贝希目前处于三角形(Si,Sj)。因为约翰对贝希有着无穷无尽的浓浓爱意,所以他希望贝希能尽可能快地回到他的身边。
  在迷宫的三角形之中,有M(1 <= M <= 10000)个是出口。在任何一个出口都可以让贝希逃离迷宫。一旦贝希进入一个作为出口的三角形,她用多一分钟就可以逃离这个迷宫。
  找到一个可以让贝希逃离迷宫最小时间T,并输出她应该从哪一个出口逃离迷宫,这个出口记为(OUTi,OUTj)。如果有多个出口同时需要时间T,输出那个行的编号小的出口,如果仍然有多个出口,输出那个列的编号小的。
Input
  第一行:两个由空格隔开的整数:N和M。
  第二行:两个由空格隔开的整数:Si和Sj。
  第三到第M+2行:第i+2行有两个由空格隔开的整数Ei和Ej,表示三角形(Ei,Ej)是出口。

Output
  第一行:两个由空格隔开的整数:OUTi和OUTj。
  第二行:一个单独的整数:T。
 
Sample Input
4 2
2 1
3 5
4 4 
Sample Output
4 4
4

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+10;
int n,m,s,t;
bool  k=0;//模拟
struct node{int w,x,y;
}a[maxn];
inline int read(){int x=0,w=0;char ch=0;while(!isdigit(ch)) {w|=ch=='-';ch=getchar();}while(isdigit(ch)) {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}return w?-x:x;
}
bool cmp(node a,node b){if(a.w==b.w) {if(a.x==b.x) return a.y<b.y;else return a.x<b.x;}else return a.w<b.w;
}
void pd(int x,int y,int id){int t1=0,t2=0,t3=0,t4=0;int d=(x-s)<<1;if(k){if(x>s){t1=t+d-1;t2=t+d;//rt3=t;t4=t+1;//lif(y==t1) a[id].w=d;else if(y==t2) a[id].w=d+1;else if(y==t3) a[id].w=1+d;else if(y==t4) a[id].w=d;else{if(y>t2) a[id].w=y-t2+d+1;else if(y<t3) a[id].w=t3-y+1+d;else{if(y%2) a[id].w=d+1;else a[id].w=d; }}return;}else if(x==s){a[id].w=abs(y-t)+1;return;       }else{d=(s-x)<<1;t1=t-d-1;t2=t-d;//rt3=t;t4=t+1;//lif(y==t1) a[id].w=d+2;else if(y==t2) a[id].w=d+1;else if(y==t3) a[id].w=1+d;else if(y==t4) a[id].w=d+2;// else{if(y<t1) a[id].w=d+t1-y+2;else if(y>t4) a[id].w=y-t4+2+d;else{if(y%2) a[id].w=d+1;else a[id].w=d+2; }}return;}}else{if(x>s){t1=t+d+1;t2=t+d;//rt3=t;t4=t-1;//lif(y==t1) a[id].w=d+2;else if(y==t2) a[id].w=d+1;else if(y==t3) a[id].w=1+d;else if(y==t4) a[id].w=d+2;else{if(y>t1) a[id].w=y-t1+d+2;else if(y<t4) a[id].w=t4-y+2+d;else{if(y%2) a[id].w=2+d;else a[id].w=1+d; }}return;}else if(x==s){a[id].w=abs(y-t)+1;return;        }else{d=(s-x)<<1;t1=t-d;t2=t-d+1;//rt3=t;t4=t-1;//lif(y==t1) a[id].w=d+1;else if(y==t2) a[id].w=d;else if(y==t3) a[id].w=1+d;else if(y==t4) a[id].w=d;// else{if(y<t1) a[id].w=t1-y+d+1;else if(y>t3) a[id].w=y-t3+1+d;else{if(y%2) a[id].w=d;else a[id].w=d+1; }}return;}}
}
int main(){n=read(),m=read();s=read(),t=read();int x,y;if(t%2) k=1;//奇数 for(int i=1;i<=m;i++){a[i].x=read(),a[i].y=read();pd(a[i].x,a[i].y,i);        }sort(a+1,a+m+1,cmp);printf("%d %d\n",a[1].x,a[1].y);printf("%d",a[1].w);return 0;
}

1320. 拯救奶牛相关推荐

  1. 帮奶牛找对象?华为云AI黑科技大揭秘

    AI可以用来做什么? 华为云BU总裁郑叶表示,"AI不是一个独立的产品,而是一种 '基本生产力',适用于大部分经济活动,将改变每一个行业.企业和职业,产生倍增效应." 于是,华为的 ...

  2. 6个超赞的免费神器工具,拯救贫民窟的你!

    之前跟给大家分享了很多期的APP.PC软件.在线网站等,其中有免费的也有付费的,但大家的观点都出奇的一致,那就是"可以接受免费的有缺点,却难以接受体验更棒的付费软件." 看来大家还 ...

  3. 2021-2027全球与中国奶牛冻精市场现状及未来发展趋势

    [报告类型]产业研究 [报告价格]¥4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了全球与中国奶牛冻精行业市场行业相关概述.全 ...

  4. 联想拯救者Y9000-ubuntu-nvidia-驱动安装

    概述 由于联想拯救者Y9000的硬件都比较新,所以在安装ubuntu 的时候会有很多驱动的问题,本文主要讲解安装nvidia驱动的问题,如网卡.触摸板无效的其他问题请在我的其他文章中查找 友情提示 安 ...

  5. 2018.10.22-dtoi1443奶牛逃亡(cowrun)

    题目描述: Farmer John忘记修复他农场篱笆上的一个大洞,以至于篱笆围着的N(1<= N <=1,000)只奶牛从大洞中逃脱出来,并在农场里横冲直撞.每头在篱笆外的奶牛每分钟都将给 ...

  6. 近4万Star,登月源码登顶GitHub,这位女程序员“拯救”了阿波罗

    作者 | 伍杏玲 转载自CSDN(ID:CSDNnews) 1969 年 7 月 20 日,"阿波罗 11 号"飞船登月,宇航员尼尔·阿姆斯特朗(Neil Armstrong)成功 ...

  7. 程序员如何用“撞针“拯救35亿地球人?

    春节假期即将结束,有多少程序员朋友已经离开家乡在返回北上广深等工作所在城市的路上?有多少程序员已经开工大吉开始了新一年的代码征程?回首这一个春节,8 部电影在大年初一齐上线,<流浪地球>在 ...

  8. 手机拍视频最怕抖,只能靠AI拯救了

    视学算法报道 转载自:机器之心 编辑:陈萍.维度 视频画面的稳定与否,很大程度上影响着观感的舒适度!如何补偿视频抖动,拯救手抖党,来自台湾大学.谷歌等研究机构的学者,提出了防抖新算法,视频拍摄--稳. ...

  9. 【Python基础】拯救你奇丑无比的Python代码的神器

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 Python编程语言需要遵循PEP8规范,但是初学者往往记不住这个 ...

  10. 忘了python关键语句?这份备忘录拯救你的记忆

    忘了Python关键语句?这份备忘录拯救你的记忆 今天要介绍的 Python 3 Cheat Sheet 由法国国家科学研究中心(CNRS)的法国机械工程与信息技术实验室(LIMSI)的工程师 Lau ...

最新文章

  1. Java 8 开发的 4 大顶级技巧,你都知道吗 ?
  2. windows套接字IOCP模型
  3. C++之virtual 方法
  4. IO字节缓冲流的最简单读写源码
  5. 战双帕弥什自抽号怎么使用_战双帕弥什新S冰露怎么玩《战双帕弥什》新S冰露玩法技巧...
  6. ASP.Net导出EXCEL表(小结)
  7. 域服务器内置用户组说明
  8. 【Linux】查询 OS、CPU、内存、硬盘信息
  9. mysql+alter+int_MySQL Alter命令
  10. 爬虫--07:MongoDB
  11. html修改成透明色,在html2canvas中将透明颜色更改为白色
  12. 基于银河麒麟 V10 系统安装和卸载 DM8 数据库
  13. pandas groupby 数据丢失问题
  14. 这些和编程有关的日本动漫,你都看过那几部?
  15. 自回归滞后模型进行多变量时间序列预测
  16. 如何查看 ananconda 的环境(虚拟环境)安装包位置
  17. linux mint 17.3中文输入法,linux mint17 中文输入法 五笔(or 拼音)
  18. spring boot 打包后乱码问题
  19. 制作 macOS Sierra U盘USB启动安装盘方法教程 (亲测)
  20. Marklogic学习 —— XQuery语法之排序

热门文章

  1. java append函数_请详细说一下java中append()的方法.
  2. [游戏程序] 经典游戏服务器端架构概述
  3. 2022年潜江中级工程师职称申报材料和申报渠道是什么呢?甘建二
  4. mongodb 启动报错 ERROR: child process failed, exited with error number 1
  5. Zookeeper Leader选举算法及选举过程
  6. [Synth 8-2543] port connections cannot be mixed ordered and named [“F:/FPGA_Prj/GPIC_2000/GPIC_AB/V1
  7. sourcetree添加gitignore不生效解决方案
  8. 今年能不能回家全靠这3个抢票工具了|2022版
  9. 【5G核心网】5GC核心网之网元NSSF
  10. 查看表内容 mysql_mysql查询表内容