08 2024 档案
摘要:标记永久化:1:26:00 如果外层线段树为下标线段树会发现没有办法快速维护,这个时候我们就要想到权值线段树:外层采用权值线段树,其每个节点维护一颗下标线段树,表示这个节点所代表的权值在序列中有多少个。如果 ,值域大小为 ,那么权值线段树如下 比如 这个节点,维护
阅读全文
摘要:树套树就是外层的树的每个节点都是一个树。一般来说外层的树为线段树/树状数组,内层的数为平衡树/线段树 这一道题,如果没有区间的话,不难知道就是一个set;现在有了区间,外面就套一个线段树,线段树的每个节点维护一个set,将询问区间划分成 个子区间,每个子区间都查询 的
阅读全文
摘要:都是Splay比较常见的操作,平衡树节点维护是一个量:左右儿子,子树大小,节点代表的值(对于非哨兵来说,值等于输入的 ;对于哨兵来说,值等于 ),节点代表的副本值(对于非哨兵来说,副本值等于值;对于哨兵来说,副本值等于 ),子树代表的区间从左/右开始的最大和,子树代表
阅读全文
摘要:考虑在线维护,显然用并查集。对每一个集合都维护一个Splay(或其他平衡树),然后直接查询就好了;所以现在的任务就是合并两个Splay。如果满足一个Splay的最大值小于另一个Splay的最小值,那么是可以快速合并的;但是这里显然不满足,所以只能用启发式合并,对于较小的Splay,遍历其每个节点,然
阅读全文
摘要:比较显然的一个trick就是像“蚯蚓”这道题目一样,用一个变量 记录整体工资的移动,设平衡树记录的工资为 ,则 为真实工资(当然Splay也支持区间修改,但是没必要,这里肯定用这个trick) 于是现在只需要解决问题F。即\(x
阅读全文
摘要:涉及了区间翻转操作,Splay不再是BST;Splay只能保证其中序遍历为当前序列;用lazy标记做,具体见OI-wiki,代码见下 #include<bits/stdc++.h> #define ll long long using namespace std; const int N=10001
阅读全文
摘要:具体讲解见OI-wiki(他的左旋右旋跟蓝书的有点不一样,按照蓝书的理解,代码见下),下面是一些补充 拓展: 1.将一个序列插入到 的后面:找到 的后继 ,先将 伸展到根,再将 伸展到 的右子树,此时由于 是 的后继所以 的左儿
阅读全文
摘要:题目求的就是点仙人掌的数量;点仙人掌的所有环缩点之后就变成了一棵树,于是考虑无根树的数量怎么求,很显然利用Prufer序列就好了;然后考虑怎么将Prufer序列移植到点仙人掌上面,此时就要利用扩展Prufer序列 扩展Prufer序列:对于一个点仙人掌来说,先将所有环缩点变成一棵树,然后将所有缩点离
阅读全文
摘要:Prufer序列的转化方法见这篇博客(这篇文章里这道模板题的高精处理方法也看看,注意特判条件,想想为啥充要) 最后剩两个点的原因就是因为Prufer编码的最后一位是唯一确定的,一定是 这里主要是对这篇博客的一些说明。 首先:为什么Prufer序列与无根树一一对应? 我们要先知道两个引理:出
阅读全文
摘要:树形图的定义:没有环,每个点(除了根节点)的入度都是 ,根节点的入度为 朱刘算法的过程见OI-wiki;当没有环的时候,就满足了树形图的定义,于是可以结束;否则的话就将所有环缩点(注意此时由于每个点的入度都是 ,所以不可能存在两个环有公共点和公共边)得到新图 ,
阅读全文
摘要:原图转化成补图之后显然为二分图,于是求最大独立集,根据公式不难转化成求二分图匹配必须边,于是上网络流即可
阅读全文
摘要:仍然建出圆方树,方点与原点之间的边权与上一道题目一模一样 考虑普通的树怎么求树的直径:利用树形DP;于是尝试在圆方树上用树形DP。 如果根是圆点,那么我们需要求解形如下图的直径 按照我们之前建的边权,像普通的树形DP一样转移就好了 如果根是方点,那么我们需要求解形如下图的直径 于是就转化成了环路运输
阅读全文
摘要:不难将题目转换成求原图的最大团,然后补图转化变成求最大独立集;由于一般无向图的最大独立集是NPC,所以考虑二分图;不难发现此时 中只有选 三种情况(分别是一个都不选,选一个偶数或者一个奇数,选一个偶数和一个奇数),于是枚举这三种情况,再在 中去掉与枚举的点有边的点,对
阅读全文
摘要:利用这道题目的结论,可以知道,“对于任意一个元素来说,与其在同一行的数和与其在同一列的数都是不变的”,而我们最终要在主对角线上面有 个黑点,考虑这 个黑点是最开始的哪 个黑点,于是对于一个黑点,将其所在行和列连边,然后对二分图跑最大匹配,最大匹配是完备匹配就说明有解,否则无解
阅读全文
摘要:提醒两个点: 一.KM求的是权值和最大不是最小所以边权要取反 二.最后累加的是w[match[i]][i],不是match[i][match[i]]
阅读全文
摘要:这是仙人掌的模板题,仙人掌不能有自环,但是可以有重边。多颗仙人掌组成的图叫做沙漠。将仙人掌的每个环缩成一个点之后,就会形成树 仙人掌转树要利用圆方树: ①.任选一个点为根 ②.此时每个环有且仅有唯一一个点到根的距离最近。然后将环中的点分类,离根节点最近的点叫“头”,剩余的点作为一类。接下来要将环变形
阅读全文
摘要:先考虑没有修改操作,如何求不同的子串数量,这是后缀数组的经典应用。所有子串就是所有后缀的所有前缀。先将所有后缀按照字典序排序,然后求出 数组,从 循环到 ,对于排名为 的后缀来说,新增的后缀个数就是 (前者
阅读全文
摘要:很显然的翻转矩形而不是翻转操作序列 做法:以后的操作序列 都不变 假设走完第一遍停在了 ,在途中用map<pair<int,int>,int>记录下来经过的点的 对 取模, 对 取模的点的数量 准备走第 遍的时候,用pair(-ix%2
阅读全文
摘要:看这篇题解 其实还有 为整个原来矩阵的数的异或和 其实前面是想到了的,但是没有想到对于任意一个元素来说,与其在同一行的数和与其在同一列的数都是不变的;而且还有 的取值,最开始以为有两个,分别是第 行和第 列的数的异或和,
阅读全文
摘要:先来讲一下到底什么叫K-SAT 先来看看2-SAT的准确定义 那么对于k-SAT,不是说每个集合就有 个元素了(每个集合仍然只有两个元素,因为布尔变量的取值只有 和 ),而是说给出的限制条件涉及 个元素,比如3-SAT 那么对于这道题目,如果不考虑\(\text{x}
阅读全文
摘要:如果将新娘也看做一个点,那么就要考虑新娘坐在哪一侧。这里不妨运用一个小技巧,假设两侧分别是 侧和 侧,我们可以强制新娘坐在 侧(利用“卡图难题”这一道题目的技巧),然后再去分类讨论 注意此时对于通奸的人来说,不要将他们分成“两人 侧,一人 侧一人 侧,
阅读全文
摘要:补充两个平面图的性质: 一.设原图有 个连通块,则 二.对于一个简单(无重边无自环)连通平面图,若 ,则 证:由于无重边无自环,所以一个面的边界至少有三条边(最外面的无穷面的边界定义为将其与非无穷面分隔开的边),而一条边挨着两
阅读全文
摘要:先介绍计数排序。思考一下桶排序,桶排序是不稳定的。计数排序相当于是稳定的桶排序,时间复杂度为 设数组 的值域为 ,数组 表示每个元素的数目(也就是桶),数组 表示 的排名(注意这个排名是稳定的,也就是说当有多个\(a[i]
阅读全文
摘要:记录一下赛时最后30s做出来的题目,老极限了 看这篇题解 主要是他说的三点提醒的第二点,赛时就是卡了这个
阅读全文
摘要:找到了一种比较严谨的证明 将一次连边,看做合并节点,如下,假设连接 新图变成这样: 然后再在新图上继续进行操作,每次删掉的边就是桥的数量 将上述过程缩的点的内部形态仍然看做原树的形态,即 可知上述过程可以用书中的并查集优化(集合的代表元素就是深度最浅的节点) 以后树上路径合并节点就都这
阅读全文
摘要:虽然这道题目很简单,但是不知道为啥感觉这方法似乎挺重要所以记一下 首先知道对于任意一种方案,操作顺序无关紧要,且优先操作深度更低的节点一定可以,所以想树形DP 于是看这篇题解
阅读全文
摘要:先将题目给出的 转化为单调不降序列。具体来说,对题目给出的原序列 ,每个位置都减去其下标得到 ;对任意一种构造的 ,也都减去其下标得到 ,显然\(\overset{n}{\underset{i=1}{\sum}}|a_i-b_i|=\overs
阅读全文
摘要:具体见OI-wiki,但是OI-wiki对左偏树的“外节点”的定义好像错了,其实应该就是指空节点;删除任意一个数的那个部分就不用看了,没啥用 设 表示 为 的左偏树最少包含的点,则有 证明: 单调递增,这是因
阅读全文
摘要:具体见OI-wiki,下面是一些补充 重链要求是极大的 每个点都在某一个重链中,如果一个点是重子节点,那么其在与其父亲所连的边的重链中,否则在与其重子节点所连的边的重链中 这一段的原因:我们走重链是不用关心的,因为同一重链的dfs序是连续的,我们可以用其他数据结构维护,我们只用关心这条路径被划分成了
阅读全文
摘要:二次离线莫队,顾名思义,就是做了两次莫队。第一次莫队是对题目给的询问进行离线(其实就跟普通的莫队是一样的),第二次莫队是对莫队的询问进行离线,也就是本来普通莫队是 修改的,但是现在不好 修改了,于是尝试对这些修改也进行离散并统一处理 假设我们现在的莫队区间是\([L,R]
阅读全文
摘要:树上莫队通过将树转化成DFS序(欧拉序)来解决问题。这道题目跟“HH的项链”很像,考虑树上莫队 首先对树做出一个欧拉序,得到每个点在欧拉序中第一次出现的位置in[x]和第二次出现的位置out[x];如果某个询问的 的in[x]比in[y]大,那么交换 ,下面假设in[x]
阅读全文
摘要:感觉这个凑的题目都是分类讨论 1. ,显然先将 一直取到不能取为止(如果最终方案不是这样,我们可以将方案中的 个面值为 的硬币或者 个面值为 的fancy coin替换为一个面值为 的regular coin
阅读全文
摘要:考虑特殊元素,形似()()()和((()))的字符串 如果还想不出来看官方题解
阅读全文
摘要:这道题目真的不知道怎么总结了,这技巧太新了 见这篇题解 为什么最开始要引入这个子问题呢?实际上,我们假设我们已经得到了最终的交换后的答案,设为 , 就是题目给的原串,从 到 的最小交换次数当然就是从 到 的最小交换次数,于是考虑从 到
阅读全文
摘要:明明多简单的一道题,却忘了枚举中转点了 看这篇题解,这种优化建图的技巧是显然的(考试的时候想到了但是没有想到枚举中转点)
阅读全文
摘要:对回滚莫队的具体介绍见OI-wiki,主要思想就是由于我们只有add操作比较好 实现,所以我们就让莫队右端点一直增加就好了,并且我们开一个变量记录不好维护的量(用变量记录而不是数组的原因是这样子好备份,具体见打卡代码),然后回滚的时候只更新好维护的量即可
阅读全文
摘要:显然当 为偶数的时候比较好考虑,将互相交换的两组放在一起,无论什么情况,这两个组的最大值更小最小值更大是更优的,而且由于 ,所以最大值更小当前仅当最小值更大,不会出现最大值更小最小值也更小的情况,所以直接枚举四种情况就好了 然后来考虑当\(
阅读全文
摘要:看到 这么小肯定往集合方面去想,但是状压没想出来,此时一定不要忘了SOS DP 于是看这篇题解 肯定是字符种类的集合,考虑枚举超集,当 的某一个超集以某种方式可以通过给定字符串导出,那么 就不行。考虑 不行的话会怎么样,将 的字符在给定字符串中全部标
阅读全文
摘要:考虑暴力怎么做。一个很自然的想法就是枚举每个模式串,并将当前枚举到的模式串作为文本串,然后内层循环再依次枚举模式串,看每个模式串在文本串中出现了多少次 发现上述过程与AC自动机的匹配很像,于是建立AC自动机,将每个串都放在AC自动机上跑query,当前跑到的u就代表这个串的一个前缀,然后让j=u一直
阅读全文
摘要:AC自动机上DP的典型题目 假设我们已经获得了最终的串,那么将这个串放在AC自动机上匹配的时候,一定是不会匹配到一个模式串的,我们考虑利用这一点来DP 设 表示将经过修改后的文本串的前 个字符放在AC自动机上匹配中途没有匹配到模式串且当前匹配到AC自动机的 号节点
阅读全文
摘要:具体讲解看OI-wiki就好了 构建字典图的那个位置,只用理解路径压缩就好了;在路径压缩完了之后,tr[u][i]表示的是状态 接上一个字符 所表示的字符串能够与 所匹配的最大后缀长度。形式化地,设 ,令 为 的后缀集合,tr[u][i]=\(
阅读全文
摘要:严谨证明其实真的很难 设每次操作为 ,其中 表示操作的左右端点, 表示乘以的值 首先我们知道,最后由于严格升序,所以数列分成三段,第一段为负数,第二段为 ,第三段为正数;操作之间的顺序无关紧要;操作之间不会跨段:如果有跨段,那么一定是跨了三段(只跨两段
阅读全文
摘要:看这篇题解 考场上肯定考虑到了考虑贡献的,但是没有想到容斥原理,而是一直在尝试如果去计算一定合法的数量。但是容斥原理的技巧在之前的例题也见过,所以千万别忘了这个技巧,复习一下 update 2024.9.16 重新做一遍做出来了 这道题目仍然考虑计数DP的两种做法,设置状态和容斥原理(以及设计子问题
阅读全文
摘要:注意类似题目这种建树的方式,建出来可能是树,也可能是堆,而前者不一定是连续的编号,后者一定是连续的编号,这就导致了后者左右子树中一个是完全二叉树,另一个不是完全二叉树(这里就要利用这个性质优化时间复杂度);自己做的时候就是没有抓住这个性质导致没有做出来 显然考虑贡献,设 ,我
阅读全文
摘要:四边形不等式的证明一般都是很难的,所以在考场上一般不要证明,而是把DP的每一步决策打一个表,然后去看有没有单调性 然后这道题目看蓝书就好了,代码见打卡
阅读全文
摘要:打表的种类: 1.输入范围很小,此时为全部打表 2.我们的代码可以处理大部分情况,可以对剩余的小部分的情况用打表解决,此时为部分打表 3.预处理的时候,可能TILE/代码太长等,考虑打表替换掉预处理,此时为配合打表 一些打表题: 中文读数字 十三号星期五 这道题目要先理解了插头DP了来,视频看到了1
阅读全文
摘要:不难知道操作的顺序无关紧要,而且操作的边的深度越浅影响的叶子就越多,于是我们考虑从下往上地进行构造 设 表示以 为根的子树的同步时间, 表示达到这个时间的最下操作次数 对于当前节点 ,其有若干个儿子 ,那么有\(f[x]
阅读全文
摘要:赛时用的DP,但是转移有一点点想不清楚 设 表示前 个字符,以 结尾的最小删除数目, 表示前 个字符,在达到以 结尾的最小删除数目的前提下的方案数 然后就会发现此时的 比较难转移,我们必须要将删除字符转换
阅读全文
摘要:ABCD中卡的最久的一道题目,而且是先做了D回过来做才灵光一现的。。。 由于每行每列都要有chip,考虑如果某一行/列没有chip会发生什么 加入某一行没有chip,那么我们显然要保证每一列都有chip,而如果每一列都有chip的话,显然是将所有chip都放在最小的行上;对列同理分析
阅读全文
摘要:看这篇题解 解释一下,如果存在一个点通向父亲的边和某一条通向儿子的边的颜色相同,那么一开始如果起点就在这个点的话,是没有办法向上走的,所以任意一个点通向父亲的边和某一条通向儿子的边的颜色不同 对于非特殊点,我们只要一直走没有重复出现的那个颜色就好了 如果某一时刻走到了特殊点,此时如果特殊点奇偶性均相
阅读全文
摘要:算法的流程看OI-wiki,实现以及统一处理的部分也要看 讲下时间复杂度,显然最外层循环是 的,主要是看内部的那个while循环的次数。如果是 在 的内部,那么只会执行一次,否则的话会执行多次,但是执行多少次 就会增大多少,整个过程 单调不减,最
阅读全文
摘要:dsu on tree的板子题目,先从暴力思考怎么做,然后就会发现可以用树上启发式合并了
阅读全文
摘要:先考虑暴力怎么做 dfs搜索每个节点,对于当前节点,用迭代遍历其子树并更新答案,在回溯的时候将计数数组清空,时间复杂度为 注意到,对于每次准备回溯的时候,设当前根节点为 ,其父亲为 ,在计算 的时候,如果 是最后一个dfs计算的(注意此时
阅读全文
摘要:非常经典的删数问题,见这篇题解 我赛时的时候考虑的时候删除了 后,有哪些区间会被删除,哪些区间会被加入 删除的区间:最小值是 的区间( 计算)、 作为一个端点但是 不是最小值的区间(差分维护) 加入的区间:左端点属于
阅读全文
摘要:很显然我们每轮都要尽可能多地选择怪物,于是可以猜测进行的轮数不会太多 我们转换一下问题,见官方题解就好 设置了 之后,就转化成了Gem 气垫车这一道题目 看一下官方题解的Another Solution,可以优化成 的算法
阅读全文
摘要:证明方法看官方题解就好了,主要是注意这种子问题的证明方法,可以学一下
阅读全文
摘要:假设现在有 个元素,每个元素最开始单独成为一个集合 现在有一种合并操作,可以合并两个集合,假设将集合 合并到集合 ,那么时间复杂度为 ,其中 表示合并一个元素的操作的复杂度,也就是说我们的操作每次是合并一个元素和一个集合,所以我们将
阅读全文
摘要:考虑特殊元素,高度为 的建筑,将其当做分水岭;再对于一种特定的方案划分成若干个集合,以每个被看到的建筑作为集合划分的标准(并且将这个建筑作为集合的代表元素) 比如说,现在建筑群的高度从左到右依次是 ,那么就会划分出两个集合\(\left\{ 3\space 2 \ri
阅读全文
摘要:跟上面一道题目基本上一样,异或基加点分治
阅读全文
摘要:这道题目看官方解答就好了 考场上确实无法证明,但是最后猜出来了,因为这种一般都是找不变量嘛 其实考场上的时候也想到了将比较大的操作拆分成比较少的操作去进行化简的,但是没有想到怎么拆分 总之来说以后遇到这种题目,无法证明的就去找不变量
阅读全文
摘要:转换对象,考虑每个球能被A/B拿到的概率是多少(注意对于每个特殊球/非特殊球来说,能被某一人拿到的概率是相同的) 然后就可以看这篇题解 这篇题解的正确性在于我们不用关注当前拿球的人是谁,对于一整局游戏,无论最后球是按什么顺序拿的,概率都是相等的;这也就是说,每一局游戏的概率与“随机排列 个不
阅读全文
摘要:注意到这里 太大了,我们肯定没办法把所有的前 大的数找出来,所以我们只能先尝试把第 大的数找出来 这里的trick跟上一题一样,先将 乘以 ,但是这里必须二分第 大的值,设为 找到之后我们再统计严格大于 的值的和以及数量就可以
阅读全文
摘要:如果这道题目会可持久化trie的话,是可以用“超级钢琴”这一道题目的思路去做的 如果不行的话,考虑用trie,然后这篇题解关于trie的常用trick的综合可以记住 讲一下怎么查找第 大,不要用二分了,直接把 放在trie树上查找。trie树每个点记录一下这个点的子树有多少个
阅读全文
摘要:赛时想到了二分+trie但是却没有想到怎么维护啊 看到异或,可以想位运算,trie和异或基。跟位运算肯定没啥关系,而异或基是选任意多个数进行异或,trie是两个数进行异或,所以这道题目用trie 二分,考虑是否存在至少 个区间不超过 check函数:我们枚举区间的右端点\(r\
阅读全文
摘要:置换群通常用来解决一些涉及「本质不同」的计数问题,例如用 种颜色给一个立方体染色,求本质不同的方案数(经过翻转后相同的两种方案视为同一种) 置换:将 映射到一个打乱之后的 ~ 的排列 。可以用一个函数来表示,
阅读全文
摘要:给定一个有穷或者让无穷数列{ },则称 为原数列的一个生成函数 本质就是将问题转换为多项式问题,从而利用多项式的性质去解决问题 一些生成函数的化简见OI-wiki封闭形式 例题:现有\(1g,2,g,3
阅读全文
摘要:最开始观察 没看出什么东西来,于是看 ,由于统计的是不同的 的数量,所以考虑一个 可以由什么 搞出来,然后就不难发现如果我们将 分段(相同的数放一段),那么对应的 在同一段就会从 开始增加,然后到达一个峰值之后再减小到 (开头和
阅读全文
摘要:我们发现,如果我们将满足题意的点在数轴上标出,那么我们可以获得若干个连续段。对于一个长度为 的连续段,他对答案的贡献就是 ,我们把所有连续段的贡献加起来就得到了答案 于是我们发现这个可以拆分成子问题,具体见这篇题解。 就是
阅读全文
摘要:纯弱智我,马上就写出式子来了却没有看出来是拓展贝祖定理 以后这种东西一定要看出来啊
阅读全文
摘要:FFT主要用于快速求多项式的乘积。多项式的乘积就叫做卷积 对 和 来说,显然暴力算法的复杂度是 ,而FFT的时间复杂度为 多项式的性质:用任意 个横坐标不同的点,可以唯一确定一个 次多项式。这个性质叫做多项式的点表示法 证明
阅读全文
摘要:三角剖分思想:将多边形分成一个个三角形从而减少分类讨论的情况 这道题目的主要思路就是将多边形进行三角剖分,于是最终可以只转化为五种情况,具体见视频1:30:00 视频中给出的五种情况的第一种,第三种和第四种比较简单,对于 都在外部的,肯定是要讨论 这条直线与圆的交点个数的情况,
阅读全文
摘要:看官方题解一就好了 虽然这个看起来跟位运算毫无关系,但是看到了 我们还是往位运算方面想。目前就是要确定 的第 位是否为 ,减掉之前已经确定了的数不难搞出来 这是官方题解二,我觉得毫无逻辑,没啥意思
阅读全文
摘要:不难发现题目要求构造的树是一颗二叉搜索树,于是考虑在升序排列上构造 考虑谁作为树根,不难发现这个过程很像区间DP,设当前枚举的树根为 ,我们只要能够 计算 和 中间的贡献就可以转移了 当然还要消除后效性,于是考虑分配花费。不难想到类似树上
阅读全文
摘要:引理一:最小覆盖矩形的所有边上都有点,而且所有边都有凸包上的点,并且这条边上如果有多个点,那么这条边也是凸包的边 引理二:矩形的某一条边与凸包的某一条边共线 证明:反证。如果最小覆盖矩形没有边与凸包的边共线,那么根据引理一,矩形的每条边上有且仅有一个凸包上的点,如下图 四个红色的点是凸包上的点 注意
阅读全文
摘要:其实凸包直径就是平面最远点对,证明见视频5:00 具体过程检OI-wiki(当然视频的证明方法更详细,利用了对踵点的概念),用双指针维护 的原因也可以看视频 注意这里枚举边,不能枚举点,因为凸包上,对于一条固定的边,按某个方向遍历点,则点到边的距离先增后减,而对于某一个固定的点,按某个方向遍
阅读全文
摘要:看到了曼哈顿距离,将其转换为切比雪夫距离 转化时,坐标变化的几何意义就是将坐标逆时针旋转四十五度 然后就可以发现同一行的数,如果这个数不是 ,那么就可以依次连接,于是我们就化简为了一维 比如样例,考虑的数就是4 5 3 4 5 我考试的时候想到这一步了,但是接下来没想到,因为没有转换考虑对象
阅读全文
摘要:这次div.2非常简单,还剩30min的时候就把E做出来了 看官方题解就好了,主要是复习一下离线的情况除了对询问离线,还有可能对序列进行预处理后再依次处理询问(有道题目也是用的这个离线思想,但是具体是哪一道题目忘了)
阅读全文
摘要:求三维凸包用增量法求解 假设我们已经维护好了前面的点的凸包,对于新加入的点: 如果这个点在凸包内部显然那就不用管了 如果这个点在凸包外部,那么考虑如下情况: 将新点 当做光源,照的到的面全部删掉,照不到的面保留下来即可 如何判断一个面是否能够被照到:取多面体外侧为正方向,则对于某一个面,
阅读全文
摘要:纪念一下代码打得太慢了导致比赛结束3分钟才做出来的E题 我的做法: 考虑确定枚举三角形的一个点。最开始尝试枚举 最大的点,但是后面发现不太好讨论,于是尝试枚举 在中间的点,此时发现由于曼哈顿是三角形不可能是钝角三角形,剩下两个点要么同时在中间点的上方,要么同时在中间点的下方 形式化地
阅读全文
摘要:直接看官方题解就好了 考试脑抽了弄不出来(主要是没有把所有不等式加起来,从而导致两边不能同时除以 ),后面实在没办法了二分,幸好是SPJ 所以以后遇到这种题实在不行就二分吧
阅读全文
摘要:引理:对于平面中一组点集 ,若任取一个点 ,将 所有点以及 的最小覆盖(椭)圆的所有点绕 按相同方向旋转相同角度,则 以及最小覆盖(椭)圆的边界的并集中任意两点距离不变(可由余弦定理推导),进一步可知相对位置不变,于是最小覆盖(椭)圆也不变(指(椭)圆
阅读全文
摘要:性质一:最小圆覆盖是唯一的 证:若存在两个最小圆,如下 显然所有点只能存在于两个圆的交集中,于是以中间那条实心蓝线为直径做一个圆,这个圆显然更小而且能够覆盖所有点 性质二:若我们已经用最小覆盖圆覆盖了所有点,设这些点的点集为 ,现在我们新加入一个点 ,若 不在 的最小
阅读全文
摘要:从题目给的图片可以得到一个提示,我们将某一个斜坡(不妨假设斜率为正)变成一条直线,那么如果我们瞭望塔建在了这条斜坡的右边,则瞭望塔的顶端一定要在这条直线的上方,否则的话就看不到这个斜坡。进一步地,假设我们已经确定了瞭望塔的位置,那么:在其左边的斜率为负的斜坡都能被看到,斜率为正的斜坡能被看见当且仅当
阅读全文
摘要:基础定义见OI-wiki 注意最后得到的一定是凸多边形;atan2这个函数也可以算 ;“多边形的核”中,“连线”指的是线段;代码见Acwing打卡代码就好了
阅读全文
摘要:看这篇题解即可 解释一下:前面的都跟蓝书一样,直接从结论 开始解释 结论 的意思是说,对于一个已经给定了的 ,我们去计算他的最小交换次数,假设我们已经知道了每个数最终要去的位置,就可以建立出 ,而如果这个位置方案满足是最小的交换次数,那么 的任何一个环
阅读全文
摘要:看这篇题解就好了 注意加入一条点到扫描线中的时候,不用执行删边操作,反正加入一个点最多增加两条边,也可以直接跑Kruscal 对很多边的图想办法减少边是一个很重要的trick,一定要记住 update 2024.8.17 想到了减边的操作,甚至想到了:如果考虑一个坐标 ,所有经过 的
阅读全文
摘要:看这篇题解就好了 为什么只用考虑质数:看这个帖子 其实VP的时候脑子里蹦出来了质数的,却没有认真想,可惜啊 以后遇到相乘了可以想质数
阅读全文
摘要:看这篇题解就好了,思维过程也很清楚 感觉计算几何的题就是这样,不会让你严格证明,靠着样例手玩一下然后盯出来 还要注意我们的旋转模板是顺时针旋转,这里要求逆时针旋转,所以我们的弧度要取负
阅读全文
摘要:凸包,顾名思义,就是凸多边形包围,具体定义见OI-wiki(只是周长最小不一定面积最小,因为有可能有凹多边形,但是是面积最小的凸多边形) 有Graham算法和Andrew算法,后者精度更高常数更小(因为不涉及求角度) Andrew算法: 1.将点排序(横坐标为第一关键字,纵坐标为第二关键字) 2.从
阅读全文