04 2020 档案
摘要:LINK: "多项式 exp" 做多项式的题 简直在嗑药。 前置只是 泰勒展开 这个东西用于 对于一个函数f(x) 我们不好得到 其在x处的取值。 所以另外设一个函数g(x) 来在x点处无限逼近f(x). 具体的 $f(x) ≈ g(x)=g(0)+\frac{f^1(0)}{1!}x+\frac{
阅读全文
摘要:容易想到 这个环一定是简单环。 考虑如果是复杂环 那么显然对于其中的第一个简单环来说 要么其权值为负 如果为正没必要走一圈 走一部分即可。 对于前者 显然可以找到更小的 对于第二部分是递归定义的。 综上 这个环是一个简单环。 那么最多有n个点。 考虑枚举起点 然后 设f[i][j][k]表示从i到j
阅读全文
摘要:LINK: "Cupid's Arrow" 前置函数 atan2 返回一个向量的幅角.范围为[Pi, Pi) 值得注意的是 返回的是 相对于x轴正半轴的辐角。 而判断一个点是否在一个多边形内 通常有三种方法: 一种就是令这个点向多边形内所有边求角度的和 如果为2Pi 或者 2Pi那么就在其中 一种是
阅读全文
摘要:LINK: "简单树" 以后我再不认真读题 我TM活该退役 又因为没认真读题多调了20min.时间珍贵啊。 题目最后让ans%n 我没取模 自闭ing. 还是挺有意思的题目。求x到区间[L,R]的所有点的距离。 这个还是一个非常经典的问题。需要把答案的式子列出来。 $\sum_{i=L}^R(dis
阅读全文
摘要:LINK: "聪聪与可可" 这道题的核心是 想到如何统计答案。 如果设f[i][j]表示第i个时刻... 可以发现还需要统计位置信息 以及上一次到底被抓到没有的东西 不太好做。 两者的位置都在变化 所以需要设出状态 f[i][j]表示第聪聪在i位置 可可在j位置的期望步数。 容易想到转移. i==j
阅读全文
摘要:LINK: "小H的小屋" 尽管有论文 但是 其证明非常的不严谨 结尾甚至还是大胆猜测等字样... 先说贪心:容易发现m|n的时候此时均分两个地方就是最优的。 关于这个证明显然m在均分的时候的分点一定是n的子集 考虑不为均分的时候答案一块增多一个增少 但是增多的幅度显然更大 所以的证。 然后 当m不
阅读全文
摘要:第一次遇到二维卷积 不太清楚是怎么做的。 40分暴力比对即可。 对于行为或者列为1时 容易想到NTT做快速匹配.然后找答案即可。 考虑这是一个二维的比对过程。 设表示以i,j为右下角的答案。 那么我们把询问矩阵给上下翻转 左右翻转。设初始矩阵为a 询问矩阵为b 且询问矩阵大小为x,
阅读全文
摘要:LINK: "旋转卡壳" 如题 是一道模板题。 容易想到n^2暴力 当然也能随机化选点 (~~还真有人过了~~ 考虑旋转卡壳 其实就是对于某个点来说找到其最远的点。 在找的过程中需要借助一下个点的帮助 利用当前点到当前线段的所构成的面积来判断高度是否足够高。 容易证明第二个指针最多跑两圈 第一个指针
阅读全文
摘要:LINK: "Uim的情人节礼物·其之壱" 壱 古代通壹 常在日文中出现。 完全可以使用STL —— prev_permutation来解决。 不过我简单了解了一下康托展开。 这是一个一个排列对应一个数字的双射. 具体的 对于一个排列 有唯一一个数字和其对应。 计算方法为 见code. 实际上可以使
阅读全文
摘要:LINK: "信用卡凸包" 当 R==0的时候显然是一个点的旋转 之后再求凸包即可。 这里先说点如何旋转 如果是根据原点旋转的话 经过一个繁杂的推导可以得到一个矩阵。 [cosw, sinw] [sinw,cosw] 这个矩阵就是旋转矩阵 乘一下当前的坐标 [x,y] 就可以得到逆时针旋转w度的答案
阅读全文
摘要:LINK: "集合计数" 容斥简单题 却引出我对广义容斥的深思。 一直以来我都不理解广义容斥是为什么 在什么情况下使用。 给一张图: 这张图想要表达的意思就是这道题目的意思 而求的东西也和题目一致。 特点:求出某个集合恰好为k的个数。 转换:求出集合 =k的个数或者=k个数 如上图可见 又很多重复的
阅读全文
摘要:LINK: "求正整数" 比较难的高精度。 容易想到贪心不过这个贪心的策略大多都能找到反例。 考虑dp. f[i][j]表示前i个质数此时n的值为j的最小的答案。 利用高精度dp不太现实。就算上FFT也会T掉。 乘积的形式 我们可以将其变成对数的形式就很容易转移了。 转移时记录决策 然后 最后做一遍
阅读全文
摘要:LINK: "Multiple Testcases" 得到很多种做法。其中O(n)的做法值得一提。 容易想到二分答案 check的时候发现不太清楚分配的策略。 需要先考虑如何分配 容易发现大的东西会对小的产生影响 而 对于某个能放的位置 我们放大的一定比小的要优。所以为了防止出现对小的影响到了需要调
阅读全文
摘要:LINK: "游戏" 还是过于弱鸡 没看出来是个二项式反演,虽然学过一遍 但印象不深刻。 二项式反演:有两种形式 一种是以恰好和至多的转换 一种是恰好和至少得转换。 设表示至多的方案数 表示恰好的方案。 则有 根
阅读全文
摘要:LINK: "Placing Rooks" 丢人现场.jpg 没看到题目中的条件 放n个rook 我以为可以无限放 自闭了好半天。 其实只用放n个。那么就容易很多了。 可以发现 不管怎么放 所有列/所有行 都必须得放有。 那么最多只有n 1个pairs 当k==0时 容易发现是一个n!. 总之还是迷
阅读全文
摘要:LINK: "I hate Matrix Construction" 心情如题目名称。 主要说明一下构造的正确性。 准确来说这道题困扰我很久。 容易发现可以拆位构造。 这样题目中的条件也比较容易使用。 最后等价于每一行每一列有一个 当前行/列有一个1或者0的限制。 考虑直接进行构造。 容易发现这类似
阅读全文
摘要:LINK: "T3" 比较好的题目 考试的时候被毒瘤的T2给搞的心态爆炸 这道题连正解的思路都没有想到。 一看到题求删除点的最少个 可以使得不连通。 瞬间想到最小割 发现对于10分直接跑最小割即可。 不过想要通过n^2需要一些奇技 如从Si跑到Tj 想要得到i到j+1的答案 只需要再从Tj跑到Tj+
阅读全文
摘要:LINK: "Permutation" 休闲一下 开了一道构造题。 看起来毫无头绪 其实仔细观察第二个条件 0 1)<<1; calc(cc,k); rep(1,cc 2,i)printf("%d ",a[i]); if(n&1)printf("%d ",n 2 1),printf("%d ",n
阅读全文
摘要:LINK: "亚瑟王" Saber!Excalibur! 比较难的期望dp. 可以发现如果暴力枚举所有的局面复杂度很高 。 转换的思路则是 期望的线性性。 求出每张牌的期望累加即可。 考虑每张牌的期望=这张牌使用的概率 这张牌造成的伤害。 容易得到第一张牌使用的概率=$p_1+(1 p_1)p_1+
阅读全文
摘要:LINK: "T1" 算是一道中档题 考试的时候脑残了 不仅没写优化 连暴力都打挂了。 容易发现一个性质 那就是同一格子不会被两种以上的颜色染。(颜色就三种. 通过这个性质就可以进行dp了.先按照左端点排序。 设f[i]表示前i个画笔必选的最大价值。 枚举决策j 分类讨论相交还是包含 还是相离。 其
阅读全文
摘要:LINK: "仓鼠找sugar II" 以前做过类似的期望题目 加上最后的树形dp不算太难 还是可以推出来的。 容易发现 当固定起点和终点的时候 可以先固定根 这样就不用分到底是正着走还是倒着走了。 1为根 我们要求 x到y的期望步数. 由于期望的线性性 可以设出f[x]表示x到父亲的期望步数 g[
阅读全文
摘要:LINK: "Little Pony and Expected Maximum" 容易设出状态f[i][j]表示前i次最大值为j的概率。 转移很显然 不过复杂度很高。 考虑优化。考虑直接求出最大值为j的概率 对于1显然 对于2 显然有$(\frac{2}{m})^n
阅读全文
摘要:LINK: "纯粹容器" 一道比较不错的期望题目。 关键找到计算答案的方法。 容易发现对于每个点单独计算答案会好处理一点。 暴力枚举在第k轮结束统计情况 然后最后除以总方案数即可。 考虑在第k轮的时候结束 我们要求出其所有的方案。 首先一个点在第k轮结束必须要有一个点在第k轮和它相遇。 如果暴力枚举
阅读全文
摘要:LINK: "Spiders Evil Plan" 非常巧妙的题目。 选出k条边使得这k条边的路径覆盖x且覆盖的边的边权和最大。 类似于桥那道题还是选择2k个点 覆盖x那么以x为根做长链剖分即可。 不过这样过不了。 还是考虑树的直径 可以发现覆盖x的那些点一定有一个是树的直径的两端之一。 所以我们直
阅读全文
摘要:只存在加边操作 所以每次只对割边有影响。 考虑求出所有的边双联通分量 然后进行缩点。 那么原图就变成了一颗树 且所有边都是割边。 考虑k==1的时候 显然是求出树的直径。 考虑k 1时 一个错误的贪心:把刚才树的直径上的边标记为0 然后再求直径...... 容易构造出反例让其错误。 题解上的做法过于
阅读全文
摘要:很容易的一道题目。大概。不过我空间计算失误MLE了 我草草的计算了一下没想到GG了。 关键的是 我学了一个dalao的空间回收的方法 但是弄巧成拙了。 题目没有明确指出 在任意时刻数组长度为有限制什么的 况且这道题也不卡空间 nlogn或者再大一倍的空间都是可以过的。 但是 我仍然作死写了两个队列
阅读全文
摘要:神题 上午想了很久 都没有得到一个比较优秀的做法。 对于npx,pxpv 时 可以不合并 相对于合并 结果不会更差更优。(因为一旦合并这就意味着要访问这个连通块需要衡量整体的代价 合并必然使代价不降。 但是 代价为负的时候必要合并。 gx px,px pv,gv pv 时 此时可以发现 我们如果能够
阅读全文
摘要:LINK: "随机漫游" 非常妙的一道题。 容易想到倒推期望。 设状态 f[i][j]表示到达第i个点 此时已经到达的集合为j能走到全集的期望边数。 只要求出来这个就能O(1)回答询问。 $f[i][j]=1+\sum_{v\in son_x,v\notin j}\frac{1}{d_i}f[i][
阅读全文
摘要:LINK: "Active Infants" 一个快省选的人 还在写ABC(~~莫名觉得丢人~~ 不过也无所谓了. 首先考虑 随便一个排列 我们考虑一下其是不是最优的 容易发现如果最大值没有在边界上的话我们直接把它放到边界上 显然会更优。 接下来考虑次大值等等。可以发现从大到小排序后 前面的值都是紧
阅读全文
摘要:算是一道很毒瘤的题目 考试的时候码+调了3h才搞定。 op==1 显然是快速幂。 op==2 有些点可以使用BSGS 不过后面的点是EXBSGS. 这个以前学过了 考试的时候还是懵逼。(~~当时还是看着花姐姐的题解学的~~ 为了起到再次复习的作用 我决定 再推导一遍。 对于高次同余方程 $a^x\e
阅读全文
摘要:思维题。 显然考虑爆搜。然后考虑n^2能做不能。 容易想到枚举中间的数字mid 然后往mid两边加数字 使其整个集合权值最大。 这里有一个比较显然的贪心就不再赘述了。 可以发现这样做对于集合是奇数的时候可以遍历到所有最优的情况。这一步复杂度为n^2. 但是值得注意的是 如果集合为偶数的时候怎么解决
阅读全文
摘要:考虑40分。 设出状态 f[i]表示匹配到了i位还有多少期望长度能停止。可以发现这个状态有环 需要高斯消元。 提供一种比较简单的方法:由于期望的线性可加性 可以设状态f[i]表示由匹配到i到匹配到i+1需要的期望长度。 需要预处理前缀和和KMP的nex数组来辅助转移。 考虑正解。 容易想到建立出AC
阅读全文
摘要:LINK: "子序列自动机" 想了一些很有趣的做法。 dp 容易看出 f[i][j]表示前i个数匹配了j个数的dp 不过复杂度很高。 贪心 容易想到匹配的时候每个数字尽量往前匹配 这样显然是最优的 复杂度Qn. 可以发现 这个贪心显然可以优化 我们无非是要寻找下一个离当前位置最近的一个位置。 动态开
阅读全文
摘要:LINK: "树与异或" 这种套路题还是得多写写。 第一问 直接树上莫队即可(不过这个板子也容易遗忘 推荐dfs序上搞 树分块总觉得比较难写... 第二问 询问树上路径上点权为z的倍数的点的个数. Analysis:可以考虑暴力了。暴力枚举z 然后统计询问的答案。 不过每次要将z的倍数的点要加到数据
阅读全文
摘要:容易发现可以枚举j 那么只需要计算出 l~j这段是回文串的l的和 以及j+1~r这段是回文串的r的和。 可以manacher 之后想要求出以j为右端点的回文串左端点的和 这个东西我们通过某个点为中心的最长回文子串来做出。 容易发现是一个类似于等差数列的东西的 可以上线段树 不过没有在线询问啥的 可以
阅读全文
摘要:这道题涉及了一个很久以前会的知识点 考试的时候建图硬是没想出来 真自闭。 对于n<=10 容易发现可以爆搜全排列 期望的得分20. 对于 观察发现方阵中的值都为正数 这意味着某种数字选多少都行 有关的是当前这种数字选了没有。 数字只有10个 爆搜某种数字选了没有即可。 40 code:
阅读全文
摘要:把树剖和倍增 线段树的联系诠释的很完美。 题目意思:自行理解。 做法:设两个点x,y x能挡住y 且在k点处 那么至少的得到一个式子 tx+dx dk=sx时可以通过反之不行。且x时y到根的路径上的点。 将等式变形 容易发现 dy+ty =sx+dx. 每次其实就是链上查询一点 然后链上赋值操作。
阅读全文
摘要:LINK: "文本编辑器" 这个东西感觉块状链表写细节挺多 (~~块状链表本来就难写~~ 解释一下块状链表的做法:其实是一个个数组块 然后利用链表给链接起来 每个块的大小为sqrt(n). 这样插入删除的时候直接暴力插入删除即可 复杂度都是根号的。 插入的时候当前的块过大的时候就要分裂 查询时对于大
阅读全文
摘要:LINK: "密码系统" 容易发现一共有k种不同的划分 而每种划分中我们要求出字典序最大的那个然后和其他的比较求出字典序最小的。 先考虑如何求出最大的 容易发现这是字典序的问题 求出sa数组然后倒着扫描就行了 分段的话按i%k分即可。 求出最大的了之后考虑如何求出最小的 容易发现还是sa数组看一下他
阅读全文
摘要:LINK: "智破连环阵" 考试的时候 题意没理解清楚 题目是指一个炸弹爆炸时间结束后再放另一个炸弹 而放完一个炸弹紧接另一个炸弹。题目中存在然后二字. 这样我们可以发现某个炸弹只会炸连续的一段。 但是 由于点的坐标虽然只在第一象限 炸弹也在第一象限 不过简单的设出几个状态可以发现 是不可行的。 状
阅读全文
摘要:LINK: "Eden 的新背包问题" 就是一个多重背包 每次去掉一个物品 询问钱数为w所能买到的最大值。 可以对于每次Q暴力dp 利用单调队列优化多重背包 这样复杂度是Qnm的。 发现过不了n==10的点。 仔细观察n==10的点 可以发现我们暴力枚举 某个物品不选之后的最大值即可。设状态f[i]
阅读全文
摘要:LINK: "path pass i" 原本想了一个点分治 yy了半天 发现重复的部分还是很难减掉 况且统计答案的时候有点ex. (~~点了别人的提交记录 发现dfs就过了~~ 于是yy了一个容斥 发现可以直接减掉不合法方案。 对于某个点的总方案 :$1+\frac{n\cdot (n 1)}{2}
阅读全文
摘要:LINK: "牛牛与序列" (牛客div1的E题怎么这么水... 还没D难. 定义一个序列合法 当且仅当存在一个位置i满足 $a_i a_{i 1},a_j 1; } return cnt; } signed main() { freopen("1.in","r",stdin); get(T); w
阅读全文
摘要:LINK: "跳跃" 不算难想的题目 考试的时候没想出来 还是想的太少 思路被束缚住了。 第一个想法 二分 发现check的时候还是需要枚举点对来算距离什么的 然后弃掉。 计算过样例后发现一个点到达右边可能先去左边再一下子跳到右边。 直接建图bfs。 发现这样做是n^3的 直接线段树优化建图了。 复
阅读全文
摘要:LINK: "牛牛的等差数列" 每次给一个区间加上一个等差数列 求区间和。 不是李超线段树==. 也不是等比数列 所以等差数列具有区间可加性。 考虑一个标记d(p)表示节点p这个区间的等差数列要逐渐加d(p). 这个可以当做懒标记下传。 注意下传的时候 左边对右边的贡献要乘上整个区间 修改也是。 细
阅读全文
摘要:LINK: "数据" 这是一个我写过的最标准的板子。 重构什么的写的非常的标准 常数应该也算很小的。 不过虽然过了题 我也不知道代码是否真的无误 反正我已经眼查三遍了... 重构:建议先插入 插入过程中找到第一个不平衡的点再重构。 最小距离查询剪枝:当前坐标为mn和mx中间的时候显然 最小距离可能为
阅读全文
摘要:LINK: "牛牛的数学题" 题目看起来很不可做的样子。 但是 不难分析一下i,j之间的关系。 对于x=i|j且i&j==0, i,j一定是x的子集 我们可以暴力枚举子集来处理x这个数组。 考虑 x+k这个东西 对于一个y来说 x(0 y) k(0 y)容易发现这是一个NTT. 对于最外层^h 显然
阅读全文
摘要:LINK: "最短母串" 求母串的问题。不适合SAM。 可以先简化问题 考虑给出的n个字符串不存在包含关系。 那么 那么存在的情况 只可能有 两个字符串拼接起来能表示另外一个字符串 或者某个字符串的后缀可以当成别的字符串的前缀使用。 实际情况可能更加复杂。 观察上面的两种情况 容易AC自动机可以解决
阅读全文
摘要:LINK: "梦中漫步" 当然也可以去一本通的Oj/loj上交(loj可能没有.. 期望好题。期望和dp往往是在一起的。 前置知识:1. 期望是线性可加的。2.和的期望等于期望的和. 从u出发每次随机选一条边走 问走到v的期望经过的边数。 寒假的时候就在思考这道题了 当时yy了一个LCA乱搞的方法
阅读全文
摘要:LINK: "跳楼机" 很早之前就想学的一个东西。发现这个东西果然神奇。 我们要找到 所有的 w满足 .且 暴力枚举是不行的。 做法是这样的:先考虑 ax+by的情况 考虑先让x和y组合成一堆数字 然后最后加上一些z。 考虑对于一个楼层c
阅读全文
摘要:容易写出nQ的暴力 由于数据是期望的时间 所以直接dfs可以跑的很快 可以拿到70分。 当然 可以进一步优化暴力 使用换根dp 然后可以将暴力优化到n^2.
阅读全文
摘要:LINK: "数据备份" 以前做过这种贪心 不过没有好好的证明 这次来严格的证明一下。 不难发现 最后的答案 选择的所有两对公司必然相邻。 所以排序后 把数组变成ai ai 1. 这样问他的模型就是 n 1个数从中选出k个数 且任意两个数不能相邻 求和的最小值。 k==1时显然是全局最小值。 k==
阅读全文
摘要:一道矩阵乘法的神题 早上的时候我开挂了 想了2h想出来了。 关于这道题我推了很多矩阵 最终推出两个核心矩阵 发现这两个矩阵放在一起做快速幂就行了。 当k==1时 显然的矩阵乘法 多开一个位置维护前缀和即可。当然也可以 公式法: 证明其 只需要数学
阅读全文
摘要:LINK: "Kaavi and Magic Spell" 一打CF才知道自己原来这么菜 这题完全没想到. 可以发现 如果dp f[i][j]表示前i个字符匹配T的前j个字符的方案数 此时转移变得异常麻烦 状态转移一次变成了O(n). 会超时 而且这个状态的转移也是不正确的 可能当前的S字符串后面放
阅读全文
摘要:LINK: "Xenia and Colorful Gems" 考试的时候没想到一个很好的做法。 赛后也有一个想法。 可以考虑答案的样子 x,y,z 可以发现 一共有 xg[3]; inline ll js(ll a,ll b,ll c){return pf(a b)+pf(a c)+pf(b c)
阅读全文
摘要:LINK: "模板 树同构" 题目说的很迷 给了一棵有根树 但是重新标号 言外之意还是一棵无根树 然后要求判断是否重构。 由于时无根的 所以一个比较显然的想法暴力枚举根。 然后做树hash或者树的最小表示法。 前者做一次时n^2logn的 而后者则是严格的n^2logn的。 这样加上暴力枚举根就是n
阅读全文
摘要:LINK: "Perfect Triples" 初看这道题 一脸懵逼.. 完全没有思路 最多就只是发现一点小规律 即。 a<b<c. 且b的最大的二进制位一定严格大于a b的最大二进制位一定等于c. 但是这对解题没有任何用处。 考虑打个表看看有什么规律没有. 通过这道题 我承认 打表找规律也是一个技
阅读全文
摘要:LINK: "Edge Weight Assignment" 这场当时没打 看到这个B题吓到我了 还好当时没打。 想了20min才知道怎么做 而且还不能证明. 首先考虑求最小。 可以发现 如果任意两个叶子节点之间的距离都是偶数 那么显然 答案为1. 可以发现 如果有两个叶子之间的距离为奇数 那么答案
阅读全文
摘要:看一眼题目 显然点的状态之间合并也没用 所以状压dp就不行了。 观察点数 很少 但是边数很多 还是考虑爆搜点数。 容易获得 30分的阶乘搜索。 其实很容易发现这个可以使用折半搜索来优化。 不过考试的时候 想了一个非常麻烦的折半搜索 所以GG. 原来的思路:由于一定形成回路 那么 可以先2^n枚举其中
阅读全文
摘要:好题 np. 对于20分 显然可以爆搜。 对于50分 可以发现每个字符串上的问号要么是0,要么是1.考虑枚举一个字符串当前是0还是1 这会和其他字符串产生矛盾。 所以容易 发现这是一个2 sat问题。 拆点 把任意两个产生矛盾的字符串进行连边。然后最后判矛盾即可。 n^2枚举 建图 判断矛盾时使用字
阅读全文
摘要:没脑子选手又来丢人了 写正解写不出来 暴力的特判也给写挂了。 看一眼题目范围 sumk1时 考虑建一棵虚树出来。按边处理。 怎么说 对于两个点 重合部分中间再建一个点 然后表示一下负贡献。 我不太能理解这一点 好毒瘤... 先咕了 放篇题解在这 LINK: "Altria Pendragon 大佬的
阅读全文
摘要:LINK: "P5667 拉格朗日插值2" 给出了n个连续的取值的自变量的点值 求 f(m+1),f(m+2),...f(m+n). 如果我们直接把f这个函数给插值出来就变成了了多项式多点求值 这个难度好像有点大。 不妨 直接考虑拉格朗日插值。 设此时要求f(k) 那么则有 $\sum_{i=0}^
阅读全文
摘要:LINK: "duoxiao OJ LCA on Tree" 题目: 一道树链剖分+树状数组的神题。 (直接nQ的暴力有50. 其实对于树随机的时候不难想到一个算法 对于x的修改 暴力修改到根. 对于儿子的答案维护 不难发现维护几个变量值即可 这样做每次是Qh的复杂度 在树随机时为logn 考虑正解
阅读全文
摘要:考试的时候 看到概率 看到期望我就怂 推了一波矩阵树推自闭了 发现 边权点权的什么也不是。 想到了树形dp 维护所有边的断开情况 然后发现数联通块的和再k次方过于困难。 这个时候 应该仔细观察一下 和再k次方之后会出现什么 容易发现是一个类似隔板法的东西。 也就是 选出k个点的集合 集合可重 代价为
阅读全文
摘要:考试中 插值往往很重要 如一个多项式很难求的时候 我们经常带入数值生成点值 最终进行插值插出来。 不过GAUSS消元的复杂度太高 一般采用拉格朗日插值法。 n+1个x坐标不同的点可以确定唯一的最高为n次的多项式。 设该多项式为f(x) 第i个点的坐标为(xi,yi) 如果我们要在k点处取值 那么 f
阅读全文
摘要:LINK: "Select Half" 考试的时候调了一个小时给调自闭了 原来是dp的姿势不太对。 首先 容易发现 奇数最多空2个位置 偶数最多空1一个位置 然后 设f[i][j][k]表示第i个数选了没有j 且当前用了k个空位的最大值。 然后把自己给dp迷了 最后发现选的数量无法固定所以 这个dp
阅读全文
摘要:考试的时候昏了头 没算空间 这道题我爆零了。值得注意的是 一般认为bitset的空间是 int 的1/w倍 对于那m条边 无论如何构造 这m条关系都是存在的 题目其实是想让我们用这m条关系来计算给出的 t条关系是否合法。 合法把这m条边输出即可。 这道题 虽然不是多组数据 但是评测时开了subtas
阅读全文
摘要:这种题 一眼不可做的样子 给了10分bfs 不过我当时开了个map判边界 其实可以将坐标轴平移几个格子就行了 然后把输入的坐标全部都搞成正的 bfs即可。 对于y==0 推坐标的规律 把两部三部能走的奇怪的步伐给搞出来 用0,4跑然后特判一下即可。 对于x==y 这个用3,3跑 然后特判一下。 bf
阅读全文
摘要:LINK: "Removing Robots" 没想到 自闭。 考虑了一个容斥 发现不合法方案难以计算。 就算可以计算也几乎是n^2的做法。 考虑dp 左边会对右边产生影响 所以考虑先dp右边的再考虑左边的。 至于dp 自然是f[i]表示这个i~n这么多点的方案数。 设 i向右第一个影响不到的点为w
阅读全文
摘要:容易想到二分。 看到第一个条件容易想到缩点。 第二个条件自然是分段 然后让总和最小 容易想到dp. 缩点为先:我是采用了取了一个前缀最小值数组 二分+并查集缩点 当然也是可以直接采用 其他的奇奇怪怪的做法。 二分为重 发现变成了dp使得总a值尽可能小的问题。 方程为 f[i]=min(f[j]+ma
阅读全文
摘要:LINK: "Divisor Paths" 考试的时候已经想到结论了 可是质因数分解想法错了 导致自闭。 一张图 一共有D个节点 每个节点x会向y连边 当且仅当y|x,x/y是一个质数。 设f(d)表示d的约数个数 那么x y的无向边的边权为f(x) f(y); 每次询问两个点x,y之间的最短路径的
阅读全文
摘要:写了一种比较容易理解 但是常数很大的sol. 容易发现可以扫描线。 维护好序列之后发现很难查距离 考虑二分。 这里二分可以在线段树上进行 当然可能存在一些问题 如果离散化的话需要处理一些比较麻烦的细节 如:需要向左二分一次向右二分一次什么的。 当然也可以直接在外面二分 得到一个区间 发现只要区间的本
阅读全文
摘要:这道题超级的妙。 30分可以发现题目中的建图最多建n条 剩下的都没用 所以暴力建nQ条边跑克鲁斯卡尔即可。 对于Qbi 其中一种情况和上面一样 还会发现有 4,2 5,3 6,4这种连边方式 f[i][1]表示i这个点和其父亲的父亲的连的边权即可。 利用f数组进行更新其他的f值 可以发现存在环 所以
阅读全文
摘要:由于圆不存在相交的关系 所以包容关系形成了树的形态 其实是一个森林 不过加一个0点 就变成了树。 考虑对于每个圆都求出最近的包容它的点 即他的父亲。然后树形dp即可。暴力建图n^2. 一些细节:两个圆并列的时候注意让下半圆弧优先 注意距离的计算公式。
阅读全文
摘要:有同学在loj上找到了加强版 所以这道题是可以交的。LINK: "生成树求和 加强版" 对于30分 爆搜 可实际上我爆搜只过了25分 有同学使用按秩合并并茶几的及时剪枝通过了30分。
阅读全文
摘要:LINK: "字符串大师" 给出一个字符串的每个前缀的最小循环元 还原字典序最小的原字符串。 一个比较显然的结论 或者说 学过KMP的都知道 对于每个前缀i求出nex数组后 那么i nex[i]为最小循环元。 这道题择则是给出每个前缀的最小循环元 由于题目中保证有解 我们可以推得 nex[i]=i
阅读全文
摘要:题目很简明 可是 上午反演的时候无计可施。 直接做是nln的 可以简单转换一下 原式= 这样就有一个O(n)的做法了 由于d是积性函数直接筛就好了。没必要整除分块 直接O(n). 推到这里就可以自闭了。 d这个函数的前缀和不能杜教筛 也没有一
阅读全文
摘要:LINK: "珠宝" 去年在某个oj上写过这道题 当时懵懂无知wa的不省人事 终于发现这个东西原来是有决策单调性的。 可以发现是一个01背包 但是过不了 冷静分析 01背包的复杂度有下界 如果过不了说明必然存在某种特殊的条件。 果然 物品的代价k). 如果前者比后者优那么对于更大的 i来说 刚刚的i
阅读全文
摘要:赛后看了半天题 才把题目看懂 英语水平极差。 意思:定义一个集合S的权值为max{gcd(a,b)};且 这个集合可以从1~n中选出一些数字 求出当集合大小为k时的最小价值。 无法二分 考虑构造。 考虑一种简单的情况 1~n的中gcd(a,b)最大为多少 可以发现我们只需要枚举i
阅读全文
摘要:LINK: "Challenges in school №41" 考试的时候读错题了+代码UB了 所以wa到自闭 然后放弃治疗。 赛后发现UB的原因是 scanf读int类型的时候 宏定义里面是lld的类型导致UB. 读错题的原因是 太急了 而且题目描述不是很清晰 导致按照自己含糊不清的想法+样例的
阅读全文
摘要:LINK: "树点涂色" 还是由暴力的思路拓展出来。可以发现对于初始情况一个点的权值就是深度。 可以发现每次1操作是 LCT的access操作。 考虑2操作 求x到y的权值和。 可以发现其实是求x的答案+y的答案 2 LCA(x,y)的答案+1 为什么 考虑 lca和他们两条路径上的最后一个点颜色都
阅读全文
摘要:发现和SDOI2017树点涂色差不多 但是当时这道题模拟赛的时候不会写 赛后也没及时订正 所以这场模拟赛的这道题虽然秒想到了LCT和线段树但是最终还是只是打了暴力。 痛定思痛 还是要把这道题给补了。 但是对于这道题来说 暴力还是有价值的。 考虑20分 每次暴力dfs. 考虑对于树是随机生成的 那么期
阅读全文
摘要:LINK: "密码" 给出来manacher的数组 让还原出字典序最小的字符串。字符集为小写字母。 当没有任何限制时 放字典序最小的'a'.如果此时还在最长的回文串中的话那么 直接得到当前字符即可。 注意这个过程要在上次放过的位置之后放 不能暴力放 暴力放是n^2的 确定位置跟原来的manacher
阅读全文
摘要:实乃一道神题。 考试的时候不会求树上的路径交 所以懒得写非常ex的暴力 所以爆零了。 现在想想当时把链的做法给推出来了 为什么当时不写链呢?脑子抽了估计。 考虑链的做法 可以发现 路径的交是非常好求的 判断是否有解也首先判断是否有交。 有交之后 如果是同向 我们让他们都同时一起走 想一下什么时候有解
阅读全文
摘要:LINK: "幸福的道路" 题目有坑.题意:一棵树 求出每个点到树上另外一个点的最大距离 在距离数组上求出最长一段连续的区间使其极差f[x]) { g[x]=f[x]; f[x]=f[tn]+e[i]; w[x]=tn; }else g[x]=max(g[x],f[tn]+e[i]); } } in
阅读全文
摘要:还是太菜了 没有察觉到自己常数大。 可以简单的发现每个数字对答案的风险为 C(n 1,i 1). 对于模数为质数 显然可以卢卡斯定理。 对于模数不为质数 显然可以分解质因数使用扩展卢卡斯定理(分解质因数+求阶乘+exgcd+CRT. 题解上给的则是逐项计算 然后对于每个质因子采用上述约分法 但是对于
阅读全文
摘要:LINK: "万径人踪灭" 很妙的一道题 说明我NTT的意识还不够. 题目中的一个非常特殊的条件 字符串只有a,b两种。 考虑求出所有的方案 连续的一段回文串不算 间隔的才算 发现我们如果去枚举间隔 再统计回文串会非常麻烦。 显然我们求出这个字符串中所有的 不管有没有间隔的回文串都求出来 最后减掉一
阅读全文
摘要:LINK: "1280: Emmy卖猪pigs" 非常奇怪的最大流..建图还是一如既往的难想 感觉以前做过这个东西 所以也不难想出来辣. 考虑一头猪给谁都行都会增加贡献 但是不同位置的猪进行不同位置的挑选会带来更大的代价 这就是选位置即匹配问题.所以考虑最大流. 顾客一个一个来 就一个一个建图 为什
阅读全文
摘要:LINK: " 6177.美团 送外卖2" 一道比较传统的状压dp题目. 完成任务 需要知道自己在哪 已经完成的任务集合 自己已经接到的任务集合。 考虑这个dp记录什么 由于存在时间的限制 考虑记录最短时间 因为时间越短 对于任务来说越优。 考虑设f[i][j][k]表示已经做完的任务为i接受的任务
阅读全文
摘要:luogu LINK: "驱逐猪猡" bzoj LINK: "猪猪快跑" 问题是在1时刻有个炸蛋在1号点 这个炸弹有p/q的概率爆炸 如果没有爆炸 那么会有1/di的概率选择一条边跳到另外一个点上重复这个过程。 问炸弹在第i号点上爆炸的概率。 一个比较传统的在图上期望的题目。考虑每一秒都有p/q的概
阅读全文
摘要:LINK: "洞穴攀行" 题目有鬼了。。 注意理解时间的含义 并非同一时刻而是指某次训练。 所以可以发现是最大流。
阅读全文
摘要:LINK: "值日班长值周班长" 题目描述非常垃圾。 题意:一周5天 每周有一个值周班长 每天有一个值日班长 值日班长日换 值周班长周换。 共n个值日班长 m个值周班长 A是第p个值日班长 B是第q个值日班长 问 最早是哪一天 使得值日班长为A且值周班长为B. 显然是一个类似于方程组的题目 可以列出
阅读全文
摘要:LINK: "Drazil Likes Heap" 那天打CF的时候 开场A读不懂题 B码了30min才过(当时我怀疑B我写的过于繁琐了。 C比B简单多了 随便yy了一个构造发现是对的。D也超级简单 dp了一下就没了。 但是到E就只剩下30min(都怪A B浪费我过多时间。 观察题目中给的一个程序
阅读全文
摘要:题目要求所有牛都去避雨的最长时间最小。 显然需要二分 二分之后考虑如何判定。 显然每头牛都可以去某个地方 但是前提是最短路径=ans; } int main() { freopen("1.in","r",stdin); get(n);get(m);int cnt1=0;S=ncnt1){puts("
阅读全文
摘要:比较套路的题目。 可以发现难点在于某个点的权值动态修改 且我们要维护树上一条路径上的点权 x的个数。 每个点都在动态修改 这意味着我们的只能暴力的去查每个点。 考虑将所有可以动态修改的点变成静态的 这样查询好查 那么外部需要一个动态的标记 且这个标记适用于所有点。 不难想到我们的循环标记i 即第i次
阅读全文
摘要:LINK: "城市规划" 以前ls 让写的时候由于看不懂题目+以为在图中的环上dp非常困难所以放弃治疗了。 现在终于能把题目看懂了 泪目... 题目其实就是在说 给出一张图这个有一个非常好的性质 满足每个点都最多存在于一个无向边组成的环中。 这种图可以称之为仙人掌 但是比仙人掌的性质还要好 不仅只满
阅读全文
摘要:LINK: "上学路线" 从(0,0)走到(n,m)每次只能向上或者向右走 有K个点不能走求方案数,对P取模. p=1000003或p=1019663265 考虑dp......(没啥意义. 要求出 从(0,0)到(n,m)
阅读全文
摘要:LINK: "神奇项链" 存在两个操作:1. 一个操作可以生成所有形式的回文串 2.一个操作可以将两个串给合并起来 如果前缀和后缀相同还可以将其并起来。 多组询问 每次询问合成一个串所需最少多少次2操作。 不考虑1操作 那么我们可以把所有需要的串都给生成出来 对于原字符串没有贡献的当然是不需要的了。
阅读全文
摘要:看起来是一个相当经典的问题 不过很难解决。 考虑我们只需要统计两个圆弧相交的情况 所以对于前70分 可以直接把所有的圆弧求出来。 对于nx在yy处加1 然后y+1到n区间求和。 可以发现 xx可能 y所以考虑减掉不合法的 再开一个树状数组 将xx处加1 再减去y+1到n的xx的和即可。 可以发现还是
阅读全文
摘要:像这种计数 问题什么的 是最讨厌的了... 考虑是环往环后面再续一段 暴力枚举前两个数字 树状数组统计第三个数的个数 n^2log. 考虑只枚举第个数 发现由于边界问题什么的很难处理。 再将枚举直接放到环上 发现边界问题没有了 不过存在 枚举第二个数之后 有 123 231 312 这三种形式。 第
阅读全文
摘要:给一张图 要求 对于$if[s][x]+e[i]) { f[s][tn]=f[s][x]+e[i]; if(!vis[tn])q[++r]=tn,vis[tn]=1; } } } } int main() { freopen("1.in","r",stdin); get(n);get(m);get(
阅读全文
摘要:最近模拟赛中有带修线性基这个我 (闻所未闻 见所未见) 的黑科技。 我们仍未知道那天所见到的黑科技的名字 这道例题是动态加边 每次询问一个独立集的最大权值。这里的权值定义为题目中的定义。 对于前两个测试点 暴力枚举选出了哪些点 然后判断哪些边可以用 通过这个暴力的操作可以发现 将边的权值异或到点上
阅读全文
摘要:LINK: "Independent Set" 题目定义了 独立集和边诱导子图。然而和题目没有多少关系。 给出一棵树 求 表示一张E的独立集的个数。E'为边诱导子图. 在这棵树中 边诱导子图的个
阅读全文
摘要:注意观察题目 每个点都只能将石子给自己的两个儿子 且石子个数 =1. 显然 这是一个阶梯NIM. 只有和最后一层的奇偶性相同的层才会有贡献 证明也很显然。 那么这其实就是近乎NIM游戏了 胜负自然取决于所有有贡献的石子堆的异或和。 但是 上午我傻了的一点 没有分清SG函数和NIM游戏的联系。 在NI
阅读全文
摘要:可以发现 某一段被删除后状态难以表示 也难以链接起来。 考虑暴力 有40分的状压dp 暴力存状态 然后枚举转移即可。最后注意和f[0]这个状态取max 不然一分都没有。
阅读全文
摘要:给出一棵树 每个点都有一个颜色ci 问 从i号点出发到任意一个点的路径上本质不同的颜色之和。 光线性扫描时不行的 显然有的暴力。 考虑树是一条链的时候怎么做? 可以发现先求出1的答案然后维护换根的过程 记录每个点颜色的pre 前驱 nex后继很容易通过分类讨论
阅读全文
摘要:LINK: "[Lydsy1710月赛]小A的咒语" 每次给定两个串 要求从a串中选出x段拼成B串 能否做到。T组数据。 首先考虑贪心的从前往后匹配 若果当前匹配位置比之前还要远覆盖之前的 但是这样做会出现
阅读全文
摘要:LINK: "最短路" 一张仙人掌图 求图中两点最短路。 考虑边数是多少 m =n 1 对于一张仙人掌图 考虑先构建出来dfs树 非树边会形成环 环不可能相交 也没有自环 那么说一每形成一个环需要一条树边和非树边。 所以m=dfn[x]) { int y=0;sum=0; a[++sum
阅读全文
摘要:LINK:一个人的高三楼 求一个数列的K次前缀和。 前缀和K次。这类似于多项式卷积。 构造 普通型生成函数F(x)表示数列中的每一项 0次前缀和 考虑如何生成1次前缀和 构造多项式G(x). 使得
阅读全文
摘要:求出期望 所有情况很好搞 C(n+m 2,n 1). 也就是说求出所有情况的和乘以上面总方案的逆元即可。 可以发现所有情况和经过多少个障碍点有关 和所处位置无关。 简单的设f[i]表示从1,1到n,m经过i个障碍点的方案数。 可以发现求出这个数组就得到了答案。 发现每过一个障碍点 体力就会除以2 所
阅读全文
摘要: 题目上求出 多少条本质不同的路线。 首先定义了 相似的城市为度数相同的城市。 还定义了两条路线相同当且仅当长度相同 且对应位置的城市都是相似的。 考虑这张图的形态 n 1条边 且每个点都能到1号点。 不可能出现环 因为 考虑如果出现环必然 x个点 x条边 根据鸽巢原理
阅读全文
摘要:题意:n×m的棋盘 有k个格子坏了不能放棋子 每个好的格子只能放一个棋子 至少要摆多少个棋子满足行的棋子个数 =列的棋子个数 = 网络流经典题目 不过好久没做了 还是有点菜。 显然 可以考虑二分 结果发现dp不了 看n,m的范围考虑网
阅读全文
摘要:LINK: "小C的独立集" 无向图的最大独立集问题是NPC的. 而树的独立集是固定的 二分图的最大独立集是网络流的(总点数 最大匹配数。 这道题是求出一张仙人掌图的最大独立集。 跟树差不多 我们考虑环 和非环的问题。 环上点比较特殊除了自己的儿子对自己有限制 还有环上两点对其的限制。 非环 直接树
阅读全文
摘要:LINK: "Height All the Same" 比赛的时候 被这道题给打自闭了 还有1个多小时的时候开始想 想了30min 无果 放弃治疗。 心态炸了 F不想看了 应该要把题目全看一遍的 下次不能这样了。 首先考虑总共的方案数 你发现 什么都没有了 开始分析性质
阅读全文
摘要:LINK: "CF662C Binary Table" 一个nm的表格 每个元素都是0/1 每次操作可以选择一行或一列 将0/1翻转.可以操作无限次。 问最终局面最少有多少个1. 可以发现 先翻列再翻行等价于先翻行再翻列 先翻行再翻列再翻行 如果行是相同
阅读全文
摘要:LINK: "跳蚤" 给出一个字符串 将字符串划分成不超过k个子串 每个子串对答案的贡献为字典序最大的子串。答案为字典序最大的子串。 如何划分让答案尽可能的小。 考虑二分答案。 难点在于 分成的子串的最大子串 =mid。 mid 为答案 我们可以把排名为mid的子串给求出来 这个可以二分查找 也可以
阅读全文
摘要:LINK: "除法与取模" 鬼题。不过50分很好写。考虑不带除法的时候 其实是一个dp的组合计数。 考虑带除法的时候需要状压一下除法操作。 因为除法操作是不受x的大小影响的 所以要状压这个除法操作。 直接采用二进制状压是不明智的 2的个数最多为13个 2^13也同样到达了1e4的复杂度。 考虑 ha
阅读全文