Luogu P1007 独木桥
题解
思路来源于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;