您的位置:首页 > 其它

P1007_独木桥

2017-08-10 16:51 204 查看
传送门

解题思想:仔细考虑会发现,两个人相遇无论转不转身两个人所走的 总路程 都是一样的,那么时间也都一样,所以我们大可让两个士兵相遇后继续直走。

代码实现:对于每一个士兵,只有向左或向右两种选择对吧。那么最大值也就是max(向左走所用时间,向右走所用时间),最小值也是一样。

注意:有一个细节要考虑到,因为每一个士兵是同时开始走,而不是一个一个走。所以max/min(向左走所走路程,向右走所走路程)还要在减去已经过去的时间,但是这有可能为负,也就是在这之前那个士兵已将走完,所以应该加0。

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<ctime>
#include<cstring>
using namespace std;
int maxn,minn;
int main()
{
int n,l;
scanf("%d%d",&l,&n);
for(int i=1;i<=n;i++)
{
int a;
scanf("%d",&a);
maxn+=max(0,max(a,l-a+1)-maxn);
minn+=max(0,min(a,l-a+1)-minn);
}
printf("%d %d",minn,maxn);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: