uva 11729 A - Commando War 【基础】

xiaoxiao2021-02-28  23

题意:给你n个士兵,每行两个整数,交代任务的时间和完成任务的时间,任务可以同时进行完成,输出最小完成全部任务的时间。

思路:按完成任务时间从大到小进行排序,每次总的准备时间+当前交代任务的时间和第一个交代任务时间+完成任务时间比较,取较大值。

比赛碰到这种水题,少说得半个小时才能想出来。。。

#include<stdio.h> #include<algorithm> #include<string.h> #define inf 0x3f3f3f3f using namespace std; const int maxn = 1010; struct node{ int prepare; int cost; }vis[maxn]; int cmp(struct node a,struct node b) { return a.cost > b.cost ; } int main() { int n; int t = 0; while(scanf("%d",&n),n!=0) { for(int i = 0; i < n; i ++) scanf("%d%d",&vis[i].prepare ,&vis[i].cost ); sort(vis,vis+n,cmp); int sum = 0; int ans = -inf; for(int i = 0; i < n; i ++) { sum += vis[i].prepare; ans = max(ans,sum + vis[i].cost); } printf("Case %d: %d\n",++t,ans); } return 0; }

转载请注明原文地址: https://www.6miu.com/read-2050325.html

最新回复(0)