03 2024 档案
摘要:官方题解写的是真菜。。。 但还是解释一下,将人按照 降序排序之后,我们再固定一个点 ,只考虑抢的人来自前 个,那么前 个人中剩下的 个人中,一定是都被帮助的,否则如果存在一个啥都没做的人,我们可以选择在当前已经抢了的人当中少选一个人抢,然后去抢这个啥都没做
阅读全文
摘要:这道题目肯定是想办法尽量全部都取正数 我们考虑 和 如果 为负,那么我们可以把第二张牌之后的所有正数全部拿下:从第三张牌一直拿,直到第三章牌为负数,此时删除第二张牌,于是就可以重复了。所以这个时候如果 为正就取,为负就不取,无论怎样都拿走了所有正数
阅读全文
摘要:看官方题解吧,写的很清楚,集合可以从这个角度想 考试的时候还卡了挺久。。。
阅读全文
摘要:这道题目实在没有什么好的办法去描述状态空间,只能感性理解一下,等对概率的理解更深了再来吧。。。 发现这是一道概率DP,而且满足拓扑序,我们直接倒序转移就好了 设 表示从第 个点到第 个点的概率,我们发现当只有一条出边是非常好转移的,但是其他就不太行了 我们遇到这种情况,就
阅读全文
摘要:这种花里胡哨的题目一看就是转化成图论最短路,然而我却不知道怎么转。。。 看这篇题解,写的很清楚 题解最后的处理,相当于在当前询问中, 会对应八个状态中的一些状态,同时 对这些状态的终点也有要求;而八个状态中除了这些状态,想变什么就变什么 update 2024.5.21
阅读全文
摘要:看官方题解即可 说明一下其对引理的证明 首先是不会删除比当前MEX大的数,假设前面已经是最优的删除方法了,对于当前删掉的数 ,如果 MEX,那么对于接下来的操作序列,我们直接将 放在这个操作序列的最后一个,答案显然不变 然后是要删数就一定删完,假设前面已经是最优的删除方法了
阅读全文
摘要:这道题目就看官方解答吧,写的很好 本来放在B题,肯定不是什么难题,但是我考试的时候是直接按照 和 的最大值和最小值讨论的,导致非常难讨论;而官方题解给我们的一种新的思路就是将全局的最大值和最小值也加入讨论,这样的话就可以简化讨论 当然我考场的时候也想到了估计有一个循环节,我所以我直接
阅读全文
摘要:这道题目肯定是期望DP,但是稍微分析一下就会发现,对第一个海盗来说,我每次一定是选择当前剩下的宝藏中价值最大的一个最优(所以期望是可以先用上贪心的,以后这里注意) 所以我们先将 排序,然后依次考虑 第一个海盗先选择,会选择 ,然后第二个海盗有 的概
阅读全文
摘要:复习一下,DP的时候,能预处理的一定要学会预处理,这里就需要用对顶堆预处理出每段的中位数,同时还要记录每一段大于中位数的数的和与小于中位数的数的和
阅读全文
摘要:#include<iostream> #include<easyx.h> using namespace std; int main() { initgraph(640,480); while (1); closegraph(); return 0; } 要加一个死循环防止闪屏 可以在initgra
阅读全文
摘要:这道题目我居然还是想出来了。。。开心 遇事不决转化图论,考虑一个很显然的连边方案,连有向边 ,表示如果最终位置 没有被画圈,那么位置 一定被画圈 剩下的看这篇题解,主要是注意代码实现 updpate 2024.7.1 由于要转换为图论,所以考虑连边 连边的时候
阅读全文
摘要:看这篇题解 这种转化应该比较容易吧,考虑贡献就好了。。转化之后将 升序排序应该也是比较自然的 讲一下为什么这种转化是正确的:我们考虑一一映射。对原来的一个子序列,我们按照其最大值为第一关键字,下标为第二关键字进行排序,显然会唯一映射到某一序列;对排序之后的序列,我们不妨假设序列也是按照最大值
阅读全文
摘要:看这篇题解,中间有个地方写错了 不应该是 ,应该是 (update 2024.9.6:好像没写错?) 来讲一下思路。这道题目贪心肯定不太好想,所以从DP的角度考虑,而DP需要连续的一段(也就是阶段性),所以我们考虑如何将 排序 我们选择将 从大到小排序(为什么
阅读全文
摘要:非常有意思的一道题目,正难则反 看这篇题解 感觉上很对,画个思维导图就可以严格证明了 拿样例举例 这样就可以明白为什么这种乘法原理是对的了 update 2024.7.31 其实正着想也可以做 先排除不可能的情况, 的第一个字母是?的话显然答案为 否则的话,考虑 的最后一个
阅读全文
摘要:建立函数按照这篇文章建立 但是证明这个函数是单峰的还是比较困难,我们只能来感性理解一下 我们首先将 从线段变成直线,然后在 为无穷远的时候,函数值显然为无穷,然后我们把 拉到附近,函数值显然就为有限值了,再将 拉到另一端的无穷远,函数值又为无穷了,像这种一般都是三分
阅读全文
摘要:见这篇题解 主要是注意负数偏移的trick,乘以 来cover小数的trick还有注意代码中的注释
阅读全文
摘要:主要是学一下输出,交互题里面不一定非要用cin和cout,这里用scanf就能够很方便的读出时间,注意scanf的格式控制串里面要打空格和左括号
阅读全文
摘要:基环树要求每个点有且仅有一条出边,这里是每个点最多有一条出边,所以会形成一个树与基环树的森林,我们将基环树缩点之后,建立一个大的源点 即可 这里缩点可以用tarjan,也可以用拓扑排序(排序完之后剩下的点就是环),所以记住基环树缩点的两种方法
阅读全文
摘要:这道题目主要是新学会一个trick:tarjan缩完点之后形成了一个拓扑逆序 什么意思?也就是说,缩完点之后,我们对每个scc进行连边,然后我们直接倒序循环,这就是一个topo序 可以参考这道题目的代码,注意初始化的时候不能只初始化 ,因为入度为 的点可能不止一个 upda
阅读全文
摘要:主要是讲一下tarjan算法的正确性 我们的连边方案是对每一对已经有了的婚姻,从女方向男方连边,然后对于交往过的关系,从男方向女方连边 分析题意不难发现,如果某一对夫妻处于一个环中,那么这对婚姻关系就是不稳定的 证明一下,如果说一对夫妻不在某个环中但还是不稳定的,说明存在一条合法的路径,即\(B_i
阅读全文
摘要:涉及乘法的差分约束,可以选择直接跑乘积最长路,也可以选择取对数转化为一般的差分约束 然后记住这道题目是求任意一种情况至少有一个约束不满足,然而差分约束是存在一种情况所有约束都满足,两个命题为取非关系,所以跑差分约束的无解情况就好了
阅读全文
摘要:目录EasyX函数putimagesolidrectanglesetfillcolorlineGetHWndDrawTextinitgraphSetWindowTextGetTickCountMouseHit与GetMouseMsgBeginBatchDrawsetbkmodeBeginBatchD
阅读全文
摘要:这道题目的官方解答写的就很好,看官解就好了 肯定是从最小的或者最大的数字开始考虑的 update 2024.7.29 重新做一遍,比较轻松地做出来了,用的官方解答 然而,看一看这篇题解 遇到二元关系,想到题解的做法也比较自然 证明不重不漏:显然树的拓扑序是必要条件,而对于任意一个拓扑序,可以用数学归
阅读全文
摘要:我们将 ,从而最终的答案一定是要小于 的,也就一定要有一位不同 我们从高位到低位枚举最高的一位与 不同的位置 (也就是说,认为第 位到最高位都与 相同,但第 位不同) 我们先考虑更高位置如何相同 如果更高位置为 ,那么那一位必须
阅读全文
摘要:这道题目的代码的写法非常新,可以学习 首先我们从 开始想起,此时显然一条边都不用切 然后是 ,我们发现所有叶子节点都不能分离开来了,我们把所有叶子节点与其父亲节点弄成一个连通块,显然这里切掉是最优的,在考虑剩下的树,仍然对叶子节点实施这个操作,直到最后没有剩下的树为止 于是我
阅读全文
摘要:以后注意这种本来是等式的题,可以转换成不等式用差分约束解决就好了 还有做了这么多题,会发现这种数轴上的关系可能是会被转化成差分约束的 update 2024.5.27 联想奇偶game这道题目,本题也可以用带权并查集做。这种传递关系的用并查集都很方便
阅读全文
摘要:这道题目就是因为对数论容斥不熟悉导致的。。。之前也做到过 看这篇题解 首先这篇题解用到了一个很大的纲领:公约数是最大公约数的约数 然后看下 怎么求:由于 表示的是 的对数,相当于 是 的公约数,所以我们把数组中\(
阅读全文
摘要:思路一:见这篇题解,当然只用看step3之后的就好了 思路二: 我使用的是转换对象法。从线段的角度不好考虑,我们从元素的角度考虑 如果我们已经确定了一个元素 为最大值,我们考虑所有线段 如果一个线段不包含 ,那么肯定不选择,因为他不会让最大值增加,反而可能会让最小值增加 如果
阅读全文
摘要:对于这种“要求划分出指定的连通块个数满足题目条件”的题目,我们可以往最小生成树上面想,另一道类似的:北极网络 这里的证明与北极网络是类似的 显然我们可以在Kruscal的过程中构造出的方案是合法的,假设循环到第 条边的时候结束了,那么我们可以认为前面 条边都加入了图中,形成了\(
阅读全文
摘要:借这一道题目来介绍一下最小瓶颈路和Kruscal重构树 首先本来这道题目我其实是没看出来是最大生成树的(因为不知道上面两个东西),然后我想的是二分,当然也可以做,但是复杂度多一个 对上面两个东西的介绍见OI-wiki 下面是一些解释 最小瓶颈路的性质的第一句话说“根据最小生成树定义”,
阅读全文
摘要:这道题目还是得手搓样例,从最简单的情形开始考虑就好了 比较形式化的语言见这篇文章 想一下为什么每次选 最大的就是我们对应的算法了 update 2024.5.26 看到“树上距离最远”可以往树的直径上面想,然后稍微分析就可以想到每次都要往直径中点两边加 然而这道题目的题解却给我们一
阅读全文
摘要:这里考试的时候其实就是想考递归,但是我实在是不清楚为什么 能够开到 。。。这不随便超时吗 介绍一个确定性算法的判断一个二叉树是否对称 首先一个二叉树的中序遍历有两种,一个是先遍历左子树,一个是先遍历右子树,我们用结构归纳法,可以证明以树根为中心翻转其中一种中序遍历,就会得到另一
阅读全文
摘要:这道题目就看官解吧,写的很好 没想到这可以和树的直径联系起来 以后这种不知道怎么做的,可以像官解说的,从简单的情形开始想起,比如一条链或者什么的 好好分析一下边界情况,把代码给写了 、 update 2024.8.18 重新做了一遍,还是没把边界考虑到。可能以后遇到距离了就要往树的直径上想吧,然后上
阅读全文
摘要:看看官解就好了,官解写的挺好的 因为题目用的“at least”嘛,所以我们直接考虑全部都是回文串的情况会发生什么
阅读全文
摘要:这个看起来是博弈论的题目,但实际上贪心太明显了,不是所有博弈论的题目就要搁着SG的 看官方解答就好了,写挺好 updat 2024.7.28 重新做的时候,认为Alice只会从小取到大了,注意Alice可以"adapt to Bob's strategy"啊
阅读全文
摘要:看这篇题解,那个 就是差分数组 证明一下题解的论断:从差分数组考虑,第一个不为 的位置在差分数组上的体现就是第一个不为 的差分数组,而每次修改只会修改 或 ,如果一个点不是任何 或 ,那他肯定为 想一想set怎么维护:对某个\
阅读全文
摘要:这道题目本身不算难,只是有一点点小的最短路算法的改动 我们首先从分层图的角度考虑这个问题,每一层代表一秒钟(一定要注意走一条边就要停 秒钟,而不是这层可以随便走;所以其实可以认为每一层内部都没有边,只有相邻两层之间有有向边) 在第一层,最开始只有 在集合中,然后我们扫描第一层中\(1
阅读全文
摘要:看这篇题解 肯定是先做easy version的 没错,我就是写了那个巨难调的代码的人,然后一个多小时没调出来。。。 所以以后再cf中,如果发现自己写的代码巨难调,可以先怀疑一下是否是有其他更简便的解法 另外这里其实没有必要二分套二分,在第二次二分的时候,重新对 数组排个序,然后依次比较如果
阅读全文
摘要:先看看这篇题解 解释一下,首先看到 这么小,当然从 入手嘛 是质数的情况,如果要操作,那么数列中肯定由 或者 组成(也可以两个都有),此时肯定一直操纵一个数是最优的,然后就有题解的结论 如果 ,这个时候如果有两个及以上的偶数,肯定不用操作 如果只有一个偶数
阅读全文
摘要:非常好的一道题目,用一个非常简单的trick就能化繁为简了 我们先按照常规的来想(也就是从伯努利实验的角度) 假设 中有 个金币,那么就有 个银币,我们假设有 个银币是价值为 的,那么总价值就是 ,概率就是\(\frac{1}{
阅读全文
摘要:哎,就差一个考虑上下界啊! 来看看官解 首先一个连通块的大小不可能超过 ,比较显然 当 的时候,我们将点连续的分成 个,然后考虑 的情形 官解是这么分权值的 其实我考试的时候想出来这个的,手搓几次样例就可以发现了
阅读全文
摘要:先来看看官方解答 官解的大意就是说,如果我们枚举 和 ,这样时间复杂度是会退化到 的,而我们如果利用转换对象法,考虑枚举 ,这样就可以在 的时间内进行转移,至于如何转移可以看官解(这个时候一定要记住只计数就好了,不用把每一个位置的匹配情况全部记
阅读全文
摘要:这道题目的官方解答写的就挺好的 小小证明一下官解的观察:显然我们最开始在偶块( ),我们每用一次自主的走动就会从偶块走到奇块,而接下来会紧跟一次被迫的走动从奇块走到偶块,根据数学归纳法就可以得证了 我其实用的是graph-based这一个解法,但是我没有观察出来官解的前提,我其实是手
阅读全文
摘要:首先可以看一看官解,通过对同一种相等字符的连续串来达到的 我们也可以这么证明,假设我们已经构造出来了一个字符串 ,考虑其最后一个字符 如果 与其前面一个字符不相等,那么 就对答案有一个贡献;此时如果我们在后面添加一个字符 ,若 ,则 的贡
阅读全文
摘要:新方法get 法一:我们考虑最终的答案,一定是从某一个关键点 走到另一个关键点 ,那我们要找一种最短路径,保证中途经过两个关键点,而且能够覆盖所有的关键点对。所以我们考虑把其中一部分关键点作为起始点的下一个点,剩下的关键点作为终点的上一个点,于是我们建立两个虚点 和\(
阅读全文
摘要:来看一下一般的根号算法的思路过程,见这篇题解 重点是这句话 所以一般来说,我们先写出最暴力的版本,然后考虑是否可以根号算法优化 那为什么我们要设置 数组呢?其实这里仍然运用了转换对象法这个思想,因为每次修改的数只有一个,但是模数却有很多个,所以我们可以尝试去统计贡献
阅读全文
摘要:很显然,这道题目可以借助“分手是祝愿”这道题目的思想 我们尝试寻找不变量。 从只有两种属性的情况开始讨论,发现我们只要记录其中一种魔法属性有多少个就好了 但是如果有更多种魔法属性呢?我们不可能将所有颜色的属性的个数都记录下来,这样时间复杂度肯定会爆炸。但是我们可以仍然借助之前的思想,就只考虑某一种颜
阅读全文
摘要:严谨的证明题解 当然,我们最好还是用这个题解,特别是其中最后说明的扩展的那一点,一定要记住 update 2024.8.7 解释一下这个题解 首先是那个辅助结论,所有题解的证明都是用抽屉原理证明的,然而这却不能说明这个斐波那契数列不能长成 型。但是根据接下来的算法,长成
阅读全文
摘要:这道题目虽然是放在容斥原理题单里面的,但实际上用的是二项式反演(当然这东西也是由容斥原理推导出来的) 但是啦我已经很满足了,我自己已经推出了大部分的式子了,只是最后不会二项式反演而已 这种没什么思路的题目,我们先从小范围开始想起 我们假设只有一门课,那么我们从 个同学中选出 个人
阅读全文
摘要:看这篇题解 能学到挺多东西的。 首先是容斥原理,我们看到了序列题不超过一半,可以往这上面想,因为一定不会有两种元素同时超过一半 然后就是DP,我们在这种情况下的DP一般都是预处理,但是这道题目是每次都要枚举不合法的列 进行DP,所以思维不要被限制了 最后是DP的优化。这是我第一次见到通过
阅读全文
摘要:这道题目看官方解答就好了,写的很好 我其实想到了官方解答的,但是卡在了写代码上。。 我想的是利用双指针迭代,但是分类讨论的情况很多。如果不用循环而用题目说的递归,显然更简单(其实官方题解的代码用的也是队列模拟,当然也比双指针简单) 借鉴一下题解的code吧 注意题目要求输出的是每次插入的位置,想一下
阅读全文
摘要:我们先来看看简单版本的想法,非常具有启发性 大致的思路见这篇文章 下面是对这篇文章具体操作的阐释 我们先将所有区间按照左端点单调递增排序,并统计每一个区间中 的个数(这个直接用前缀和就好了,设 表示前 个数中 的个数),枚举其中一个区间
阅读全文
摘要:此题利用转换构造法 首先,我们对两个连通块进行连边的时候,肯定是选择编号最小的点进行连边,所以下文的 都指代编号最小的 然后我们就没有其他思路了。。但其实样例一的解释给了我们一种猜想:最终的图一定可以长成以 号点为中心的菊花图(这也算考虑特殊元素了) 要达到这一点,
阅读全文
摘要:一个比较正常,自然的思路:看这篇题解 像这种全排列的问题,一个很正常的想法就是从小到大进行依次放置(以数为考虑对象),再看一下每次放置的限制是什么(这里至少要满足第二个条件,所以每次放置要么放在最前面的偶数位,要么放在最前面的奇数位) 我自己想的时候,是直接先把所有奇数位的数字取出来,那么显然取了\
阅读全文
摘要:看这篇文章 这篇文章讲的证明很好,当然也是反证法的应用 然后卡特兰数的另一种公式也要记住
阅读全文
摘要:方法一 一般遇到完全平方数,我们是可以往配方想的。如果不乘以系数 直接配方,会出来一个 的玩意。由于题目没有给出 的奇偶性,我们为了避免讨论,必须要乘以系数 (其实那个可以不用 那个换元,我们直接移动过去利用平方差公式就好了)
阅读全文
摘要:正常人的思路 我的思路: 我们假设已经得到了一种方案,我们将这种方案具体化,对每一种树所在的花盆的位置编号。比如1 3 4 6 8代表五棵树分别种在了第 号花盆里面 那么显然,我们对序列的 减去 ,如果得到的新的序列是一个严格单增序列,那么原来的序列就是合
阅读全文
摘要:注意这道题目必须用组合数的递推公式做,这里阶乘是没有逆元的 思路 解释一下,这里利用杨辉三角就可以很easy地避免繁琐的分类讨论问题,如下 实际上就是统计红色区域内的阴影即可 当然这里是组合数的问题所以这是一个杨辉三角。其实这种几何化的思想完全可以用在其他地方,只要 的变化范围是像题目所
阅读全文
摘要:我们将gcd为 的相邻两个数连边,比如 最初的 就是边的总数 我们考虑一次操作最多让两条边消失。我们将这些边看成若干连通块(比如上面这幅图就有两个连通块,分别有三条边和一条边)。对于一个连通块若含有偶数条边,显然我们每次操作都可以让两条边消失,若含有奇数条边,最后要剩下一条边 所
阅读全文
摘要:这道题目非常简单,但是官方解答的思想还是要明白 转化成差分数组之后,思路就变得非常非常自然(当然直接想从区间的角度也非常容易) 这启示我们,以后遇到不降序列,除了考虑将其转化为单增序列,还可考虑差分数组(连续一段的操作也往差分想啊)
阅读全文
摘要:这道题目告诉我们,数学题能列式子的,化简的,一定要耐心做,最后就能看出来了 先阐述一下主要思路 很显然 是可以通过按位确定的,所以我们枚举 ,那么当前考虑的数的范围就是 我们来求解 有 ,同时取log有$$z≤\frac
阅读全文
摘要:以前在NK竞赛队的时候,做过一道考试题目,并查集离线,倒着处理 这道题目是一样的,我们发现一个点只有在添加之后才会被更新,也就是只与这个点被添加的操作之后的操作有关,所以我们考虑倒着处理 接下来就变成了一个模板问题:加一个子树,查询单点 这个问题我们用dfs序解决(看到子树问题,想dfs序) 首先对
阅读全文
摘要:先来看这篇题解 一些解释: 本题一共有两个对象,轮数和卡牌。我们发现从轮数的角度考虑期望不好计算,所以我们从卡牌的角度考虑 其实不用管这篇题解说的什么线性性,我们感性理解卡牌造成的期望伤害肯定是卡牌实际被使用的概率乘以其伤害值的总和 我们可以比较轻松地证明这一点。我们对任意一个样本,一共有
阅读全文
摘要:好题中的好题 看这篇题解 这篇题解的那个绝对值不应该打的,因为那里本来就是表示的差分数组 解释一下什么叫确定最小值。当确定了差分数组之后,我们如果确定了 ,整个数组就确定了;即使我们将 当成一个变量, 与 的差值也是知道的,所以我们一定知道这个数列的最
阅读全文
摘要:题解见这篇文章 当 确定的时候,我们如何查询最大值?见最大异或对 当然,也有另一种思路,就是按位考虑 一样的,我们通过模拟位,可以知道 ( )与 的每一位的异同,所以我们确定了 就确定了所有 ,然而我们却不能确定 ,
阅读全文
摘要:这里不符合“玩家行动只与游戏局面有关”,就不要往SG函数想了 先看这篇题解 这篇题解最开始的贪心我在赛时的时候想到了的,所以说博弈论完全是可以用贪心的,不要怕 但是这里贪心还有一个问题,在对手攻击力比这张牌防御力大的区间中,对手可能有多张牌的防御力最大,这个时候难道每一个点都要连边吗?其实不用,连接
阅读全文
摘要:比较简单的期望题目,肯定是单独考虑每一条边的贡献(这是我们数学期望的一个技巧,当所有情况的概率相同的时候,就只用统计总和就好了) 然后我们会写出以下式子 这又是一个技巧,肯定要把 分开,然后 和 的乘积项把 当成系数进行统计 主要是注意想想如何用线段树
阅读全文
摘要:这道题一眼是状态压缩期望DP(“平均情况”的意思就是求期望值) 考虑理解什么叫必须当下就决定吃还是不吃 我们来对比“换教室”那道题目,那道题目要求最开始就把所有的教室申请明白,不能根据某一时刻的教室的申请情况来决定是否申请下一个教室,这就刚好与本题反过来 而我们发现,“换教室”一题很容易地可以列出样
阅读全文
摘要:这道题目我维护每个回合每个人的每种血量的概率想到了,甚至DP也想到了,但是这个DP的方法太新了 因为本来维护每个回合每个人的每种血量的概率后,我们如果用组合数去选出若干个人计算概率,肯定时间复杂度太大了,这个时候我们一般都是用DP去统计满足条件的概率,所以要用DP,而且比较容易想到要计算\(g[i]
阅读全文
摘要:来看一个新奇的思路:第一篇题解 然后这种题目没啥思路,就把SG函数写出来吧
阅读全文
摘要:先看这篇题解 下面是一些注释 首先,这篇题解的做法相当于是跟蓝书上插入查询的对象刚好反过来,也没有问题 然后,是对这篇题解存前两个的解释 首先是为什么会存在这个问题?我们考虑 和 ,其中 而且\(a^{p_1t}\equiv a^{p_
阅读全文
摘要:看这篇题解就好了 虽然我的代码比较丑。。 update 2024.7.22 重新做一遍的时候做出来了 心路历程:最开始肯定考虑每个多重集选哪些数,但是发现做不了,于是考虑转换对象,直接枚举答案,对每一个答案不难想到题解的贪心 但是他的维护我不是很看得懂,有时间了看一下,重新做的时候我是用递推维护的
阅读全文
摘要:这是一道很典型的知道下界,构造下界的题目 看这篇文章 当然也可以从DP方程的角度想 有 , ,我们在新序列 中DP的时候,我们尝试对 的每一个数的 都保持不变,于是有了上面的做法 这其实也是考虑对象的转
阅读全文
摘要:看这篇题解就好了 虽然我是用倍增优化这个过程的,复杂度多了一个log update 2024.7.22 如果建图的话,会发现这是一个基环树+树的森林集合,也可以很容易做出来
阅读全文
摘要:其实这就是一个 局 胜的体育比赛,每局比赛是 颗球 由于题目给的序列是合法的,所以不可能输出?,直接输出最后一局的结果就好了 虽然我赛时的时候是纯模拟 update 2024.7.22 重新做这道题目一下子就看出来了最后一个人是赢家 但是却觉得可能无解 注意这句话啊:
阅读全文
摘要:主要是写一下证明 我们假定知道了答案的区间了,当我们到达答案的起始点的时候,我们无论栈里面放的什么,我们经过了答案这段区间后,栈剩下的内容不变,所以我们一定不会遗漏最优的答案;而我们每次做代码的这种统计的操作,也一定是合法的一个括号序列。所以是充要条件 关于细节,看看这篇题解 总的来说,思想就是如果
阅读全文
摘要:这篇题解的每个方法都要记住 最后那个求逆元的推导都是建立在取模之上的 update 2024.8.6 看到线性,不难想到线性筛,其实是可以用线性筛求逆元的
阅读全文
摘要:这道题目属于是大杂烩了 法一:考虑贡献,看这篇题解 从这篇题解我们可以知道,一般有两种枚举方法,对于 ,我们既可以先枚举 ,然后再枚举 的约数 ,将约数除进去再利用φ,也可以先枚举 ,然后考虑 的值,再利用φ,感觉后面
阅读全文
摘要:这道题目是高精度GCD的模板题 更相减损术的时间复杂度本来是 的,但是可以通过这篇题解的优化来达到 但是最好仍然使用压位高精 其实感觉普通的求gcd也可以使用更相减损术,减法和位运算肯定是要比取模要快的
阅读全文
摘要:这道题目本来是想去发现什么性质然后进行区间运算的,但是题目的末尾其实提示你了,这是没啥性质的,所以就不要从区间考虑了 我们直接考虑最后一步的时候是什么情况 如果最后一步是 与前面经过一系列运算所得到的一个bit进行运算,那么这次查询的操作肯定是 ,因为 and任何数都为\(0
阅读全文
摘要:看这篇题解 不可逆指的是一旦操作了,就没办法回到原来的序列了,所以根据决策包容性,尽量到后面再操作 我们先来考虑一下最终的对应至少满足什么条件 假设我们现在已经获得了一个 到 的单射且这个单射可以通过排序变成 ,我们依次考虑每一个 的字符 对于 ,我们假设
阅读全文
摘要:法一:看这篇题解 这种几何意义的转化在看到绝对值的时候一定要有肌肉记忆 法二:代数法 最多交换一次,肯定考虑答案的增量 先按 排序(因为是绝对值,我们先让一维有序之后考虑消掉绝对值符号) 枚举 ,考虑 ( ),交换 之后增量为\(\delta=b_
阅读全文
摘要:当 的时候,显然是不可以的 然后我们接下来一个一个试 当 的时候,显然没问题 当 的时候,我们无论怎么走,总要把多的这一步走掉(而且不是往右边或者下边走,而是往上边或者左边走,当然不能跟上一步重合),但是这样就还需要再多一步才能走到,即这种
阅读全文
摘要:看这篇题解 这题没有发现什么好的与题目有关的性质,所以很可能是考算法,而一般是DP和贪心,B题一般不会考DP,所以一般是贪心 我们用数学归纳法来证明 我们仍然来先确定一个操作顺序,我们发现每一个数的拆分都不会影响其他的数(也就是说,如果我们已经知道了每个数在最终的方案中会被拆分成什么样子,我们无论按
阅读全文
摘要:遇到这种题目就可以考虑bitset 下面介绍手写bitset,以神鱼的代码为例 #include<cstdio> #include<iostream> #include<cstring> #define N 1000000003 #define reg register using namespac
阅读全文
摘要:A会出现错误。本来我们不写构造函数的话,编译程序会给我们自动加一个,然后A就没错了,但是我们现在写了,编译程序就不会自动加了,如果我们每次创建对象的时候都用两个double进行初始化那也没有问题,但是现在A却想要调用默认构造函数,是不行的会错误;B不能显式地使用构造函数(书上只写了不能在创建之后用显
阅读全文
摘要:真实讨厌 过 的题目。。。 首先这道题目要明白是怎么按照字典序排序的。由于球队都是按照球队里面最小编号的人排序的,我们就从小到大地考虑每个人在哪一支球队。对第 个人来说,他可以加入之前的一个球队(此时之前要出现过这支球队),也可以新组建一支球队(此时新组建的这个球
阅读全文
摘要:首先官方题解写的挺好的,可以看 为什么需要在DP状态中定义 及其父亲的这条边也在呢?你可以试试不定义,那么你会发现是推不走的,因为比如我们现在正在推 ,那么他的一个儿子 的DP值都知道了,但是由于有了 这一条边,我们就把 的度数改变了,这个时候\(u\
阅读全文
摘要:看这篇题解 这道题目给我们的启示是什么?遇到这种随机化的情况,不要像无头苍蝇一样乱撞,而是考虑最坏的情况,这样才能把随机化的每种可能的情况都包含到
阅读全文
摘要:我们不妨将这个式子看做取中点,然后就会发现每次操作不改变相对大小,然后看这篇洛谷题解 解释一下他这个合理性,主要是害怕讨论每次操作后的 的奇偶而已 这里其实官方题解给出了一个提示 我们设最开始的 ,那么根据这篇洛谷题解,而每次操作要么让\(x=\lfloor \frac{
阅读全文
摘要:感觉有一种很显然的模拟方法,就是最开始给所有区间都加,然后当达到整个序列最小值之后,就跳着加,然后一直重复 但是我们不好证明,我提供一种证明方法: 将两次操作二之间的操作,看成是将一段区间的数字全部加 ,然后就转化成了积木大赛这道题目 这样的话代码复杂度就要小很多,但是最后注意答案要减一
阅读全文
摘要:题解这种转换为二叉堆的操作的思想非常秒,可以记住 遇到这种除以 向下取整,或者乘以 和乘以 加 的,可以这么考虑(当然线段树也是这么编号的) 注意搞清楚完全二叉树的定义 update 2024.5.8 注意这道题目卢卡斯定理的写法。不要再像以前那么写了,预处理出阶乘的
阅读全文
摘要:这道题目花里胡哨的一看就是先要scc缩点 然后主要是明白一个SCC最后会变成一个完全图,而有向完全图一定存在哈密尔顿路径,所以可以不重不漏地走完所有点 然后剩下的看洛谷题解吧,主要是培养感觉
阅读全文
摘要:有两种做法 第一种做法:欧拉反演(其实我赛时的时候是想到了欧拉反演的,但是我不太清楚欧拉反演的使用trick) 欧拉反演的trick见这篇文章 欧拉反演直接用在gcd上还是挺多的(就像这篇文章中说的,gcd求和就可以用欧拉反演,实际上“龙哥的问题”就是典型的欧拉反演),可以想一下 数组怎
阅读全文
摘要:观察样例,感觉可以从奇偶性来搞 假设我们最后要保留数字 。我们每操作一次数字 和数字 ,他们两个的相对奇偶性不变;每操作一次数字 和数字 ,数字 和数字 的奇偶性也不变;每操作一次数字 和数字 ,数字 和数字 的
阅读全文
摘要:容斥原理板子题目,看官方解答就好了 update 2024.7.18 其实这道题目在计算每一部分的时候,仍然是考虑选取的对象了的,选取的对象越好,计算就越方便
阅读全文
摘要:首先来看看官方解答 当确定了一个选出的数之后,我们 的和肯定就定了,我们肯定要将 的和变得最小是最优的,很容易想到的一个策略就是将 从小到大排序,然后 的和就等于 这其实是正确的。官方解答没有给出证明,我来证明一下。首先将\(b\
阅读全文
摘要:考虑如果我们已经得到了一种划分,而且至少将序列划分成了 块及以上 考虑前两块,我们如果把这两块合成一块的话,显然答案不变 所以我们可以一直这么合合合,最终把序列合成只有两个块 综上所述,我们只用统计 和 即可
阅读全文
摘要:这种题目手搓一下样例就好了 对一个给定的字符串,如果我们不用操作二直接用操作一,那么操作二就没有用了(因为接下来无论用多少次操作一,再用操作二,得到的字符串都不会变);而如果接下来再用操作一,我们会发现就是直接复制一倍放在末尾,根据字典序的比较规则,我们在这种情况下肯定只会用一次操作一 如果最开始用
阅读全文
摘要:这道题目其实不难,但是题解中把删除 看成是把 前置,然后求不高于这个数的可重复康拓展开这个思想可以记住 我最开始做的时候,其实是先把有删除 的情况拿出来单独讨论,最后再看没有删除 的,其实本质是一样的
阅读全文
摘要:首先转换代价计算的方式见这篇文章 其实我是想到这么贪心的,但是没有想到整体的贪心,即先把所有数字全部移到最低位,然后再一步一步向上移动 DP转移方程见这篇文章 解释一下task2,他说全部合并到第 位的时候,指的是从 位合并到 ,所以是高位包含第 位而不是低位包含
阅读全文
摘要:我们先观察,有 ,我们如果每次操作三个不同的数,也需要 次操作,所以我们考虑只操作一半的序列 跟一半有关的东西大概有:奇偶,前一半后一半 这题看样子就跟奇偶没差本质联系,所以从后者开始思考 对于任意\(x≤\fr
阅读全文
摘要:其实做了两道博弈的交互题后可以知道,博弈的交互题一般是需要你找到一种必胜的策略的,而且这种必胜的策略与非交互题还不同,因为对方可能不是按照最优策略走的,所以我们要找的是在任意一种情况下对面怎么走都能胜的条件,而且要对每一种情况都做出对应的策略(非交互题的话,我们是知道对方一定会走某一个最优的方向的)
阅读全文
摘要:这道题目的官解看不太懂,"this line"指的是哪条直线?洛谷上也没有题解,过一段时间去看一下补充一下idea 说一下我的想法,首先题目出现了最多四次嘛,很容易想到直接问四个角,但是发现这样会获得四条直线,没有办法唯一确定某一个矿的位置,比如下图 两个绿色的点和两个红色的点都可以问出来这么四条交
阅读全文
摘要:这道题目最初的想法是从大到小尽量的选择,然而却过不了样例 但是我们仍然发现,当 充分大的时候, 的面额仍然是要尽量选择的,因为我们某个小面额选择太多了可以用大面额代替,这启示我们去枚举小面额选择多少张 不可能选出超过两个,不然的话可以用一个 代替 同理,
阅读全文
摘要:这道题目真的。。。一言难尽 首先注意是没有对称性的,不然样例都过不了 考虑我们已经选中了四个数 ,假设他们不降 那么最优的情况肯定是 这个可以通过纯代数式子列出来,也可以考虑把绝对值看成距离,在纸上画距离就好了 那么显然我们让 最大,
阅读全文
摘要:这道题目就是纯纯的题面搞人心态,看到 次操作真的很容易想到从高位到低位一位位进行操作。然而正解却不是 先来看官解 首先每次操作只会将 变小,所以如果 ,那么肯定无解;如果 那么不用操作;接下来假定 (其实题面给了 的范围,小于 )
阅读全文
摘要:首先这道题目,记得把题面看完,最后一句话是给了提示的。。。 肯定考虑DP嘛,但DP不太清楚怎么设置状态,而且不清楚一天到底交易多少次 我们先来解决第二个问题,由于这是一道可以被解决的题目,所以我们猜想交易的次数非常有限 根据题目最后的提示,某一天的开端,我们要么全部都是钱,要么全部都是股票 假设某一
阅读全文
摘要:我们像往常一样考虑如何分组,但是我们发现在计算答案的过程中,当分的组确定的话,答案跟切的顺序是否有关 如果有关的话,那么这个DP将变得非常难,所以我们估计是无关的,但是一下子就证明一般性不太好证,所以我们先手搓几组 比较小的情况 当 的时候,假设最后分的组的每一组的元素和分别为\
阅读全文
摘要:这题一眼DP,但是题目没说必须要连续划分,而这种序列DP是肯定要连续划分的,所以我们要用贪心啥的改变一下序列的顺序然后进行连续划分 我们发现,如果一个长方形的长和宽都小于等于另一个长方形的长和宽,那么这个长方形是可以完全不用考虑的。因为对任意一种方案,我们都可以把这个长方形放在另一个长方形所在的组别
阅读全文
摘要:这篇题解不错 讲一下为啥平方模 可以消掉 由于奇数乘以奇数等于奇数,偶数乘以偶数等于偶数,所以平方项的奇偶性与单独一项的奇偶性是一样的 我赛时的想法是先从 较小的考虑 ,则为\((x_1-x_0)^2+(y_1-y_0)^2=x_{1}^2+x_{0}^2-2x_1x_
阅读全文
摘要:首先来介绍一下SOS DP 看这篇文章 解释一下,最开始的初始化for(int i=0;i<(1<<N);i++) f[i]=w[i];就是0/1背包的的初始化,可以模拟一下想一下为啥(其实把 当做阶段去理解就好了) 然后是DP的过程中,注意f[st^(1<<i)]是肯定不会在这一层被更新的
阅读全文
摘要:做这道题目的时候学CDQ和整体二分学成傻逼了是吧?我寻思着非要把一整个数组传进去操作,明明一个一个考虑不就好了真的烦躁 题外话,做这道题目的时候,探索出来一个东西,vector要放字符串的话,template可以写char * 最开始的想法是编写一个函数work(vector<char *> a,v
阅读全文
摘要:从这道题目的官解,我们可以再次复习一下:转换对象 可以看一看这道题目的官解,也挺自然的(dictionary就是map) 然后说一下我的做法 很明显地发现, 和 是不被影响的,而且 翻转之后,起点和终点也是不变的(官解也利用了这个思想),所以对
阅读全文
摘要:这道题目为什么赛时做了40min呢?为啥呢?我寻思着猜也能猜出来吧 主要原因:没有认真的写式子,写代码不认真,还没有认真地估计时间复杂度导致T了一次。以后要想清楚再写啊! 但是赛时还是用猜的吧,看看样例,估下时间复杂度就知道直接用gcd就好了(不然肯定TLE了) 真正的证明感觉难度都有蓝了 我们先对
阅读全文