Luogu P1007 独木桥

image

题解

思路来源于Here
贪心的将士兵撞面返回这个过程,想象成互相穿过的过程,因为每个士兵都可以视为相同的单位,所以题目也就可以转化成简单的贪心取向左或者走的最大值,最小值。
这个思路简直妙到家了,我一直在思考相撞后的复杂过程应该怎么处理,因为好多个士兵的相撞是多个不同的过程,过程之间又有干扰。。。看了题解就很明白了。

Code

   int L,n;cin >> L >> n;
   vector<int> a(n);
   for(int i = 0;i < n;++i) cin >> a[i];
   int minv = 0,maxv = 0;
   for(int i = 0;i < n;++i) {
      minv = max(minv,min(a[i],L - a[i] + 1));
      maxv = max(maxv,max(a[i],L - a[i] + 1));
   }
   cout << minv << ' ' << maxv << endl;
posted @ 2021-06-06 01:05  Wise_4  阅读(28)  评论(0编辑  收藏  举报