The MAXTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2055 Accepted Submission(s): 891
Problem Description
Giving N integers, V1, V2,,,,Vn, you should find the biggest value of F.
Input
Each test case contains a single integer N (1<=N<=100). The next line contains N integers, meaning the value of V1, V2....Vn.(1<= Vi <=10^8).The input is terminated by a set starting with N = 0. This set should not be processed.
Output
For each test case, output the biggest value of F you can find on a line.
Sample Input
Sample Output
|
题意:给你n个数V1 V2 V3 ... Vn,现在问你最大的x1 * V1 + x2 * V2 + ... + xn * Vn,限制Y = x1 + x2 + x3 + x4 + ... + xn <= 2009 && 1 <= xi <= 2009。
直接贪心的选择最大的Vn与最大的xn相乘即可。
AC代码:
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#define INF 0x3f3f3f3f
#define debug printf("1\n")
#define MAXN 110
#define MAXM 10000
#define Ri(a) scanf("%d", &a)
#define Pi(a) printf("%d\n", (a))
#define Rl(a) scanf("%lld", &a)
#define Pl(a) printf("%lld\n", (a))
#define Rs(a) scanf("%s", a)
#define Ps(a) printf("%s\n", (a))
#define W(a) while(a--)
#define CLR(a, b) memset(a, (b), sizeof(a))
#define LL long long
using namespace std;
int main()
{
LL n;
while(Rl(n), n != 0)
{
LL ans = 0;
LL Max = 0;
LL a;
for(LL i = 0; i < n; i++)
{
Rl(a);
Max = max(Max, a);
ans += a;
}
ans -= Max;
ans += Max * (2009 - n + 1);
printf("%lld\n", ans);
}
return 0;
}