明明贪心是正确的嘛,不知道为什么官方的解题报告说是状态压缩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; }
489

被折叠的 条评论
为什么被折叠?



