找回密码
 立即注册
首页 业界区 安全 codeforces round 799

codeforces round 799

老僻贞 2025-7-7 18:44:09
传送门
799

A

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

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

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

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

傻傻地不断判断是否为回文,直到和初状态重合
[code]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] - '0') * 10 + (s[1] - '0');    int sm = (s[3] - '0') * 10 + (s[4] - '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[i - 1] + a;    }    if(ss[n] == s) {cout = 1 && mp[2] >= 1) || (mp[4] >= 1 && mp[9] >= 1) || (mp[5] >= 1 && mp[8] >= 1) || (mp[6] >= 1 && mp[7] >= 1)) {cout = 1) {            if((mp[1] >= 3) || (mp[3] >= 1 && mp[9] >= 1) || (mp[4] >= 1 && mp[8] >= 1) || (mp[5] >= 1 && mp[7] >= 1) || (mp[6] >= 2)) {cout = 1) {            if((mp[2] >= 2 && mp[9] >= 1) || (mp[3] >= 1 && mp[8] >= 1) || (mp[4] >= 1 && mp[7] >= 1) || (mp[5] >= 1 && mp[6] >= 1)) {cout = 1) {            if((mp[3] >= 2 && mp[7] >= 1) || (mp[4] >= 1 && mp[6] >= 1) || mp[5] >= 2) {cout = 2 && mp[5] >= 1) || (mp[5] >= 1 && mp[9] >= 2) || (mp[6] >= 1 && mp[8] >= 1 && mp[9] >= 1) || (mp[7] >= 2 && mp[9] >= 1) || (mp[7] >= 1 && mp[8] >= 2)) {cout  n >> 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[i - 1] < 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[a].push_back(i);    }    int l = 1, r = 1, res = a[1], cnt = 1;    for (auto& [q, w] : v) {        int u = w.size();        vector s(u + 1);        for (int i = 1; i < u; i++) {            s = s[i - 1] - (w - w[i - 1] - 1) + 1;        }        int i = 0;        for (int j = 1; j < u; j++) {            int z = s[j] - s + 1;            if (z > cnt) {                cnt = z, res = q, l = w, r = w[j];            }            if (s > s[j]) i = j;        }    }    cout

相关推荐

您需要登录后才可以回帖 登录 | 立即注册