传送门
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 |