摘要:
显然每个区间最多只有一种绝对众数,故每个数值独立,考虑枚举每种数值作为绝对众数然后计算贡献。 设$s_i$表示前$i$个中该数值的出现次数,则要选择一对下标$l,r$满足: $0\leq l<r\leq n$。 $2s_r-r>2s_l-l$。 根据数字出现位置,假设它出现了$k$次,则可以将序列划 阅读全文
摘要:
A. Advertising Strategy 最优策略一定是第一天用$y$元,最后一天再用$x-y$元补满。 枚举所有可能的$y$,然后模拟即可,天数为$O(\log n)$级别。 时间复杂度$O(x\log n)$。 B. Byteland Trip 留坑。 C. Carpet 对树进行轻重链剖 阅读全文
摘要:
A. Auxiliary Project 完全背包。 B. Boolean Satisfiability 设$t$为出现过的变量个数,若同时存在某个变量以及其反变量,则答案为$2^t$,否则答案为$2^t-1$。 C. Consonant Fencity $O(2^{19})$枚举所有辅音字母的大小 阅读全文
摘要:
斐波那契数列满足$f(n-1)f(n+1)-f(n)^2=(-1)^n$。 枚举$-1$的符号,根据二次剩余即可求出最多$4$个可能的$f(n+1)$的值。 那么根据$f(n)$和$f(n+1)$,对矩阵做BSGS求出最小的$n$即可。 时间复杂度$O(\sqrt{P}\log P)$。 阅读全文
摘要:
A. Ducks in a Row 当$n\times k>|S|$时,显然无解。 否则最优解中翻转的区间一定两两不相交,设$f[i][j][x][y]$表示考虑前$i$个位置,第$i$个位置翻转情况为$j$,当前连续段长度为$x$,已有$y$个长度至少为$n$的$D$连续段的最少翻转次数,然后转移 阅读全文
摘要:
A. Chrome Tabs 当$n=1$时答案为$0$,当$k=1$或$k=n$时答案为$1$,否则答案为$2$。 B. OverCode 按题意模拟即可。 C. A message for you! 按题意模拟即可。 D. Test Cases 枚举左端点,往右枚举右端点,同时维护每个数字出现次 阅读全文
摘要:
问题等价于树形依赖背包,允许一条链每个点各免费一次。 设$f[i][j]$表示按DFS序考虑到$i$,体积为$j$的最大收益。 先放入不能免费的物品,等遍历完儿子后再放入必选的物品,那么$i$到根路径上所有点都只算了不能免费的部分。 然后将DFS序翻转,设$h[i][j]$表示按DFS序考虑到$i$ 阅读全文
摘要:
A. Odd Palindrome 所有回文子串长度都是奇数等价于不存在长度为$2$的偶回文子串,即相邻两个字符都不同。 B. Enlarging Enthusiasm 注意到方案数不超过$(n-1)\times (n-1)!$,爆搜出所有可行方案即可,需要大量常数优化。 C. Fear Facto 阅读全文
摘要:
建立新图,原图中每条边在新图中是点,点权为$w_i$,边权为两个字符串的LCP。 对字典树进行DFS,将每个点周围一圈边对应的字符串按DFS序从小到大排序。 根据后缀数组利用height数组求LCP的原理,类似地可以得到: 令$h_i=LCP(str_i,str_{i+1})$,则$LCP(str_ 阅读全文
摘要:
起点/终点向每个圆的切点连边。 任意两个圆的公切点之间连边。 同一圆上相邻两个关键点之间连边。 然后Dijkstra求最短路即可,时间复杂度$O(n^3)$。 注意判边可行性的时候要忽略这条边来源的圆,可以提高精度。 阅读全文
摘要:
二分答案$mid$,若存在一条路径满足$|ave-k|<mid$,则答案至多为$mid-1$。 若$ave\leq k$,则$\sum(w-k)\leq 0$,且$\sum(k-w-mid)<0$;若$ave\geq k$,那么同理。 预先树分治处理出所有到重心的路径的信息,并按$w-k$排序。 那 阅读全文
摘要:
A. Balloon Robot 假设机器人$0$时刻位于$0$号位置,那么每个气球所需的时间为$(s_a-b)\bmod m$。 将所有气球按这个时间排序,枚举每个气球的时间作为偏移量,得出最优解即可。 时间复杂度$O(p\log p)$。 B. Expected Waiting Time 设$f 阅读全文
摘要:
对修改操作按时间分治,设$solve(l,r,n,m)$为考虑时间在$[l,r]$的修改操作,作用范围是$n$个点,$m$条边的图。 若$l=r$,则暴力Tarjan统计桥边个数即可。 否则提取出$[l,r]$内涉及修改的所有边$E$,并将端点标记为$V$,显然$|V|=O(|E|)$。 加入$m$ 阅读全文
摘要:
A. Alien Sunset 暴力枚举答案即可。 B. Breaking Biscuits 等价于选择一对距离最小的平行线夹住所有点。 枚举一条边,计算两侧所有点到这条直线的距离的最大值即可。 时间复杂度$O(n^3)$。 C. Cued In 按题意模拟即可。 D. Deranging Hat 阅读全文
摘要:
A. Base $i - 1$ Notation 两个性质: $2=1100$ $122=0$ 利用这两条性质实现高精度加法即可。 时间复杂度$O(n)$。 B. Squaring a Bit 直接暴力枚举平方数即可通过,需要手写popcount。 C. Chickens 状压DP求方案数。 D. 阅读全文
摘要:
A. Automatic Door 对于规律的点可以推公式计算,对于噪点则暴力计算,时间复杂度$O(m\log m)$。 B. Berland Army 首先若存在环则无解,否则通过DP可以求出每个数的最小值。 然后按照逆拓扑序,每次选择下界最小的点,填充最大的可以填充的值。 时间复杂度$O(m\l 阅读全文
摘要:
A. Connectivity 设$f[i][j]$为第$i$张图中$j$点所在连通块的编号,加边时可以通过启发式合并在$O(dn\log n)$的时间内维护出来。 对于每个点,设$h[i]$为$f[j][i]$的hash值,若两个点hash值相等,则它们在$d$张图中均连通。 #include<c 阅读全文
摘要:
A. A Place For My Head 留坑。 B. New Divide 从高位到低位贪心,当这一位是$0$时,要尽量取$1$,维护高维后缀最小值进行判断即可。 时间复杂度$O((n+a)\log a)$。 C. Lying From You 留坑。 D. Don’t Stay 留坑。 E. 阅读全文
摘要:
问题即:选择价值和最多的链,使得每个点最多被一条链覆盖。 那么考虑其对偶问题:选择最少的点(每个点可以重复选),使得每条链上选了至少$w_i$个点。 那么将链按照LCA的深度从大到小排序,每次若发现点数不够,则在LCA处补充点,树链剖分+线段树维护。 时间复杂度$O(m\log^2n)$。 阅读全文
摘要:
A. Tree Orientation 树形DP,$f[i][j][k]$表示$i$的子树中有$j$个汇点,$i$往父亲的树边方向为$k$的方案数。 转移则需要另一个DP:$g[i][j][k]$表示考虑前$i$个儿子,子树中有$j$个汇点,$i$的出边个数是否是$0$的方案数。 时间复杂度$O(n 阅读全文