345

A - Leftrightarrow

给你一个由 < => 组成的字符串 S
请判断 S 是否是双向箭头字符串。
字符串 S 是一个双向箭头字符串,当且仅当存在一个正整数 k 使得 S 是一个 < k= s 和一个 > 的连接,且顺序如此长度为 (k+2)

没有看清楚只包含箭头

void solve() {
    string s;cin >> s;
    if (s[0] != '<') {
        cout << "No\n";return;
    }
    if (s[s.size() - 1] != '>') {
        cout << "No\n";return;
    }
    for (int i = 1;i < s.size() - 1;i++) {
        if (s[i] != '=') {
            cout << "No\n";return;
        }
    }
    cout << "Yes\n";
}

B - Integer Division Returns

给定一个介于 10181018 之间的整数 X ,打印 X10

void solve() {
    ll x;cin >> x;
    int add = 1;
    if (x % 10 != 0 && x >= 0) {
        cout << x / 10 + 1 << '\n';
    } else if (x % 10 == 0 && x >= 0) {
        cout << x / 10 << '\n';
    }
    if (x < 0) {
        cout << x / 10 << '\n';
    }
}

C - One Time Swap

给你一个字符串 S 。请找出以下操作的字符串数。

可以证明,在这个问题的约束条件下,你总是可以完成这个操作的。

void solve() {
    string s;cin >> s;
    map<char, int> mp;
    for (int i = 0;i < s.size();i++) {
        mp[s[i]]++;
    }
    bool ok = false;
    ll ans = 1ll * s.size() * (s.size() - 1) / 2;
    for (auto [x, y] : mp) {
        ans -= 1ll * y * (y - 1) / 2;
        if (y >= 2)ok = true;
    }
    if (ok)ans++;
    cout << ans << '\n';
}

D - Tiling

有一个由 H 行和 W 列组成的网格,每个单元格的边长为 1 ,我们有 N 块瓷砖。
i 个图块( 1iN )是一个大小为 Ai×Bi 的矩形。
请判断是否有可能将这些图块放置在网格上,从而满足以下所有条件:

Solution

DFS

非常麻烦,我觉得现在补了这个题对我的水平不会有提高,因此(待更 ) 后面同理