【笔记】2022 初赛
在役生涯最后一次复习初赛了,有一点别样的滋味。。。
CSP-S 2021 第一轮
T10 交换相邻元素进行排序的最小操作次数是逆序对数量,因为每次必能找到一个相邻的逆序对,并且每次交换最多使逆序对数量 -1。
T12 \(T(n)>2T(n-2), T(n)\approx 2^{n/2}=O(2^n)\)。
T13 选 4 个苹果有 5 种方式,数错了。。。
9.16 模拟
阅读程序的数位 DP 实现很妙(其实是之前的写的都太拉跨了):
ll dfs(ll pos, bool limit, bool lead, ll pre1, ll pre2) {
if (!pos) {
return 1;
}
ll ans = 0;
if (!limit && !lead && f[pos][pre1 + 1][pre2 + 1] != -1) {
return f[pos][pre1 + 1][pre2 + 1];
}
ll up = limit ? a[pos] : 9;
for (ll i = 0; i <= up; ++i) {
if (i != pre1 && i != pre2) {
ans += dfs(pos - 1, limit && i == up, lead && !i, (!lead || i) ? i : -1, pre1);
}
}
if (!limit && !lead) {
f[pos][pre1 + 1][pre2 + 1] = ans;
}
return ans;
}
当 !limit && !lead
成立时才进行记忆化,这样根本不影响复杂度,但是就不用记 f[limit][lead]
这两维状态了。
Day 1
看到 O2 发了一个所谓 薄纱主定理 的东西,其实只能验证选项用。初赛全是选择题还是低估您们了。。。
初赛的时间复杂度计算题应该不会出太恶心的东西,以前用画图然后等比数列求和的办法都能做出来。