[2020藍橋杯B組決賽] G-答疑

題解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

相關文章
相關標籤/搜索