題解ios
這個題不會證實,可是看着像是 排序 + 貪心 的作法,先按 $s + a$ 從小到大排序, 而後累加求和便可,不清楚是否是這個思路,可是網上大部分人好像就是這個思路,在此僅供一個參考。spa
#include <iostream> #include <algorithm> using namespace std; typedef long long LL; const int N = 1010; int n; struct stu { int s, a, e; // t1 = s + a // t2 = s + a + e int t1, t2; }; stu st[N]; bool cmp(stu a, stu b) { return a.t1 < b.t1; } int main() { cin >> n; for (int i = 0; i < n; ++i) { cin >> st[i].s >> st[i].a >> st[i].e; st[i].t1 = st[i].s + st[i].a; st[i].t2 = st[i].t1 + st[i].e; } // 先按照 t1 由小至大排序 sort(st, st + n, cmp); // 累加和 LL times = 0; LL s = 0; for (int i = 0; i < n; ++i) { times += st[i].t1 + s; s += st[i].t2; } cout << times << endl; return 0; }
這個題目最後 20分鐘 作出來的,可是 $sort$ 忘記 $return$ 了,編譯也不報錯,慌慌忙忙就交上去了,哭哭哭~~。code