目录
感觉这场整体都很神秘, 很符合cf特色.
A. Adjacent Digit Sums
题目链接:https://codeforces.com/contest/2067/problem/A
首先我们想到, 对一个数加 1 在不考虑进位时体现在数位和上其实也是加 1, 所以如果 y == x + 1 此时一定满足;
对于 y != x + 1 时, n至少个位是 9 , 这样加1出现进位才能使得数位和差大于 1;
这样 x 就会比 y 大 i * 9 - 1 (i为未知数) 我们只用枚举 i 即可.
void solve() {
int x, y;
cin >> x >> y;
if (y == x + 1) {
cout << "Yes\n";
return;
}
for (int i = 1;i <= x / 9;i++) {
if (y == x - 9 * i + 1) {
cout << "Yes\n";
return;
}
}
cout << "No\n";
}
B. Two Large Bags
题目链接:https://codeforces.com/contest/2067/problem/B
通过题目我们可以知道, 对于大数无法平分给两个数组的情况, 我们可以利用小数加 1 这个条件来解决;
对于个数只有 0 或者 2 的元素我们无法再拆分, 而对于大于 2 的元素, 因为要满足加 1 这个条件我们必须剩两个平分两个数组,
所以我们贪心, 将剩下的全部加到后一个元素上, 最终如果剩下的数量为偶数则满足条件.</