
算法
文章平均质量分 83
各种算法
ez_lcw
这个作者很懒,什么都没留下…
展开
-
【小记】SG函数
规定游戏如下:给定初始局面,两个人轮流操作,每次使当前局面走到某一个后继局面(局面后继关系图给定,且是 DAG),若没有后继局面则失败(将没有后继局面的局面称为直接必败局面)。个子游戏中的某一个的局面替换为其后继局面” 所形成的所有可能的后继局面。个子游戏构成的,当且仅当:对于该游戏的任意局面,可以将其看成是。我们现在来证明,一个局面是先手必胜的,当且仅当它的。个子游戏构成的,我们可以直接令其每个局面的。个子游戏构成的游戏,其每个局面的。值为其所有子游戏对应的局面的。值为所有子游戏对应的局面的。原创 2022-09-07 09:36:54 · 623 阅读 · 0 评论 -
有理展开定理与递推数列通项公式
阿巴阿巴原创 2022-07-12 20:55:24 · 475 阅读 · 0 评论 -
线性递推数列和整式递推数列
线性递推数列和整式递推数列原创 2022-07-11 21:37:38 · 502 阅读 · 0 评论 -
【XSY4371】star(构造)
题意:给定值域在 [0,n−1][0,n-1][0,n−1] 的序列 a1,⋯ ,ama_1,\cdots,a_{m}a1,⋯,am,要求构造值域在 [0,n−1][0,n-1][0,n−1] 的序列 b1,⋯ ,bmb_1,\cdots,b_{m}b1,⋯,bm 和 c1,⋯ ,cmc_1,\cdots,c_{m}c1,⋯,cm,使得 bib_ibi 两两不同、cic_ici 两两不同、且 ∀i,bi+ci≡ai(modn)\forall i,b_i+c_i\equiv a_i\pmod原创 2022-04-03 14:39:16 · 411 阅读 · 0 评论 -
勾股数的一些性质
称一个正整数三元组 (a,b,c)(a,b,c)(a,b,c) 为一组本原勾股数,当且仅当其满足 a2+b2=c2a^2+b^2=c^2a2+b2=c2 且 gcd(a,b,c)=1\gcd(a,b,c)=1gcd(a,b,c)=1。不是本原勾股数的勾股数被称作派生勾股数。任意本原勾股数 (a,b,c)(a,b,c)(a,b,c) 的任意 kkk 倍对应着一组勾股数 (ka,kb,kc)(ka,kb,kc)(ka,kb,kc)。同时一组勾股数 (a,b,c)(a,b,c)(a,b,c) 唯一对应着一组原创 2022-04-02 22:23:59 · 1697 阅读 · 1 评论 -
图的匹配算法及其相关
本文大量参考了:原创 2022-03-24 21:32:55 · 2914 阅读 · 0 评论 -
全局平衡二叉树
全局平衡二叉树类似于静态的 LCT?建树方法:先树剖,考虑对于每一条重链维护一棵二叉树,且每条重链的二叉树的根与该重链的链头的父亲之间有一条虚边(认父不认子)。为了达到全局的平衡,每棵重链的二叉树并不是完美的二叉树:对于该重链上的每个点 uuu 设置一个权值 vuv_uvu 为该点的轻子树大小和 +1+1+1(即 sz[u]−sz[son[u]]sz[u]-sz[son[u]]sz[u]−sz[son[u]]),然后找到这条链上的带权中点作为这棵二叉树的根(即找到一个位置 kkk 使得 sk−1≤原创 2022-03-18 14:51:37 · 1150 阅读 · 0 评论 -
左偏树原理记录
这玩意老是忘,还是记录一下吧(考虑一般的合并两棵以 x,yx,yx,y 为根的堆的过程:若 x,yx,yx,y 中有一者是 000,返回另一者。否则不妨设 vx≤vyv_x\leq v_yvx≤vy,那么我们就是把 xxx 设为新的堆的根,然后选 xxx 的某一个儿子和 yyy 合并。左偏树就是利用了第一条性质。我们设 “外节点” 表示只有至多一个儿子的节点,设一个点的 “距离” 表示这个点到其子树内最近的外节点的距离。设节点 xxx 的距离为 ddd,那么其子树内至少有 O(2d)O(2原创 2022-03-16 20:54:40 · 470 阅读 · 0 评论 -
FFT在字符串匹配中的应用
对于一类字符串匹配问题:给定长度分别为 m,nm,nm,n 的字符串 A,BA,BA,B,给出两个相同长度的字符串匹配的定义,要求找出 AAA 在 BBB 中所有匹配的位置。可能能用如下方式解决:定义匹配函数 C(a,b)C(a,b)C(a,b),使得完全匹配函数 P(i)=∑j=0m−1C(Aj,Bi+j)P(i)=\sum_{j=0}^{m-1}C(A_j,B_{i+j})P(i)=∑j=0m−1C(Aj,Bi+j) 等于 000 当且仅当 AAA 和 B[i..i+m−1]B[i..i原创 2022-02-24 10:57:44 · 960 阅读 · 0 评论 -
Dilworth 定理
Dilworth 定理全都是抄的。对于偏序集 DDD,我们有若干概念:链:DDD 中的一个子集 CCC 满足 CCC 中任意两个元素都可比,即构成全序集。反链:DDD 中的一个子集 BBB 满足 BBB 中任意两个元素都不可比,即任意非空子集都不是全序集。链覆盖(链划分):若干个链的并集为 DDD,且两两之间并集为 ∅\empty∅。反链覆盖(反链划分):若干个反链的并集为 DDD,且两两之间并集为 ∅\empty∅。最长链:元素个数最多的链(可以有多个)。偏序集高度:最长链的元素个数。原创 2022-02-10 08:31:00 · 936 阅读 · 0 评论 -
prufer序列
prufer 序列。数数大神来康康文末问题/kel原创 2021-11-07 11:37:00 · 184 阅读 · 0 评论 -
支配树学习笔记
前言本文参考了:2020 年信息学奥林匹克中国国家集训队论文:陈孙立,浅谈支配树及其应用本文和上文在构建支配树的切入点上会有些许不同,尝试用更加容易理解的方式解析支配树的构建。支配树的存在性及其定义本文考察的是一个 nnn 个点 mmm 条边的有向图 G=(V,E)G=(V,E)G=(V,E),设其的源为 sss,满足 sss 能到达图上的所有点。定义 xxx 支配 yyy 当且仅当所有从 sss 到 yyy 的路径都会经过 xxx,称 xxx 为 yyy 的一个支配点。显然我们在考察 x原创 2021-11-07 10:56:27 · 254 阅读 · 0 评论 -
Berlekamp-Massey 算法(求数列的最短递推式)
用于求数列的最短递推式。本文参考自 https://www.cnblogs.com/jz-597/p/14983564.html。增量法,设 RiR_iRi 表示第 iii 个历史递推式,当前为 RcntR_{cnt}Rcnt。设 Δ\DeltaΔ 表示真实的 aia_iai 与用 RcntR_{cnt}Rcnt 求出的 aia_iai 的差值,即 Δ=ai−∑j=1∣Rcnt∣ai−jRcnt,j\Delta=a_i-\sum_{j=1}^{|R_{cnt}|}a_{i-j}R_{cnt,原创 2021-10-11 10:34:10 · 443 阅读 · 0 评论 -
数学小结(持续更新)
数学小结前言:这篇文章专门整理了各种有关数学的东西(包括原理和例题),主要是怕自己忘了。整理的不齐全,而且写的都是比较基础的东西。扩展欧几里得(exgcd)问方程 ax+by=cax+by=cax+by=c 的 xxx 的最小非负整数解。根据贝祖定理,若 gcd(a,b)∣c\gcd(a,b)|cgcd(a,b)∣c,则方程有解,否则无解。那么我们先可以求出 ax+by=gcd(a,b)ax+by=\gcd(a,b)ax+by=gcd(a,b) 的一组解,然后 xxx、yyy 同时乘上 cg原创 2020-11-06 08:07:32 · 611 阅读 · 1 评论 -
【BZOJ2502】清理雪道(最大费用最大流)
上下界网络流的做法大佬们都讲过了,我就来讲一个另类的解法。(不过也是网络流)这个做法是考场上想了很久都不会后奇思妙想想出来的(不会上下界网络流),所以没多少思路引导。首先原题明显可以转移成一个类似最小链覆盖的问题。剩下的就是我的具体做法:我们对原来的有向无环图进行改造:上面的是原图,我们把图中的每一条边 eie_iei 拆成两条边:一条流量为 111,费用为 111,不妨取名叫 aia_iai;一条流量为 ∞\infty∞,费用为 000,取名叫 bib_ibi。然后源点向每个入度为 00原创 2020-08-11 14:03:17 · 188 阅读 · 0 评论 -
【BZOJ4205】卡牌配对(网络流)
Description现在有一种卡牌游戏,每张卡牌上有三个属性值:A,B,C。把卡牌分为X,Y两类,分别有n1,n2张。两张卡牌能够配对,当且仅当,存在至多一项属性值使得两张卡牌该项属性值互质,且两张卡牌类别不同。比如一张X类卡牌属性值分别是225,233,101,一张Y类卡牌属性值分别为115,466,99。那么这两张牌是可以配对的,因为只有101和99一组属性互质。游戏的目的是最大化匹配上的卡牌组数,当然每张卡牌只能用一次。Input数据第一行两个数n1,n2,空格分割。接下来n1行,每.原创 2020-07-28 21:06:46 · 310 阅读 · 0 评论 -
【HEOI2015】兔子与樱花(贪心)
首先想一下题目中的操作如何转化:当一个节点被去掉之后,这个节点上的樱花和它的儿子节点都被连到删掉节点的父节点上。设当前节点为 uuu,uuu 的父节点为 fafafa,儿子个数为 sonuson_usonu。那么当我们把节点 uuu 删去时,fafafa 的樱花数会加上 cuc_ucu,儿子个数会加上 son−1son-1son−1(减 111 是因为 uuu 本来是 fafafa 的儿子但被删去了)。那么删去一个节点对其父亲的负载增加值就被我们算出来了,设为 vali=cu+sonu−1va原创 2020-07-28 20:21:47 · 345 阅读 · 0 评论 -
字符串小结(持续更新)
只是给忘记模板时的我看的AC自动机大概流程:对所有模式串建出 TrieTrieTrie 树。failfailfail 指针的定义:设 iii 节点所代表的字符串为 SSS,则 failifail_ifaili 表示 SSS 的所有后缀里面,在 TrieTrieTrie 树中出现过的最长的那个串所代表的节点。询问举例:请你分别求出每个模式串 TiT_iTi 在文本串 SSS 中出现的次数。方法:首先先建立 failfailfail 树(faili→ifail_i \to ifaili→i),原创 2020-05-14 13:06:56 · 217 阅读 · 0 评论 -
【BZOJ1857】【SCOI2010】传送带(三分套三分)
三分的第一道入手题。三分是个什么样的东西呢?我用一个例题来解释:给你一段序列,保证有且仅有一个位置 iii,使得 iii 左边的序列单调递增,iii 右边的序列单调递减,请你找出这个位置 iii这个问题形象的解释就是有一座山峰,问你这座山峰的最高点在哪里。那么我们可以用到三分法来解决。三分像二分一样,有一个询问区间 lll、rrr,也就是我们确定答案就在这个区间内。我们每次先像二分一样...原创 2020-01-26 17:47:43 · 204 阅读 · 0 评论 -
UVA12003 Array Transformer(分块,块内二分)
我们考虑用分块来水过此题我们先将原序列进行分块,对于某个块 BBB 内的数,我们把它们放进一个数组 block[B][ ]block[B][\ ]block[B][ ] 里,再对数组进行排序。那么我们就得到了 n\sqrt{n}n 个有序数组 block[ ][ ]block[\ ][\ ]block[ ][ ]。然后对于修改操作,...原创 2020-01-17 14:18:42 · 178 阅读 · 0 评论 -
UVA10384 推门游戏 The Wall Pushers(IDA*,A*)
题目大意给你一个 4×64\times 64×6 的网格图,网格边缘上可能有墙。对于每一个网格有一个权值 valvalval,其中val=1(如果这个网格左边缘(西边缘)有墙)+2(如果这个网格上边缘(北边缘)有墙)+4(如果这个网格右边缘(东边缘)有墙)+8(如果这个网格下边缘(南边缘)有墙)\begin{aligned}val= & & 1(\text{如果这个网格左边缘(...原创 2020-01-14 11:43:50 · 240 阅读 · 2 评论