合集-比赛题合集
摘要:here. 感觉这场难度不大啊,我讨厌手速场。 D 有一些细节的模拟题。 消除的总行数为所有列中方格数量的最小值,下面记为 \(sum\)。 设每个方格在本列中从下到上处在 \(k\) 的位置,那么: \(k \le sum\),这个方格被消除的时间为所有处在 \(k\) 位置的格子中,\(x\)
阅读全文
摘要:here. 草怎么是贪心专场。 问就是不会 F。 C 注意到操作一至多只会进行一次,进行两次就抵消了。 所以直接枚举所有可能操作取最大值即可。 注意要开 long long。 总体复杂度 \(O(tn^3)\)。 #include<bits/stdc++.h> #define int long lo
阅读全文
摘要:前言 题目链接:here. 这是一个 T1 读错题刚 T2 导致垫底的可怜人的博客。 思路分析 首先这个柿子一看就是魔改的 FWT 的卷积。 考虑分治处理。 对于当前分治层 \(A*B=C\),考虑求出 \(C\)。 如果我们将 \(A,B,C\) 三个序列都分为 \(3\) 段,分别记为 \(A_
阅读全文
摘要:here. \(perf:2341\) 草忘写了,赶紧补档。 E 这种题都能被放到 E 了吗。 考虑最小化答案为 \(cnt-1\),\(cnt\) 是联通块个数。 考虑构造答案,首先把能加的边加上,然后用 set 和并查集维护当前联通块集合,对于之前没加过的边,能加就加。 总体复杂度 \(O(m\
阅读全文
摘要:here. here. 感觉是 good round。 2C 唯一没做明白的题。 经过若干手玩,发现在最优次数内达到目标,加的值是固定的。 也就是说,如果我加了 \(9\),想要达到目标,以后不可能再加 \(99\)。 又因为感觉答案上界很小,所以直接暴搜即可。 复杂度 \(O(能过)\)。 #in
阅读全文
摘要:here 困难场。 C 重要观察:只有每行的后缀 \(1\) 有用。 考虑归纳证明,设 \(n\) 为一行后缀 \(1\) 的个数。 对于 \(n=1\) 的情况,想要让 \(mex\) 值为 \(2\),必须选择这个后缀,否则其他后缀的和 一定 \(>1\); 对于 \(n>1\) 的情况,在之前
阅读全文
摘要:here. \(perf:2017\) 啥啊。 越来越过分了是吧。 我现在不仅怀疑参赛者有人机,还怀疑出题者是人机。 D 以最中间的 \(1\) 作为基准点,两边向这个 \(1\) 靠拢即可。 复杂度 \(O(n)\)。 #include<bits/stdc++.h> #define int lon
阅读全文
摘要:here. 困难场。 C 考虑贪心,我们在一个前缀只取正数,后缀只取负数,这样取一定可以取到最大值。 扫一遍记录前缀正数和和后缀负数和,枚举分割点即可。 复杂度 \(O(n)\)。 #include<bits/stdc++.h> #define int long long using namespa
阅读全文
摘要:here. C 考虑这样一种构造: \[1,2,3,\cdots,n-1,n,1,2,3,\cdots,n-1,n \]或者是: \[1,2,3,\cdots,n-2,n-1,n,1,2,3,\cdots,n-2,n-1 \]这里的 \(n\) 不是题面中的 \(n\)。 但是经检查,这种构造会在
阅读全文
摘要:here. 感觉出的都很不错,做起来很舒服。 C 考虑直接 DP。 设 \(f_i,0/1\) 表示考虑前 \(i\) 个人,第 \(i\) 个人是否说谎的方案数。 枚举第 \(i\) 个人是否说谎,得到转移: \[f_{i,0}=f_{i-1,1} \]\[f_{i,1}=f_{i-1,0}[a_
阅读全文
摘要:here. E 考虑对 F 先删边再加边。 删边时,用并查集维护出 G 的联通性,如果 F 中的边 \((x,y)\) 在 G 中不联通,就把它删去。 加边时,用并查集维护出 F 的联通性,如果 G 中的边 \((x,y)\) 在 F 中不连通,就在 F 中加边 \((x,y)\)。 不难发现这样贪
阅读全文
摘要:here. C 考虑最终合法的字符串,形如: \[1,2,2,2,\cdots,2,2,2,3 \]然后考虑对于每对 \(1,3\) 对答案的贡献是,它们中间 \(2\) 的个数,记为 \(cnt\),\(2^{cnt}-1\)。 然后考虑从左往右扫,每次遇到 \(1\) 往 ds 里加入一个 \(
阅读全文
摘要:A 考虑从大到小考虑每一个取值的数,如果能换就换,如果换了没用就不换。 实现上使用 vector 存下标,复杂度 \(O(n)\)。 #include<bits/stdc++.h> using namespace std; int t,n,m,a[1000005],flag,tim; vector<
阅读全文
摘要:here. 挺有意思的一场,但是我真不会 F2。 D 考虑把这个过程反过来,从后往前做,题意转化为每次进行两次操作中的一个: \(r \to r+1\); \(r \to r-k,ans\to ans+d_i\) 你发现这是一个经典的反悔贪心模型。 考虑用小根堆维护目前选择的 \(d_i\),然后每
阅读全文
摘要:here. D 考虑原问题等价于选择若干个字符种类,放到下标为奇数的位置,选择若干个字符种类,放到下标为偶数的位置。 然后考虑对于一种划分方案,它的贡献是奇偶两个集合的多重集排列数,也就是: \[\frac{(\sum_{i\in S}c_i)!}{\prod_{i\in S}c_i!} \cdot
阅读全文
摘要:here. 好像不难,问题是时间不够。 D 来搞笑的不是。 考虑二分答案,相当于是 \(\le mid\) 的数都要被删除,所以我们把这些位置标为 \(1\),相当于是要用至多 \(m\) 条长度为 \(k\) 的线段覆盖所有为 \(1\) 的位置,从左往右贪即可。 复杂度 \(O(n \log n
阅读全文
摘要:here. E 啥啊,难评。 考虑把所有格子涂成白色,然后考虑将一个格子由白变黑的贡献。 发现只有在边上且不在角上的格子会影响整体的奇偶性,也就是说我们要求这些格子中,黑色格子的数量为偶数。我们把这些位置的格子称为关键格子。 设总体绿色格子数量为 \(sum\),于是考虑: 如果关键格子中有绿色格子
阅读全文
摘要:here. here. 2D 抖音小游戏。 考虑从后往前 DP,设 \(f_{i,0/1}\) 表示在第 \(i\) 个位置放一个人,会给结果贡献几个人。 转移枚举当前位置是否是乘法: \(f_{i,j}=f_{i+1,j}\),当前位置是加法; \(f_{i,j}=a_{i}\max(f_{i+1
阅读全文
摘要:here. D 考虑水平 \(\le a_1\) 的选手不可能排在 1 号前面,所以把他们豆沙了。 现在只需要考虑怎样组题了。我们定义 \(c_i\) 表示第 \(i\) 题能够有几个人会,特别地,如果 \(b_i \le a_1\),那么 \(c_i=0\)。\(c\) 可以排序后用双指针求出。
阅读全文
摘要:原题: A 求什么就对什么计数。寻找合法解的条件。 考虑寻找集合合法的条件,为了方便考虑,我们将集合中元素从小到大排序。 假设目前考虑到了集合中的元素 \(a_i\),因为我们要求集合能够表示 \([0,\sum_{j=1}^i a_j]\) 中的所有元素,所以 \([0,\sum_{j=1}^{i
阅读全文

浙公网安备 33010602011771号