7/14 訓練筆記

IANYEYZ發表於2024-07-14

閒話

陣列開小掛分
Kruskal\(m = 9e6\) TLE

問題 D: Card Game

簡單猜結論得到答案是 \(2 ^ {n - 1} - 1\),需要快速冪。
程式碼:

#include <bits/stdc++.h>
#define int long long
using namespace std;
int t, n;
int qpow(int x, int y) {
    int res = 1;
    while (y) {
        if (y & 1) (res *= x) %= 998244353;
        (x *= x) %= 998244353;
        y >>= 1;
    }
    return res;
}
signed main() {
    cin.tie(0) -> ios :: sync_with_stdio(false);
    cin >> t;
    while (t--) {
        cin >> n;
        int ans = 1;
        ans = qpow(2, n - 1);
        cout << ans - 1 << "\n";
    }
}

問題 I: String Problem

統計每一個連續相同字元的字串,然後給答案加上 \(len - 1\)
程式碼:

#include <bits/stdc++.h>
using namespace std;
int t, ans;
string s;
int main() {
    cin >> t;
    while (t--) {
        ans = 0;
        cin >> s;
        int l = 0, r = 0;
        while (r < s.size()) {
            int cnt = 0;
            while (r < s.size() && s[r] == s[l]) {
                cnt++;
                r++;
            }
            ans += cnt - 1;
            l = r;
        }
        cout << ans << "\n";
    }
}

相關文章