閒話
陣列開小掛分
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";
}
}