USACO12JAN]爬山Mountain Climbing

我们可以证明,本题的最优解即为max(总上山时间+最快奶牛下山时间,总下山时间+最快奶牛上山时间)
首先我们可以知道,当上山总时间大于下山总时间时,所有奶牛总上山时间恒定。
而最后总有一只奶牛在上山总时间后在山顶,要想最优,只要让在山上的那只奶牛下山时间最小即可。
下山同理,当上山总时间小于下山总时间时,所有奶牛总下山时间恒定。
在下山之前,总有一只奶牛在山顶(否则他还没上山就下山可能吗),要想最优,只要让在山上的那只奶牛上山时间最小即可
边读边做,每次读入累加上山和下山时间和记录最小上山下山时间最后去max即可


#include <bits/stdc++.h>

#define il inline int
#define re register int
#define LL long long


const int N = 5201314;
using namespace std;

int n,m;
int u,d,p,q;
int minu=N,mind=N;

int main(){     scanf("%d",&n);     for ( re i=1;i<=n;i++){         scanf("%d%d",&u,&d);         p+=u;q+=d;         if(u<minu) minu=u;         if(d<mind) mind=d;     }     cout<<max(p+mind,q+minu);     return 0;
} 


全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务