hdoj 2803 The MAX 【水题】



The MAX

Time 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.
hdoj 2803 The MAX 【水题】_第1张图片
 

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
       
       
       
       
2 1 2 0
 

Sample Output
       
       
       
       
4017
 



题意:给你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;
}


你可能感兴趣的:(hdoj 2803 The MAX 【水题】)