05 2022 档案
摘要:传送门 发现对一个区间做操作会使整个区间中的一些相关位变一样 那么线段树维护,区间不完全相同就暴力递归 维护区间当前最大值 复杂度应该是 \(O(n\log^2 n)\) 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF
阅读全文
摘要:传送门 考虑暴力是 \(O(n^2k)\) 的 考虑暴力这份码: for (int i=1; i<=n; ++i) for (int j=1; j<=k; ++j) for (int l=0; l<i; ++l) f[i][j]=min(f[i][j], f[l][j-1]+sqr(t[i]-t[l
阅读全文
摘要:传送门 欸,AT 出达哥原题! 哦达哥打过这一场,那没事了 还是考虑对每只火鸡预处理出它能活下来的前提集合 这个用 bitset 就能搞 复杂度 \(O(n^2+\frac{nm}{\omega})\) 点击查看代码 #include <bits/stdc++.h> using namespace
阅读全文
摘要:传送门 发现 check 是否合法可以用栈贪心 压入一个元素时若与栈顶相同就弹栈 合法条件是最后栈为空 先考虑怎么 \(O(n^2)\) 发现若维护出 \([1, i]\) 和 \([i+1, n]\) 的栈,则合法仅当两栈完全相同 那么枚举 \(i\),枚举其被换成了什么,枚举合法的 \(j\),
阅读全文
摘要:传送门 我 tm 没做出来这玩意…… 考虑一个 \((A_i, B_i)\),先令 \(A_i\leqslant B_i\) 则能影响到它的 \(T\) 满足 \(T\geqslant A_i, B_i\) 考虑在一个 \(T\in[A_i, B_i-1]\) 的操作后卡牌肯定 B 面向上 那么找到
阅读全文
摘要:传送门 发现这个“在每个本质不同子串中的出现次数十分阴间” 我们可以做一个神奇的转化: 这个东西就是在原串的前后添加一些字符,使得到的串是 \(s\) 的子串的方案数 正确性显然,就是在拼产生贡献的本质不同子串 那么这个问题就比较好解决了 在前面加字符就是 parent 树的子树内的节点 在后面加字
阅读全文
摘要:传送门 好神奇.jpg 先来考虑一个弱化版问题听说是经典问题: 给定一个长度为 \(n\) 的序列 \(A\),求满足 \(\forall i,P_i\le A_i\) 的 \(1\sim n\) 的排列数量 那么做法是将 \(a\) 排序后,方案数即为 \[tot=\prod\limits_{i
阅读全文
摘要:传送门 AGC 的优雅.jpg 首先有个 \(O(n^2)\) 的简单 DP 然后手玩一下转移路径发现答案是这个东西 \[\sum\limits_{i=0}^n\sum\limits_{j=0}^m\frac{\max(i, j)}{i+j}\frac{n^{\underline{n-i}}m^{\
阅读全文
摘要:传送门 首先考虑一个暴力 DP 令 \(f_{i, j, k}\) 为点 \(i\) 所在子树,强制选 \(i\) 的最大权独立集为 \(j\),强制不选的为 \(k\) 的方案数 转移考虑每次并进来一个子树 这样的复杂度是 \(O(n^5k^4)\) 的 然后意识到将子树 \(v\) 合并进 \(
阅读全文
摘要:传送门 首先可以想到二分答案转化为判定 然后我猜测可以贪心每次选能到的点中最大的,但沈老师说假了我也不知道为什么 然后正解: 一个 \(O(炸天)\) 的 DP 是令 \(f_u(i, j)\) 为 \(u\) 子树内到最先到的点路径权值为 \(i\),到最后到的点路径权值为 \(j\) 且所有其它
阅读全文
摘要:传送门 除了二进制分组什么都想了.jpg 基本复读zxy dalao的题解 考虑只有对角线为零怎么做 考虑对角线上的点行列编号相等 那么枚举二进制位,分别对此位 行为0列为1 和 行为1列为0 的做一次 这样是 \(O(2\log n)\) 的 考虑扩展到对角线下面那条斜线也是全零的情况 那么将列按
阅读全文
摘要:传送门 剩 1h10min 的时候发现自己做法假了,疯狂修锅 剩 40min 的时候终于把问题转化成了一个自己不会的板子,于是就爆零了/kk 首先发现本质不同子串个数是 \(O(n^2)\) 级别的,所以这棵树并不能建出来 但发现只有黑色点是有用的,考虑建出一棵压缩后缀树 发现这个东西就是对正串建
阅读全文
摘要:传送门 还是先来口胡一个做法: 发现只有每次区间内出现次数 \(\geqslant p\%\) 的数是有用的,考虑怎么合并两个区间 发现新区间内出现次数 \(\geqslant p\%\) 的数一定在原区间出现次数 \(\geqslant p\%\) 的数中间 那么对每个可能的数 \(O(\log
阅读全文
摘要:传送门 这是真的神仙题! 关于最小化字典序的另一种可能的切入点:转化为最小字典序欧拉路,用欧拉路满足限制,同时最小化字典序 发现这个操作十分神奇,完全不能找到性质 于是一个可能的切入点见Booksnow的题解 然后正解: 将 0 视为 -1,1 视为 1 后跑前缀和 则区间 01 数量相等的限制变为
阅读全文
摘要:传送门 让我来胡一些应该能艹过的做法( 首先这题看着就很莫队 用 set 维护,插入一个数时查前驱后继就可以做到 \(O(n\sqrt m\log n)\) 然后发现只要查前驱后继,可以先离散化后用树状数组代替 set 做到小常数 \(O(n\sqrt m\log n)\) 然后发现其实是可以直接分
阅读全文
摘要:传送门 首先有一个 \(O(n\sqrt n\log n)\) 的暴力 DP,枚举以 \(r\) 为右端点的区间的左端点转移 发现需要做一些区间 \(\pm 1\) 以及区间查询 \(\sum y_i\mid (x_i, y_i), x_i\leqslant k\),其中 \(k\) 是定值 容易想
阅读全文
摘要:传送门 让我先来口胡一个 \(O(n^2)\) 的也许能优化但就算能我也肯定懒得写的做法: 考虑补集转化,计算存在最后不被染黑的点的方案数 那么考虑枚举在所有点完成染色后最靠左的不被染黑的点 提前令一个 \(f_i\) 为区间 \([1, i]\) 所有点最后都能被染黑的染色方案数 那么考虑 \(i
阅读全文
摘要:传送门 真的非常神仙的签到题(?) 题解看了一上午才看懂 首先考虑按位确定 考虑一个答案的这一位就是 \(\oplus_{i=1}^n[(a_i\oplus x)的这一位为1]\oplus [(a_i+x)向这一位产生进位]\) 前面一项的异或和是容易计算的,关键是后面一项 令 \(mask=2^{
阅读全文
摘要:传送门 首先发现答案为 \(\sum\limits_{i=2}^n\begin{Bmatrix}n\\i\end{Bmatrix}(2i-1)!!\) 于是可以过 90 pts 然后考虑换做法:(复制题解) 官方题解 倒过来看合并就是拆分。一次拆分将集合拆成两个非空子集,可以对应到一棵每个节点代表
阅读全文
摘要:传送门 先将黑色石子形成的游戏独立出来 打表或模拟递推 SG 的过程发现 # 结论 记最小的黑色堆大小为 \(m\),且有 \(c\) 个,则黑色堆的子游戏的 SG 函数值为: \[ m - \big((c \bmod 2) \oplus [所有黑色堆大小相同]\big) \] 嗯 markdown
阅读全文
摘要:传送门 《关于我先猜是根号分治然后发现时限是 7s 于是联想到这可能是 SDOI2022 Day1T1 这个事》 首先有一个 \(O(siz_{涉及到的两种颜色})\) 的处理两种颜色的做法,可以处理 大-大,小-小 然后 大-小 怎么办呢? 令块长为 \(B\),那么对较小的颜色枚举区间是 \(O
阅读全文
摘要:传送门 MD 我是 NT 做了 tm 一场这个题只 tm 会 \(n^5\) 结果出来一看 \(n^4\) 直接写还 tm 是能 \(n^2\) 爆标的原题( 好了,原题 注意算出逆序对数平均数再乘方案数会方便很多 否则在合并两个子树的时候并不容易计算其中一个根节点对总方案的贡献 点击查看代码 #i
阅读全文
摘要:传送门 因为是在补题解所以不再证一遍了,link 那么问题变为扫描线维护区间 lowbit 异或和 关于区间 lowbit 异或和: 一个神奇的事情是如果对 \([0, 2^{31})\) 开线段树,那么每个区间都形如 \([a2^b, (a+1)2^b)\) 然后一个这样的区间的 lowbit 异
阅读全文
摘要:传送门 不会做 考虑一个暴力扫描线,会发现对于一个右端点,区间 gcd 不同的左端点形成了 log 个区间 然后发现题目要求选出的所有区间 gcd 都相等,所以尝试将 gcd 相等的区间都拎出来 发现因为需要考虑让第 \(i\) 个点在这个区间里所以并不好处理 那么进行补集转化,求第 \(i\) 个
阅读全文
摘要:传送门 这个题还是很好做的!(震声 这里提供一个不需要平衡树也不需要启发式合并~~但跑的比这两个都慢~~的 $O(n\log n)$ 做法 考虑一个连通块内部的边 容易发现可以等效成 这个连通块中的所有点构成的凸多边形 的边 那么考虑连通两个点会使得若干个连通块合并 发现合并次数和维护凸多边形所需的
阅读全文
摘要:传送门 先说自己口胡的垃圾做法: 肯定是想按 \([1, n]\) 的顺序将每个数放到能放到的最小位置上 那么根据 \(i\) 和 \(i+1\) 能否交换可以将 \([1, n]\) 这个序列分为若干个连续段 那么每个数能放到的最小位置就是所在连续段每个数所在下标的最小值 那么贪心放,放完一个数后
阅读全文
摘要:\(\forall\) 权值 \(V\),考虑最小值 \(\geqslant V\) 概率,差分可得 \(=V\) 概率 考虑路径 \(x\to y\) 上的一点 \(u\in[x, y)\) 将权值 \(\geqslant V\) 的点称作黑点,\(<V\) 的点称作白点 要求从点 \(u\) 进
阅读全文
摘要:传送门 发现这个东西很像回文反正我没发现 那么考虑 manacher 这是核心操作,感觉通过维护 \(n\) 和 \(p\) 来判断区间合法的思路并不容易想到 然后发现 manacher 的过程中还有一个 d[i]=min(d[mid*2-i], r-i+1); 这个东西在这道题里需要暴力反推直到不
阅读全文
摘要:传送门 发现一个星座就是一个点双 发现每个点双大小只有 6 发现对每个点双 \(k^{|s|}\) 枚举染色理论上有 60~80 pts 最后发现自己已经不会写圆方树了回归 20 pts 正解基本上就是这个东西 发现大力枚举染色很无脑 将具体式子写出来发现贡献和每个点双内部的同色连通块数有关 那么大
阅读全文
摘要:传送门 一场 4 个小时多点根本不够用,T1 就没怎么看 考虑第一棵树的方案数 按顺序填点的话,一个想法是维护这个点前面有多少个点不是叶子 那么这个点的父亲就有这么多种选法 然而直接这样是不对的,会有钦定某个点不是叶子后面却没有点以它为父亲的情况 那么可以加一维记录有多少个点钦定为非叶子但还没有连边
阅读全文
摘要:传送门 浙江刚考完就知道 Day 1 T2 考了个根号分治 然后今天对着题死活不知道怎么分…… 首先容易想到一个 \(O(n*本质不同数字个数^2)\) 的做法 枚举一对 \(i, j\),前缀和维护最小转移点可以找到一个区间内取 j,区间外取 i 的最大出现次数 然后仔细想一下发现只有 \(i出现
阅读全文
摘要:传送门 猜的结论假了,然后意识比较混沌一直没有多生成几个随机数据找性质,于是喜提 10 pts 先说乱搞: 发现偶数可以直接用 \(\frac{a_i}{2}\) 拼出来 发现若存在一个偶数则剩下的数都可以用 \(\frac{a_i}{2}+(a_j-\frac{a_i}{2})\) 表示出来 然后
阅读全文
摘要:传送门 提示:在区间 \([0, 1]\) 中随机一个实数 \(x\),那么 \(x=0\) 的概率为 \(0\)。 这基本上把做法明说出来了 发现一个随机点恰好落在一个给定面上的概率也为 0 那么不存在四个随机点共面的情况 所以这实际上是道立体几何 手动枚举四个点中有几个是中点 最后答案是 \(三
阅读全文
摘要:传送门 因为太困了赛时并没有认真做这个题 有些多项式真的是可以手动求逆的 关于 \(x\) 的非整数次多项式(主要指 \(F(x)=\sqrt{a+bx}\),\(a, b\) 为常数)一类的东西可以牛顿二项式定理展开 可以使用分子/分母有理化让未知数在分式上来回挪 发现是要计算有多少种染色方案能建
阅读全文
摘要:传送门 为啥题解的思路引入都是从两边向中间贪心啊 为啥只有我想的是从左往右贪心啊 好的首先如果只有一次询问的话那么可以贪心走连续段 然后想要优化每次走连续段的过程 那么我们肯定是要对着一些固定的且可拼合的路径预处理跳连续段的结果 考虑对每个点倍增预处理向上跳 \(2^k\) 个连续段最高能到达的节点
阅读全文
摘要:传送门 考虑对每个 \(z\) 求出收益 \(\geqslant z\) 的方案数,然后差分减去 对每个 \(z\),考虑枚举用了 \(x\) 个左括号 那么有 \(n-x\) 个右括号,最多有 \(k=n-x-z\) 个是可以浪费的 令选左括号为向上走,选右括号为向右走 那么就是从 \((0, 0
阅读全文
摘要:传送门 好奇怪啊,建个笛卡尔树试试? 需要枚举左右子树的点对,可以之枚举一边的? 只枚举比较小的那边? \(O(n\log n)\)?懒,所以用 map,再加个 log 也能过 点击查看代码 #include <bits/stdc++.h> using namespace std; #define
阅读全文
摘要:传送门 给孩子整自闭了.jpg 首先发现可以将位数相同的数缩成一个集合 然后还能发现集合内部有连边的点可以直接缩成一个点 再然后就不会了 对于一部分构造题,尤其是给边定向一类的,考虑图匹配/网络流 以上与本题基本无关 考虑上面已经推得的结论 因为树上不能有环,所以同一集合内的点都是由外面的点连通的
阅读全文
摘要:传送门 莫名……神仙? 首先考虑对于一个固定的 \(k\) 怎么做。 不会做,只会 \(O(nk^2)\) 可以见这个题,用同样的方法可以得到一个 \(O(n)\) 的贪心 那么现在可以做到 \(O(n^2)\) 了 然后做法就比较显然了,发现取值相同的很多 仔细想想发现不同的取值只有根号种 因为
阅读全文
摘要:传送门 基本上是讲课题了……思维瓶颈都讲完了 发现 \(d\) 值最大的一定是叶子 发现若 \(d_i\) 已知且 \(i\) 的子树已知,则 \(d_{fa_i}\) 是可以推得的(考虑远离子树内的点 1,靠近子树外的点 1) 发现题目保证了 \(d_i\) 两两不同 那么排序后推一遍就可以获知合
阅读全文
摘要:传送门 (不太记得了,复述题解中) 先原根转化,那么可以变成加法 发现把所有的 0 当成 1 去计算,之后再用 0 覆盖受影响的区域,不会影响答案的正确性 那么令 \(b\) 为原根转化后序列的集合幂级数 相当于每次乘 \(1+x+x^{-1}\pmod {x^n}\) 然后发现 \((1+x+x^
阅读全文
摘要:传送门 发现等价于每个机器先将全部匹配的子串都删掉 那么用 kmp 可以做到 \(O(nm)\) 正解考虑分治: 设定阀值 \(B\),串长较大时跑 kmp 较小时维护所有 \(len\leqslant B\) 的子串的 hash 值 复杂度平衡后是 \(O(n^{\frac{5}{3}})\) 但
阅读全文
摘要:传送门 考虑二分答案为 \(mid\) 反证不打破的选前 \(k\) 大一定更优 反证剩下的每次一定选最大的打破 反证每次一定将当前打破的优先分配给前 \(a_i-mid\) 小的 然后发现一定存在一种方案每次分配后每个球的魔力值按原顺序(在打破第一个球前升序排序)单调不降 具体地,值不同时分配给值
阅读全文
摘要:传送门 一个想法是在 \(h\) 的时间内能出发多少个怪是固定的 那么最后主角停留的位置就是能让最多怪在路上的位置 经过题解证明一些人类智慧发现最优策略可以简化为直接走到该位置 考虑主角与怪的移动速度相同,可以证明只要能走到 \(u\),在 \(u\) 处的答案就是从一开始就在 \(u\) 的答案
阅读全文
摘要:传送门 原题 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 3000010 #define ll long long //#define int long long char
阅读全文
摘要:传送门 赛时死在了一个奇怪的地方 首先有一个枚举 \(x, y\),用 \(z\) ban 掉不合法方案的做法 这样是 \(O(n^2)\) 的 然后优化:可以枚举 \(z\),用分属两个不同子树的点对 \((x, y)\) 更新答案 这个分属两个不同子树看着枚举最大的子树就很多余 然而我只想到枚举
阅读全文
摘要:传送门 首先 \(A=0\) 的部分可以离线下来扫描线 然后 \(C=0\) 的部分是一个关于 \(\frac{y_i}{x_i}\) 的限制,可以离线下来按极角序排序 再然后就不会做了 关于平面内均匀随机撒点:注意到在 \(\sqrt n\times\sqrt n\) 的平面分块下,每个块内期望只
阅读全文
摘要:传送门 这世界上最可恶的事情就是打表题打出来表了没找到规律 规律是 证明不会 求这个东西直接求会算重,减去即可 点击查看代码 #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 2000010
阅读全文
摘要:传送门 题又读错了,两种题意都不会做 /kk 我读成啥了? 题目描述 给定一张 \(n\) 个点的竞赛图。边是有向边,但你不知道方向。 每次询问,你可以获得一条边的方向。 要求出可以到达其余所有点的点的个数。 保证边的方向均匀随机且不随你的询问而改变。 \(n \leqslant 10^5\)。 求
阅读全文
摘要:传送门 艹感觉自己在划大水 所以这题是水过去的 我把题读成了什么呢?每次选若干个点对,将这些点对及与之相关的边全部删除 于是自闭一上午 等通过题解意识到自己题读错了已经没意愿再好好想题了 那么暴力可以枚举左部点集,仅保留两点集之间的边看是否连通 因为保证是二分图了嘛,可以反证这样合法(水博 然后一个
阅读全文
摘要:传送门 题解做法十分神仙 Sol 1: 设 \(F_i\) 为选了 \(i\) 个数的集合幂级数,其中 \([z^j](F_i)\) 为选了 \(i\) 个数异或和为 \(j\) 的方案数 再令 \(H\) 为所有数构成的集合幂级数,也即 \(\sum x^{a_i}\) 那么有转移 \(F_i=H
阅读全文
摘要:传送门 一个随机序列的最长上升子序列长度期望是 \(O(\sqrt n)\) 级别的 那么对询问(不是操作)按 \(l\) 排序后期望形成 \(O(\sqrt n)\) 个 询问均呈包含关系的集合 对每个集合分别吉司机线段树暴力求答案 这样复杂度就是 \(O(n\sqrt q[\log n, log
阅读全文
摘要:传送门 真·就我切不掉签到题 其实口头切了,但做法太恶心了所以写不出来 发现每个位置最多进行一次操作 1 所以 check 一个区间可以贪心,看会不会有减成负数或弄不成偶数的地方 没有 0 的话就只需要考虑有没有弄不成偶数的地方 一个区间合法的条件是区间内有偶数个奇数 容易想到扫描线+线段树历史和,
阅读全文
摘要:传送门 发现就是找一个环,要求环上有一根弦 直接找不好找,把 dfs 树建出来 然后发现只要有一条边同时被至少两个环包含就一定有解 但输出方案比较麻烦 要是在赛时我就写个拍然后大力分类讨论 艹正解就是分类讨论 但是…… 脑残时可能会忘记:dfs 树是没有横叉边的! 但是这并不意味着扫出边时已经访问过
阅读全文
摘要:[CF1264E] Beautiful League [WC2007] 剪刀石头布 真·网络流看题解乐趣尽失 关于有向图三元环定向/计数: 有一个巧妙的性质是合法三元环对于所有三条边(不考虑方向)补集转化后 发现每个不合法方案中一定存在且仅存在一个点的出度为 2 在完全图中尤其有用,可以直接转化为
阅读全文
摘要:传送门 非常巧妙而神奇的绑 subtask 的大细节题 本题的名字长度都只有 1 或 2 所以若形成回文,要么是两个本质相同的名字对位匹配,要么是一些名字形成 A BC D - DC BA 这样的交错匹配 考虑一个巧妙的连边方式: 对于字符集建点,并建出虚点 0 对于长度为 1 的名字,连边 \((
阅读全文
摘要:传送门 关于存在终止位置的随机游走: 考虑令 \(f_i\) 为在所有时刻走到这个点上的点权和 那么每个最终每个终止位置(到这样一个位置后便无法离开)停留的点的点权的期望即为 \(周围点在所有时刻点权和的期望\times 周围点到这个点的概率\) 于是 40 pts 的大力高斯消元可以写了 但是现在
阅读全文
浙公网安备 33010602011771号