11 2024 档案
摘要: 。 注意到,要选择所有数的gcd为1 法1:可以发现,每个数最多有十个质因子,因为最小的前十个质因子乘积为6e9多,这样我们就可以状压每个数的质因子有无,我们可以先确定一个点一定选,状压代表这个数的每个质因子有无,在dp 法2:以gcd为节点, 为边权,跑dij。其实很多题
阅读全文
摘要:状压 的通性是 常为十几,即 不会炸,可以枚举状态,由一个状态转移到另一个状态。 基础状压 ,很简单,经常用到状态判重等,常用技巧为判断相邻位是否相同:将其左移一位后与上自己。将某一位1减去是 等等。例题1,例题2 三进制状压\(
阅读全文
摘要:T1,注意只要允许#define int long long就不要分着开。 T2,当我们要再一个序列中插入两种数/段,计算可能情况,可以分开差,依次算。
阅读全文
摘要:区间 特点,可由小区间加上一堆运算推到大区间(板子) 或者一个序列,从中间扣掉一个/一堆点,扣掉后短处会连上,这种题也常用区间 。(消除木块,恐狼后卫,最大收益,最小代价都是这种题),它们常要考虑删掉这段区间/点会产生的贡献,再加上外面的区间和,有时候还会开一些辅助数组或多开一个
阅读全文
摘要:倍增 ,其实就是 有一维为走多少步,这个东西很大,没法硬枚举,恰好要求的是最值/路径和之类的东西,可将走多少步这一维 变为走 。 注: 用位运算不能用 ,要用 (例1,例2) 倍增可用于维护树上某链最值
阅读全文
摘要:LCA做法千千万,倍增树剖占一半。LCA,我认为比较好用的是树剖版与倍增版,一般情况写倍增版,如果正好这题用树剖就写树剖版。倍增版其实就是用倍增处理出一个点向上跳几步是哪个点,然后求LCA时就先将深的点跳到浅的点齐平,再一起往上跳,注意不要调到公共祖先,而要跳到他的儿子处。模板 LCA过程中可求链上
阅读全文
摘要:线段树与树状数组都是十分经典的数据结构,其实能用树状数组解决的问题也都能用线段树解决,但线段树相比于树状数组常数较大。 单点修改区间查询 线段树做法,树状数组做法,其实单纯实现这个还是用树状数组较好(毕竟常数小还好写) 区间修改区间查询 只有区间加 树状数组做法,线段树做法 既有区间加又有区间乘,应
阅读全文
摘要: ,注意对白三角形进行搜索,每次搜到曾经走过点判断能否构成三角形是错的,我本来以为我是从总三角形中去掉每条白边影响那里错了。 这启示我们什么? 即使对看起来最简单的地方也要进行严谨证明,不要一眼过。 然后可以想总三角形减异色三角形,就能做了 ,注意如果要进行搜索,枚举每个点选不
阅读全文
摘要: (区间最值)问题,通常用 表。 表不仅可以解决区间最大最小问题,还可以解决区间最大公因数/最小公倍数(例) 二维 表(例),其实就是两个维度都进行倍增,但注意两个维度都要从 开始枚举,一个为0,一个不为时也要转移。 结合二分,当二分一个值(如区间
阅读全文
摘要: 记住输出结果一定要与下发样例文件比对,不要像今天这样没输出空格。 判断一个区间内是否有元素重复经典 ,对每个位置开个 ,表示每个位置前面第一个与它颜色相同的位置,对于一个区间 ,若其中 { }
阅读全文
摘要:T1题面,这题应改想到求两个的最长公共子序列(我没想到),然后涉及到一个 ,当 数组值域很大时,可以将定义域与值域互换,然后再推就能 了。 题面,可以用 求出每个点离它最近的关键点,然后枚举断边,用两边加。
阅读全文