题目分享N
题意:有辆车,有r行,s*2列,在第s列和第s+1列之间有个过道,出口在第r+1行的过道处,现在给出每个人的位置(行号和列号),每人每次只能动一格,问最少耗费多长时间全员才能逃出去
分析:假如车上只有一个人,这个人位于x行y列,那他的逃生时间很好求
若y<=s,那所需时间就是s+1-y(走到过道)+r+1-x(在过道中走到出口)=s+r-x-y+2
若y>s,那其实可以将y对称到y'上,然后y'就能和y<=s时一样计算了,而y'=2*s+1-y,也就是说所需的时间是s+r-x-y'+2,其中y'=2*s+1-y
再进一步分析,假如车上有两个人,那么这两个人所需的时间怎么求呢?
很明显,如果这两个人不会相遇的话,所需的时间就是他们时间的最大值,而如果他们相遇的话,那么所需时间就要加一
那如何判断两人是否相遇呢?
假如两人位置分别为x1,y1 x2,y2 默认这两个人无论坐在过道的左侧还是右侧都对称到左侧考虑,为了方便计算,不需要分类讨论
那么这里就有一个问题到底能不能这么对称到左侧考虑呢?或者说如果有个人原来坐在右侧,如果让他做到左侧对称位置上去的话,会不会改变结果呢?
如果两个人恰好就是坐在对称的位置上,那么如果右侧不对称到左边的话,他们两人显然会在过道中间相遇
而对称到左边的话,右边的人显然和左边的人在没开始走的时候就发生了“相遇”,这里就必须要让一个人先走,此时另一个不动,然后他们再继续走,并且显然不会再相遇
但这貌似改变了两个人相遇的地点,不会改变结果吗?再回看到右边不对称到左边的时候,如果这两人在这时候也遵循一个先走,另一个不动的原则,然后他们再走就也不会相遇
也就是说对称与不对称可以用同一种走法来保证时间最大,也就是说走法相同且不影响结果
而如果两个人没有做到对称位置,那显然两个人在自己这行走到过道之前是不会与另一个人相遇的,而如果两个人在走到过道的时候相遇了,而右侧对称过去并走向过道所花的时间是相同的,自然也不会影 响相遇的结果,当然如果两人不相遇也是同理的
所以将右侧对称到左边的考虑是对结果以及运动过程没有影响的,那么这两个人到达对应行过道的时间就是s+1-y1和s+1-y2,而如果x1<=x2,那么他们到达x2行的过道所花的时间就是s+1-y1+x2-x1和s+1-y2,而且他们俩相遇也只可能在这里相遇,并且相遇的条件是到达该地的时间相等,即s+1-y1+x2-x1=s+1-y2,将x2移到右边,并给等式两边都加(r+1)就可以得到s+r-x1-y1+2=s+r-x2-y2+2,这正好是两人单独走到出口所用的时间,也就是说两人相遇与他们到达出口时间相等是等价的
而如果两个人在路上发生了相遇,那么就需要让一个人先走,而和他相遇的其他人要留在原地,当然在这时候可能会有其他人走到这个相遇的位置,那么这段过程的实质就是相遇地点中的一个人与没有相遇的人,到达出口所需的时间-1,其他人不变,那么如何用程序来模拟这个过程呢?
其实很简单,因为每次只能有一个人从出口出去,而且出去的顺序一定是耗时少的在前,耗时多的在后,所以将所有人所需时间排好序之后,用一个变量记录当前的人出去所用的时间,如果遇到相等的话就+1,如果所需时间小于当前时间的话那就说明这个人后来也被堵在了相遇的地方,那也+1,如果没有发生相遇也就是所需时间大于当前的时间,那么就可以将当前时间附成该人所需时间即可
代码:
题目分享N的更多相关文章
- 2019年腾讯PHP程序员面试题目分享
有需要学习交流的友人请加入交流群的咱们一起,有问题一起交流,一起进步!前提是你是学技术的.感谢阅读! 点此加入该群jq.qq.com 1. php 的垃圾回收机制 PHP 可以自动进行内存管理,清除 ...
- 20190924-LeetCode解数独题目分享
解决数独 题目描述 编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以 ...
- 题目分享E 二代目
题意:一棵点数为n的树,每个节点有点权,要求在树中中找到一个最小的x,使得存在一个点满足max(该点点权,该点相邻的点的点权+1,其他点的点权+2)=x 分析:首先要能把题目转化为上述题意 首先题目让 ...
- 题目分享D 二代目
题意:给定一个T条边的无向图,求S到E恰好经过N条边的最短路径 T≤100 N≤1000000 分析:(据说好像假期学长讲过) 首先很容易想到的是dp[i][j][k]表示从i到j经过k条边的最短路径 ...
- 题目分享C 二代目
题意:一个数列是由 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6.....组成,也就是1-1,1-2,1-3......并且如果遇到多位数也要拆成数字比如1-10 ...
- 题目分享X
题意:一张票有n位数,如果这张票的前一半数字的和等于后一半数字的和(n一定是偶数),就称这张票为快乐票.有些数被擦除了,标记为’?’(’?‘的个数也是偶数),现在Monocarp 和 Bicarp 进 ...
- 题目分享V
题意:现在两个人做游戏,每个人刚开始都是数字1,谁赢了就能乘以k^2,输的乘以k(k可以是任意整数,每次不一定相同)现在给你最终这两个人的得分,让你判断是否有这个可能,有可能的话Yes,否则No. 分 ...
- 题目分享T
题意:蛐蛐国里现在共有n只蚯蚓(n为正整数).每只蚯蚓拥有长度,我们设第i只蚯蚓的长度为a_i(i=1,2,...,n),并保证所有的长度都是非负整数(即:可 能存在长度为0的蚯蚓).每一秒,神刀手会 ...
- 题目分享P
题意: 给出一棵n个节点的树,这棵树的每条边有一个权值,这个权值只可能是0或1. 在一局游戏开始时,会确定一个节点作为根.接下来从女生开始,双方轮流进行 操作.当一方操作时,他们需要先选择一个不为根的 ...
- 题目分享H 二代目
题意:有m个限制,每个限制l1,r1,l2,r2四个数,限制了一个长度为n的数第l1到r1位要与第l2到r2相同,保证r1-l1=r2-l2,求在限制下一共有多少种数 分析: 暴力的话肯定是从l1-r ...
随机推荐
- "Tag标签"组件:<tags> —— 快应用组件库H-UI
 <import name="tags" src="../Common/ui/h-ui/text/c_tags"></import> ...
- xftp连接centos7
1.下载xftp文件,并正常进行安装 2.安装好之后运行,并新建会话,此时可见如下界面: 注意: 名称,可随便输入,自己能看懂是什么就行 主机,输入当前Linux服务器的ip(如何获取服务器 ...
- IntelliJ IDEA 在方法大括号中{}点击回车多出一个},如何取消
在 File - settings - Editor - General- Smart Keys - Enter 去掉 Insert pair '}' 的对勾就可以了
- 全网最全C#实习面试题目
整个内容是我在春招面试时候整理的一些题目,里面涵盖有网上搬运的(由于当时没有记录来源,如果有转载没标注来源,请与我联系),还有我面试到的.整个排版很乱,后期我会一步一步整理.整个内容大概快有两万字.整 ...
- L4文本预处理
文本预处理 timemachine.txt数据下载地址 链接:https://pan.baidu.com/s/1RO2OLyTRQZ90HJUW7V7BCQ 提取码:bjox NLTK数据集下载 链接 ...
- 【Jenkins】参数化引用
我们在Jenkins里设置了参数如下 1. Jenkins中引用 shell引用 $env windows bat引用 %env% 在git等源码管理时,调用参数的格式${env} 2. jmete ...
- E - Dungeon Master BFS
[NWUACM] 你被困在一个三维的空间中,现在要寻找最短路径逃生!空间由立方体单位构成你每次向上下前后左右移动一个单位需要一分钟你不能对角线移动并且四周封闭是否存在逃出生天的可能性?如果存在,则需要 ...
- python爬虫实例,一小时上手爬取淘宝评论(附代码)
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 1 明确目的 通过访问天猫的网站,先搜索对应的商品,然后爬取它的评论数据. ...
- mybatis源码配置文件解析之二:解析settings标签
在前边的博客中分析了mybatis解析properties标签,<mybatis源码配置文件解析之一:解析properties标签>.下面来看解析settings标签的过程. 一.概述 在 ...
- python3爬虫 爬取动漫视频
起因 因为本人家里有时候网速不行,所以看动漫的时候播放器总是一卡一卡的,看的太难受了.闲暇无聊又F12看看.但是动漫网站却无法打开控制台.这就勾起了我的兴趣.正好反正无事,去寻找下视频源. 但是这里事 ...