问题
https://vjudge.net/problem/UVA-11269
分析
贪心,主要是比较函数如何构造,尝试将调换位置,比较时间
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <map>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
typedef long long LL;
const int maxn=1000+5;
struct Task{
int x,y;
bool operator < (const Task &rhs) const {
int t1=max(x+rhs.x,x+y)+rhs.y,t2=max(rhs.x+x,rhs.x+rhs.y)+y;
return t1<t2;
}
}task[maxn];
int n,a[maxn],b[maxn];
int main(void){
while(scanf("%d",&n)==1 && n){
for(int i=0;i<n;++i){
scanf("%d",&task[i].x);
}
for(int i=0;i<n;++i){
scanf("%d",&task[i].y);
}
sort(task,task+n);
int tx=task[0].x,ty=tx+task[0].y;
for(int i=1;i<n;++i){
tx+=task[i].x;
if(ty<=tx) ty=tx+task[i].y;
else ty+=task[i].y;
}
printf("%d\n",max(tx,ty));
}
return 0;
}