hdu4310贪心

明明贪心是正确的嘛,不知道为什么官方的解题报告说是状态压缩DP。

/*

 * hdu2001/win.cpp

 * Created on: 2012-7-28

 * Author    : ben

 */

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <cmath>

#include <ctime>

#include <iostream>

#include <algorithm>

#include <queue>

#include <set>

#include <map>

#include <stack>

#include <string>

#include <vector>

#include <deque>

#include <list>

#include <functional>

#include <numeric>

#include <cctype>

using namespace std;

const int MAXN = 22;

typedef struct {

    int dps;

    int hp;

}Hero;

Hero hero[MAXN];

inline bool operator<(const Hero &h1, const Hero &h2) {

    double r1 = (h1.dps + 0.0) / h1.hp;

    double r2 = (h2.dps + 0.0) / h2.hp;

    return r1 > r2;

}



int main() {

#ifndef ONLINE_JUDGE

    freopen("data.in", "r", stdin);

#endif

    int N;

    while(scanf("%d", &N) == 1) {

        for(int i = 0; i < N; i++) {

            scanf("%d%d", &hero[i].dps, &hero[i].hp);

        }

        sort(hero, hero + N);

        int ans = 0;

        for(int i = 0; i < N; i++) {

            for(int j = i; j < N; j++) {

                ans += hero[i].hp * hero[j].dps;

            }

        }

        printf("%d\n", ans);

    }

    return 0;

}

你可能感兴趣的:(HDU)