刚开始做的时候直接用贪心法,每次都选最大的卡片,结果WA。
代码:
// Fox and Card Game #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef pair pii; typedef long long llong; typedef pair pll; #define mkp make_pair int main() { //#define LOCAL // 提交时注释掉 /*******************************************/ #ifdef LOCAL freopen(data.txt, r, stdin); #endif int n; vector middle; while (cin >> n) { middle.clear(); int cnt1, cnt2; cnt1 = cnt2 = 0; for (int i = 0; i < n; i++) { int s; cin >> s; int t = s / 2; int c; for (int j = 0; j < t; j++) { scanf(%d, &c); cnt1 += c; } if (s & 1) { // odd scanf(%d, &c); middle.push_back(c); } for (int j = 0; j < t; j++) { scanf(%d, &c); cnt2 += c; } } sort(middle.begin(), middle.end(), greater () ); for (int i = 0; i < middle.size(); i += 2) { cnt1 += middle[i]; if (i + 1 < middle.size()) { cnt2 += middle[i + 1]; } } cout << cnt1 << << cnt2 << endl; } return 0; }