Loading

Codeforces Round 968 (Div. 2)

传送门

A.

判断首位字符是否相等即可

#include<bits/stdc++.h>
using namespace std;

const int N = 1e6 + 7;
void solve() {
    int n;
    string s;
    cin >> n >> s;
    if(s[0] == s[n - 1]) cout << "No" << endl;
    else cout << "Yes" << endl;
}
int main() {
    int T;
    cin >> T;
    while(T --) solve();
}

B.

思维题,答案为从小到大排序后的中间的数。

#include<bits/stdc++.h>
using namespace std;

const int N = 1e6 + 7;
int a[N];
bool cmp(int x, int y){ return x > y;}
void solve() {
    int n;
    cin >> n;
    for(int i = 1; i <= n; i ++) {
        cin >> a[i];
    }
    sort(a + 1, a + n + 1, cmp);
    cout << a[(n + 1) / 2] << endl;
}
int main() {
    int T;
    cin >> T;
    while(T --) solve();
}

D1.

\(k\)\(\max(mex)\),若 \(k > m\),则答案为 \(k(m + 1)\)。对于 \([0, k - 1]\) 的部分,\(f(i) = k\),这部分的总答案为 \(k * k\)。对于 \([k, m]\)\(f(i) = i\),这部分的总答案为 \(\frac{(k + m)(k - m - 1)}{2}\),因此总答案为 \(k * k + \frac{(k + m)(k - m - 1)}{2}\)

D2.

posted @ 2024-09-15 18:12  你说得太对辣  阅读(23)  评论(0)    收藏  举报