開擺題解

Allergy527發表於2024-03-11

開擺--更新ing

沒有詳解(大概

目錄
  • 開擺--更新ing
    • A題
    • B題
    • C題
    • D題
    • E題

A題

不配文字講解了,具體的直接問我本人吧
字首和影片

C++程式碼
void solve() {
    int n, m, w, x, i, ans = 0;
    cin >> n;
    vector<int>qwq(49); //字首和陣列
    for(i = 0;i < n;++i) {
        cin >> w >> x;
        qwq[9 + x] += w; //給這個區間都加上w
        qwq[18 + x] -= w;
    }
    for(i = 1;i < 49;++i)qwq[i] += qwq[i - 1]; //還原字首和陣列
    for(i = 0;i < 24;++i) {
        qwq[i] += qwq[24 + i]; //將第二天與第一天相加
        if(qwq[i] > ans)ans = qwq[i]; //求最大值
    }
    cout << ans;
}

B題

C++程式碼
void solve() {
    ll n;
    cin >> n;
    while(n % 2 == 0 || n % 3 == 0) { //一直除下去就行
        if(n % 2 == 0)n /= 2;
        if(n % 3 == 0)n /= 3;
    }
    cout << (n == 1 ? "Yes" : "No");
}

C題

C++程式碼
struct Int {
    int first, second;
};

bool cmp(Int a, Int b) {
    if(a.first != b.first)return a.first < b.first;
    else return a.second > b.second;
}
void solve() {
    int n, m, i, j;
    cin >> n;
    vector<Int>qwq(n);

    for(i = 0;i < n;++i) {
        string k;
        cin >> k;
        qwq[i] = { 0, i + 1 };
        for(auto x : k) if(x == 'o')++qwq[i].first;
    }
    sort(qwq.begin(), qwq.end(), cmp);
    for(i = n - 1;i >= 0;--i)cout << qwq[i].second << ' ';
}

D題

C++程式碼
void solve() {
    string n, m;
    cin >> n >> m;
    cout << n << ' ' << "san";
}

E題

時間不夠沒寫樂死我了

相關文章