随笔分类 - 模拟赛
主要是参加的一些模拟赛题解
摘要:A 对于一个子矩阵 \((x_1,y_1),(x_2,y_2)\),其元素和为 \(\sum_{i=x_1}^{x_2}\sum_{j=y_1}^{y_2}S_i\cdot S_j=(\sum_{i=x_1}^{x_2}S_i)(\sum_{j=y_1}^{y_2}S_j)\),\(O(n^2)\)
阅读全文
摘要:int 将每一个浮点数乘上 \(10^9\),然后问题就可以转化成,有多少对数的乘积至少包含 $18 $ 个末尾 \(0\)。 然后计算每一个数的 \(2\) 和 \(5\) 的因子数量。 统计一下 \(2\) 和 \(5\) 因子数量和都不小于 \(18\) 的数对数量即可。 math 显然要将所
阅读全文
摘要:A 容易观察到每个 “\(1\)” 相当于是独立的,那么其位置越靠后越优,则对于 \(i=1\to n-1\),每次都为 \(a_i\) 选择一个最大的满足 \(i+2^t\leq n\) 的 \(t\) 全部进行操作最优。 使用 __builtin_clz 函数做到 \(O(n)\),暴力算 \(
阅读全文
摘要:seq 对于 \(n\leq 15\) ,枚举每个子序列然后排序计算即可。时间复杂度 \(\mathcal O(2^nn\log n)\)。 对于 \(A_i\) 互不相同,可以枚举每个元素的贡献。即若 \(A_i\) 满足在某一子序列中排名第 \(A_i\) ,则有 \(1\) 的贡献。也就是当
阅读全文
摘要:A perm 首先若 \((i+j)\) 为奇数则需要满足其中一个是奇数,另一个必须是偶数。 若 \(k=0\),那么要求 \(A_i\) 和 \(A_j\) 同号,也就是所有数必须都是同一奇偶性。若满足则答案为 \(n!\) ,否则为 \(0\) 。 若 \(k=1\) ,那么要求 \(A_i\)
阅读全文
摘要:A 数列删除 至少删除 \(m\) 个数,意思就是最多保留 \(n-m\) 个数。 删除的总和最小,意思就是保留的总和最大。 非降子序列问题可以用经典的动态规划来解决。 用 \(f[i][j]\) 表示,当前选的最后一个数是 \(a[i]\),一共选了 \(j\) 个数,选的数总和最大是多少。 转移
阅读全文
摘要:A 贸易 题目保证输入的边 \(u < v\),说明题目中的图是一个有向无环图 \(DAG\),但是不一定连通。可以记录 \(f[i]\) 表示到达 \(i\) 之前能遇到的最小的价格,使用拓扑排序进行 \(dp\) 转移。对于每一个点 \(i\) , 如果其价格为 \(a[i]\), 就可以用 \
阅读全文
摘要:A 按题意直接模拟即可。也就是每次取出一些字符,放入字符串\(P\)中。 注意实现时的时间复杂度,不要写成 \(O(n^2)\) 的。 #include<bits/stdc++.h> using namespace std; char s[1000010],t[1000010]; int hd1=1
阅读全文
摘要:A. 小学数学 20分暴力即可。40分将询问拆为 \(\leq t\) 减去 \(<s(\leq s-1)\) 的两个问题,然后将询问排序后做前缀和即可。 满分要求强制在线,将矩阵中所有元素排序,然后分成 \(\sqrt{nm}\) 个块,每个块记录二维前缀和(出现了多少次块内的数)。每次询问时先处
阅读全文
摘要:A 看到最大的最小,可以想到二分答案。 答案的不公平度可以二分,因此二分然后检查即可。 检查的时候假设二分的答案为 \(a\),则一种玩偶如果有 \(x\) 个,就需要至少分给 \(x/a\) 上取整个小朋友。只要看小朋友总数够不够即可。于是可以线性时间复杂度检查。 总时间复杂度 \(O(n\log
阅读全文
摘要:郊游 首先需要快速找到当前适配度最大的一对小朋友。容易发现 \(a,b\) 的适配度即为 \(a,b\) 二进制下最长公共后缀的长度,于是先翻转所有数的二进制串并插入到 Trie 中。那么 \(a,b\) 的适配度即为 \(a,b\) 所代表叶子节点的 \(\rm LCA\) (最近公共祖先)深度。
阅读全文