老僻贞 发表于 2025-7-7 18:44:09

codeforces round 799

传送门
799

A

计算 \(b, c, d\) 中有几个数比 \(a\) 大就好
B

题意
一次只能删任意两个数,最后只能留下不同的数,想要留下的数最多
思路

[*]最好的情况,最后留下的个数为 \(cnt\) (种类数)
[*]计算 \(n - cnt\) 。偶数则可以全部删除,奇数就要从 \(cnt\) 中删一个来配对
C

求对角线交点的坐标
误区 : 并不是一行或一列只有一个 # 的就是交点 (除掉边界之后)
以行为例,只有 上一行和下一行都有两个 #,这一行有一个的才是
D

傻傻地不断判断是否为回文,直到和初状态重合
bool check (int x, int y) {    string s1, s2;    if (x < 10) s1 = '0' + to_string (x);    else s1 = to_string (x);    if (y < 10) s2 = '0' + to_string (y);    else s2 = to_string (y);    reverse (s2.begin (), s2.end());    if (s1 == s2) return true;    return false;}void solve () {    string s; int x;    cin >> s >> x;    int dh = x / 60, dm = x % 60;    int sh = (s - '0') * 10 + (s - '0');    int sm = (s - '0') * 10 + (s - '0');    int cnt = check (sh, sm) ? 1 : 0;    if (x == 1440) {      cout > n >> s;    vector a(n + 1), ss(n + 1);    for(int i = 1; i > a;            ss = ss + a;    }    if(ss == s) {cout = 1 && mp >= 1) || (mp >= 1 && mp >= 1) || (mp >= 1 && mp >= 1) || (mp >= 1 && mp >= 1)) {cout = 1) {            if((mp >= 3) || (mp >= 1 && mp >= 1) || (mp >= 1 && mp >= 1) || (mp >= 1 && mp >= 1) || (mp >= 2)) {cout = 1) {            if((mp >= 2 && mp >= 1) || (mp >= 1 && mp >= 1) || (mp >= 1 && mp >= 1) || (mp >= 1 && mp >= 1)) {cout = 1) {            if((mp >= 2 && mp >= 1) || (mp >= 1 && mp >= 1) || mp >= 2) {cout = 2 && mp >= 1) || (mp >= 1 && mp >= 2) || (mp >= 1 && mp >= 1 && mp >= 1) || (mp >= 2 && mp >= 1) || (mp >= 1 && mp >= 2)) {coutn >> k;    int cnt = 0, l = 0, r = 0;    vector a(n);    for(int i = 0; i < n; i++) cin >> a;    for(int i = 1; i < n; i++) {            if(a < a * 2) r++;            else cnt += max(0, r - l + 1 - k), l = i, r = l;    }    cnt += max(0, r - l + 1 - k);    cout > n;    vector a(n + 1);    map v;    for (int i = 1; i > a;      v].push_back(i);    }    int l = 1, r = 1, res = a, cnt = 1;    for (auto& : v) {      int u = w.size();      vector s(u + 1);      for (int i = 1; i < u; i++) {            s = s - (w - w - 1) + 1;      }      int i = 0;      for (int j = 1; j < u; j++) {            int z = s - s + 1;            if (z > cnt) {                cnt = z, res = q, l = w, r = w;            }            if (s > s) i = j;      }    }    cout
页: [1]
查看完整版本: codeforces round 799