ATC/TC/CF
10.25
去打 CF,然后被 CF 打了。
CF EDU 75
A. Broken Keyboard 精神恍惚,WA 了一发。
B. Binary Palindromes 比赛中的憨憨做法,考虑一个串的 case,只有“长度为偶数,01都出现奇数次”,才会变不出回文串,我们称这样的串为 Bad 的,其它串是 Good 的。两个 Bad 串,之间交换一个 01,可都变成 Good 的。如果 Bad 串有奇数个,那么必存在一个长度为奇数的串才可能合法。
C. Minimize The Integer 奇/偶字符相对顺序不变的任意字符串都可凑出,归并即可。
D. Salary Changing 二分答案 x,一开始所有人全部取 \(l_i\),按 \(l\) 排序,给 \(l \leq x\) 的人,从大到小,依次尝试涨工资。精神恍惚,二分条件没想清楚,WA。
E2. Voting (Hard Version) 比赛时想了一年,人都想没了,贪心意识有待提高,贪心加训。考虑用第二种方式进来的人 (\(m_i,p_i\)),他进来时 \(m\) 值小于 \(m_i\) 的人都已经进来了。因此满足 \(m \geq m_i\) 的人中,至少有 \(m_i - [小于m_i人数]\) 个用第一种方式进来。倒着扫一遍,小根堆维护权值即可。
F. Red-White Fence 按 value 从小到大决策每种木板怎么放。考虑 OGF,若一种木板个数大于 1,贡献为 \((x^2+2x+1)\),若等于 1,贡献为 \((2x+1)\)。把这些多项式相乘后 \(x^k\) 的系数即为选择 \(k\) 个木板的方案数。施展一次 NTT 即可。精神恍惚,爆 int,WA 了一发。
11.20
Codeforces Round #313 (Div. 1)
A. Gerald's Hexagon 做法1 求出六边形六个点的坐标,即可求面积,除上一个三角形的面积即为答案。做法2 补成正三角形。
B. Equivalent Strings 注意到 “相等” 的关系具有自反对称传递性,是等价关系。对于一个串,我们可以 \(O(nlogn)\) 地得到它所在的等价类中字典序最小的串。check s 串和 t 串得到的字典序最小的串是否相等即可。
C. Gerald and Giant Chess 考虑容斥,\(f(mask)\) 表示经过 \(mask\) 集合内的点的路径方案数。我们只 care \(|mask|\) 的奇偶性。把点按横坐标排序,\(dp[i][0/1]\) 表示考虑前 \(i\) 个点,到达了路障 \(i\),\(\sum_{[|s|\&1]} f(s)\),枚举下一个到达的路障即可。
D. Randomizer 这个要求的东西,在偷偷告诉我们要用 pick 定理。只需求面积期望,边界上点的个数期望。由期望可加性,这两者都可以通过独立计算每条弦的贡献,复杂度 \(O(n^2)\)。优化的关键:推式子是时候发现,\(k\) 很大的时候 \(A_iA_{i+k}\) 作为多边形的边出现的概率非常低。
TCO 17 Round1A
L1,L2 模拟题,DP 题。
L3 y 轴左侧旋转会转出一个可以剖分成一些圆台的东西,右侧类似,我们要求的是这两个东西的并。考虑容斥,相加减去交即可。
2019.11.26
USP 2019
Problem A. Kolkhozy 对 m,BigSmall 分类。
Problem B. Russo’s Russian 待补。
Problem C. Crystal Matryoshkas 先不考虑包含 x 的极长序列,每次 lowerbound 取出最小的即可。考虑包含 x,每次 lowerbound 如果会导致之后不能拿 x 就拿,否则不拿,拿完 x 后接着 lowerbound. 可以将物品分为小于 x 和大于 x 两个集合,在小于 x 中拿最多的元素的同时拿极小的 size 是最优的。
Problem D. Buildings and rockets 分成 log 个桶,定期重构。
Problem E. Lenin’s great dream 待补。
Problem F. Forbechenko v Rodvsky 求 gcd,如果 \(x/y\) 在 B 进制不是循环的,那么 \(B^{好大好大的数}\) 是 \(y\) 的倍数。求出 \(y\) 的每个质因子乘积即可。(about 分解质因子:扔掉 \(10^6\) 以下的因子,剩下的可能是 \(1,p,q,pq,p^2\))
Problem G. Hunting leshys 并查集维护当前点所在连通块根,倍增查询路径极小值。
Problem H. Course recommendation 模拟。
Problem I. Sobytiynyy Proyekt Casino 取出两只排骨龙,看看谁在前面更优,以此来写 cmp,进行排序。
Problem J. MasterCodeChef Russia 最小圆覆盖。
Problem K. Poor Folk 先排序,设前 i 个集合能凑出 1 到 x 的所有元素,如果 a[i+1] > x+1 那么答案为 x+1,否则加入 a[i+1] 后,能凑出,1 到 x+a[i+1] 的所有元素。
VK 2015 Round 2
A. Berland Miners
乱编
- 考虑不修改怎么 check,求出每个点距根路径上权值最小值后贪心匹配,Hall 定理?
- 考虑修改点权会发生什么?修改 u。
- 如果 u 到根的路径上存在一个点权值小于等于 u,那么改 u 没用。
- 修改 u 会影响 u 的子树中,与 u 相连的,点权大于等于 u 的连通块。
做法
- Hall 定理非常关键!任意 \(x\) 小于等于 \(x\) 的洞的个数减去小于等于 \(x\) 的工人个数大于等于 0。即,任意前缀大于等于 0.
- 要想影响一个点 \(u\),修改的点一定是 \(u\) 到根路径中,权值最小的点【树形结构】
- 枚举修改的点,二分修改的权值,这样复杂度是 \(O(nlognlogn)\) 的。
B. Work Group \(f[u][0/1]\) 表示考虑 \(u\) 的子树,拿奇数/偶数个点,的最大收益。讨论一下 \(u\) 拿还是不拿。
C. Board Game 后手的任意一条 path 上,如果至少存在一个点,先手能够更先到达,那后手必败。
E. Correcting Mistakes \(W = A + x + B + y + C, S = A + B + y + C, T = A + x + B + c\)(先枚举谁是 S),我们可以钦定,\(x\) 和 \(B\) 的首字母不相等,\(y\) 和 \(B\) 的最后一个字母不相等。(因为在一段连续的相等的字符中,删除中间的某个字符,和,删除首字母或者最后一个字母等效。)那么 A 为 S,T 的 LCP,B 为 S 和 T 的最长公共后缀,check 剩下部分即可。
F. Encoding 如果存在字符集上的双射,使得串 A 能变成串 B,那么称为 A 和 B 是 similar 的,先找出串 s 中所有和 t similar 的子串,对于每个串,用 \(O(|字符集|)\) 的时间,check 映射是否合法即可。similar 是等价关系,以各字符首次出现的位置为顺序,求出字符出现位置的 hash 值的序列。check 两个字符串是否是 similar 的,只需 check 按以上方式得到的序列是否相等。
2019.11.27
SRM 771
D1 L1 数位 DP。
D1 L2 \(f[i][j]\) 表示前 \(i\) 个任务被分发,有 \(j\) 个任务只完成了第一个月,\(f[i][j]\) 可由 \(f[i-j][🐶]\) 转移而来。预处理 \(f[i-j][🐶]\) 前缀最小即可。
D1 L3 【口技】分形,对于直角三角形 ABC,设 B 为直角。从 B 向 AC 作垂线,垂足为 H,递归地解决 AHB, BHC,一片区域的起点和终点是唯一确定的,将 AHB 的终点和 BHC 的起点连接,交 AH 于 X,在两片区域内都插入 X。
2019.12.7
Round 604 div1
A. Beautiful Regional Contest:考虑贪心,给金牌分配最少。枚举银牌数量,check 即可。
B. Beautiful Sequence:
C. Beautiful Mirrors with queries:根据期望可加性,我们可以把每段贡献相加。
D1. Beautiful Bracket Sequence (easy version): 深度是啥?是极大 \(x\),使得存在子序列,满足前 \(x\) 个位置是 (
,后 \(x\) 个位置是 )
。我们发现,\(O(n)\) 扫一遍,必存在一个位置 \(pos\) 使得 \([1,pos]\) 中的 (
个数等于 \([pos+1, n]\) 的 )
个数。按位置 \(pos\) 分类,统计答案即可。复杂度 \(O(n^2)\)
2019.12.29
Educational Codeforces Round 79 (Rated for Div. 2)
C. 考虑取出一个元素的代价,如果之前取出过位置更靠后的,那么代价为 1,否则代价为(出现位置 - 之前取出几个元素) * 2 - 1。
D. for for
E. 一个 good 的排列,可以分成很多个连续段,\([1,a_1],[a_1+1,a_2]...[a_k+1,a_{k+1}]\) 每段,最大值出现在第一位,并且若 \(i\) 向 \(a_i\) 连有向边,会形成一个简单环。逐位考虑每位填什么即可。
F. 拿 wqs 二分锤。