动态规划求解最小斯坦纳树(证了一天两夜) 为什么写这一篇文章,主要是因为我实在看不懂网上的题解,有好多地方不清楚,然后又没有人细讲,所以干脆自己写了一篇,供大家参考。,如果此时我们进行合并子树的话,是不会有任何反应的,因为没有进行连通,所以一个点只对应一个集合。天半,并网上查阅了很多资料,再加上自己的一些证明,终于能够彻底搞懂这个算法的精髓。中,根是终端点本身,包含的集合也是终端点本身。因为算的是子树的最小边权和,而只有一个点的树显然没有边,所以赋值为。周围的点,我们重新从最小堆中拿出最小的点作为起点去松弛周围的点。这是怎么从初始态转移而来的?
Divisibility Part2(整除理论2) Divisibility Part2本节内容是Part1的进阶内容,主要讲的是整除在竞赛中的一些常用的技巧。数的分解一、带余除法对于任意两个整数 a、b(b≠0)a、b(beq 0)a、b(b=0),都有唯一确定的整数 q,rq,rq,r, 满足a=qb+r(0≤r<b)a=qb+r\quad (0\leq r<b)a=qb+r(0≤r<b)二、分解式若 nnn 是正整数,则xn−yn=(x−y)(xn−1+xn−2y+⋯+xyn−2+yn−1)\qqu
Divisibility Part1(整除理论1) 学习本节的基础:任意个整数之间进行加、减、乘的混合运算之后的结果仍然是整数。接下来,我们会给出定义,且给出并证明定义引申出的定理,最后对这些加以运用。),所以我们需要引进整除的概念,这节会对整除进行深入讨论。接下来从定义出发,证明一些关于整除的基本定理。整除),再利用第五题的结论,检查是否被。的数去除另一个数所得的商却不一定是整数(引导出来,本章最主要的内容都是在定理。,所以二者相减的绝对值不超过。的倍数,所以存在两个整数。 的数中最小的正整数,证明。是偶数的时候,结果如何?的数中最小的正整数,设。
Game Theory In Competitive Programming|Part2(原创) 在上一个Part部分,我们介绍了Bash game、Nim game、Misere Nim game 这三个游戏的玩法、必胜策略,以及必胜策略的证明,并介绍了有关必胜态以及必败态的两条定理,接下来我们会以Part1为基础,深挖其中的理论。
Game Theory In Competitive Programming|Part1 (原创) 在算法竞赛中,博弈论是一个经常出现的题目类型。通常是两个人在给定规则下,每个人都按照最优策略进行博弈,我们的任务是找出获胜者。这通常是贪心算法、动态规划等算法的混合。下面,将对博弈论中的一些经典问题进行讨论。
数论:不定方程的引入 研究的对象:不定方程文章目录研究的对象:不定方程不定方程引入:裴蜀定理证明:欧几里得算法证明:充分性证明:必要性证明:战术总结:不定方程引入:不定方程,又称丢番图方程,定义为:未知数为整数,系数也为整数的多项式等式。形如a1x1b1+a2x2b2+...+anxnbn=ca_1x_1^{b_1} + a_2x_2^{b_2}+...+a_nx_n^{b_n} =ca1x1b1+a2x2b2+...+anxnbn=c如果我们能找到一组整数解:x1,x2,...,xnx_1,x_2,
数论:中国剩余定理证明 同余在数学中是指数论中的一种等价关系,符号为≡\equiv≡。指当两个整数aba,bab除以同一个正整数mmm,若得相同余数rrr,则称这两个整数aba,bab对于模mmm同余。记作a≡bmodma≡bmodm,读作aaa与bbb关于模mmm同余。在数论中,线性同余方程是最基本的同余方程,“线性”表示方程的未知数次数是一次。ax≡bmodmax≡bmodm 的方程。
0基础刷图论最短路 3(从ATcoder 0分到1800分) AT最短路刷题3(本文难度rated 1200~ 1400)题目来源:Atcoder题目收集:(里面按tag分类好了Atcoder的所有题目,类似cf)(访问需要魔法)这算是一个题单,各位有兴趣可以按照这个顺序来刷。我的代码仅供参考。会提示关键性质和步骤。部分有注释。洛谷、知乎、可以搜到题解。
0基础刷图论最短路 2(从ATcoder 0分到1800分) ATC最短路2 (本文难度rated 1000~ 1200)题目来源:Atcoder题目收集:(里面按tag分类好了Atcoder的所有题目,类似cf)(访问需要魔法)
0基础刷图论最短路 1(从ATcoder 0分到1800分) ATC最短路1 (本文难度rated 0~ 1000)题目来源:Atcoder题目收集:https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path(里面按tag分类好了Atcoder的所有题目,类似cf)(访问需要魔法)文章目录ATC最短路1 (本文难度rated 0~ 1000)1-**Hands**2- **Cat Snuke and a Voyage**3-**Collision** https://atcoder.jp/cont
Educational Codeforces Round 156 (Rated for Div. 2) 对于我们要获得第几次的字符串,就需要从位置n入手,因为第0次的字符串,删除了0个字符,长度为s.size()可以提前算出来 0----a、0-----b、a-----b、a----p、b-----p 之间的距离。假如我们要获得第 k次的字符串,那么我们重复k次,每次将第一个遇到的逆序字符删除就行了。第k次的字符串,删除了k个字符,长度为s.size()-k。因为2%3的余数是2,4%3的余数是1。对于一个数,它模以3只有三种结果:0,1,2。那么a,b模以3也只有三种结果,0,1,2。
Codeforces Round 905 (Div. 3) 对于k==4, 因为任何数不是偶数就是奇数,所以计算奇数偶数个数即可。题目比较仁慈,只要我们的集合里面有不相交的线段,就输出yes。所以我们先统计出现奇数次的字符有多少次,设为cnt。所以若k>cnt,那么多出来的用偶数次的抵消即可。=4,只需要取模k找余数离k最近的即可。若k<cnt,若cnt-k>1,则无法构成回文。当偶数只有一个,且奇数大于1个,则答案为1。所以只有全都是相交的线段时,才输出NO。所以分为k==4 和k!当偶数超过2个,或者存在4,答案为0.当没有有数,如果有3,那么答案为1。
AtCoder Beginner Contest 340 选择用vector,如果是操作1,就pushback。用dikjstra算法即可,一个很板的题。很简单的记忆化搜索,按照题意模拟即可。如果是操作2,直接从后往前找第k个。单点查询,区间修改,懒惰标记。
AtCoder Beginner Contest 339 (a[j]\in[\ a_i-d,a_i+d\ ])$结尾的最长合法序列的长度。显然,要优化,不可能优化第一层循环,因为这是必需的时间复杂度O(n)的。我们就以a[i] 作线段树的下标,然后 dp[i] 作对于的值。所以我们只要再来一层循环,枚举 $j \in [1,i-1]而以 a[i]结尾的最长合法序列的前一项------a[j]通俗一点就是,在已经出现过的序列内的一个区间中找区间最大值。由于是bfs,所以每次步数都是上一次+1,很好转移。暴力做法就是,求以a[i]为结尾的最长合法序列。
AtCoder Beginner Contest 335 我们最开始的状态倒过来存入数组中,然后每次修改一次,就往数组后面添加一个状态。查询的话就输出 v[ v.size() - p ] 即可。朴素做法是,每一次修改前,修改a[i]=a[i-1]蛇形矩阵,记录一个是否前方为边界,或前方是否被占用。时间复杂度为O(nq) =把最后一个字母改成字符串。三重for循环嵌套即可。