USTSCPC2026
usts校赛题解
校赛
A 平衡
B 最短异或2
C 天上一天地上一年
D 2026
#include<iostream>
using namespace std;
int main () {
int n; string s;
cin >> n >> s;
int ans = 0;
for (int i = 0; i < n - 3; ++i) {
if (s[i] == '2' && s[i+1] == '0' && s[i+2] == '2') {
ans++;
i+=3;
}
}
cout << ans << "\n";
return 0;
}
E 气球
#include <iostream>
#include <utility>
#include <vector>
using namespace std;
constexpr long long MOD = 998244353;
long long qpow(long long a, long long b) {
long long res = 1;
while (b) {
if (b&1) {
res *= a; res %= MOD;
}
a *= a; a %= MOD;
b >>= 1;
}
return res;
}
int main() {
int T; cin >> T;
vector<pair<int,int>> qs(T);
int maxn = 0;
for (int i = 0; i < T; i++) {
int x,y; cin >> x >> y;
qs[i] = {x,y};
maxn = max(maxn,x);
}
vector<long long> inv(max(maxn,200) + 1);
for (int i = 0; i < (int)inv.size(); i++) {
inv[i] = qpow(i, MOD - 2);
}
for (auto [n,m] : qs) {
vector<long long> f(n+1, 0);
long long sum = 0;
for (int i = 1; i <= n; i++) {
if (i < m) {
f[i] = (m + sum) % MOD *inv[i] % MOD;
sum = (sum + f[i]) % MOD;
} else {
f[i] = (1 + sum * inv[m]) % MOD;
sum = (sum + f[i] - f[i - m] + MOD) % MOD;
}
}
cout << f[n] << "\n";
}
return 0;
}
F 斐波那契数列
#include <iostream>
using namespace std;
int fb(int n) {
if (n == 1 || n ==2 ) {
return 1;
}
return fb(n-2) + fb(n-1) +1;
}
int main() {
int n; cin >> n;
int ans = fb(n);
cout << ans << "\n";
return 0;
}
G 构造王国
#include <iostream>
using namespace std;
int main() {
int n; cin >> n;
if (n%2==0) {
int k = n*n/4;
cout << k << "\n";
for (int i = n; i >= n/2 +1; i--) {
for (int j = n+1-i; j <= i-1; j++) {
cout << i << " " << j << "\n";
}
}
}else{
int k = (n-1)*(n-1)/4 + (n -1)/2;
cout << k << "\n";
for (int i = n; i >= (n+1)/2 +1; i--) {
for (int j = n+1-i; j <= i-1; j++) {
cout << i << " " << j << "\n";
}
}
}
return 0;
}
H Hard Problem
int main () {
int n; cin >> n;
int ans = 0;
for (int i = 0; i < n; i++) {
int x; cin >> x;
if (x == 6 || x == 7) {
ans++;
}
}
cout << ans << "\n";
return 0;
}