T1:格式改写

代码实现
s = input()

cnt = 0
for c in s:
    if c.isupper():
        cnt += 1
        
ans = min(cnt, len(s)-cnt)
print(ans)

T2:倍数统计

代码实现
import sys
input = lambda: sys.stdin.readline().rstrip()

a, b = map(int, input().split())
c = int(input())
print(b//c-(a-1)//c)

T3:区间的并

原题:LC 56

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)

using namespace std;
using P = pair<int, int>;

int main() {
    int n;
    cin >> n;
    
    vector<P> intervals;
    rep(i, n) {
        int a, b;
        cin >> a >> b;
        intervals.emplace_back(a, b);
    }
    
    sort(intervals.begin(), intervals.end());
    
    vector<P> ans;
    rep(i, n) {
        auto [l, r] = intervals[i];
        if (!ans.size() or ans.back().second < l) {
            ans.emplace_back(l, r);
        }
        else {
            ans.back().second = max(ans.back().second, r);
        }
    }
    
    for (auto [a, b] : ans) {
        cout << a << ' ' << b << '\n';
    }
    
    return 0;
}

T4:平分数字(一)

暴搜

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)

using namespace std;
using ll = long long;

int main() {
    int n;
    cin >> n;
    
    vector<int> a(n);
    rep(i, n) cin >> a[i];
    
    ll sum = accumulate(a.begin(), a.end(), 0);
    
    if (sum%2 != 0) {
        puts("No");
        return 0;
    }
    sum /= 2;
    
    bool ok = false;
    auto dfs = [&](auto f, int i, ll now=0) -> void {
        if (i == n) return;
        if (now == sum) {
            ok = true;
            return;
        }
        f(f, i+1, now);
        f(f, i+1, now+a[i]);
    };
    dfs(dfs, 0);
    
    if (ok) puts("Matched");
    else puts("No");
    
    return 0;
}

T5:圆环三染色

答案为 \(2^n + (-1)^n \cdot 2\)

推导见 link

还需特判一下 \(n=1\)

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)

using namespace std;
using ll = long long;

//const int mod = 998244353;
const int mod = 1000000007;
struct mint {
    ll x;
    mint(ll x=0):x((x%mod+mod)%mod) {}
    mint operator-() const {
        return mint(-x);
    }
    mint& operator+=(const mint a) {
        if ((x += a.x) >= mod) x -= mod;
        return *this;
    }
    mint& operator-=(const mint a) {
        if ((x += mod-a.x) >= mod) x -= mod;
        return *this;
    }
    mint& operator*=(const mint a) {
        (x *= a.x) %= mod;
        return *this;
    }
    mint operator+(const mint a) const {
        return mint(*this) += a;
    }
    mint operator-(const mint a) const {
        return mint(*this) -= a;
    }
    mint operator*(const mint a) const {
        return mint(*this) *= a;
    }
    mint pow(ll t) const {
        if (!t) return 1;
        mint a = pow(t>>1);
        a *= a;
        if (t&1) a *= *this;
        return a;
    }

    // for prime mod
    mint inv() const {
        return pow(mod-2);
    }
    mint& operator/=(const mint a) {
        return *this *= a.inv();
    }
    mint operator/(const mint a) const {
        return mint(*this) /= a;
    }
};
istream& operator>>(istream& is, mint& a) {
    return is >> a.x;
}
ostream& operator<<(ostream& os, const mint& a) {
    return os << a.x;
}

int main() {
    ll n;
    cin >> n;
    
    if (n == 1) {
        puts("3");
        return 0;
    }
    
    mint ans = mint(2).pow(n) + mint(-1).pow(n)*2;
    cout << ans << '\n';
    
    return 0;
}