学习笔记
文章平均质量分 76
Clove_unique
All that you have lost can be won back bit by bit as long as you wish for it.
展开
-
中国剩余定理与扩展 Lucas定理与扩展 学习笔记
中国剩余定理问题求同余方程组 ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪x≡c1(modm1)x≡c2(modm2)x≡c3(modm3)...x≡ck(modmk){x≡c1(modm1)x≡c2(modm2)x≡c3(modm3)...x≡ck(modmk)\left\{ \begin{array}{c}x\equiv c_1\pmod {m_1}\\ x\equiv c_2\pmo...原创 2017-01-16 09:29:51 · 10731 阅读 · 14 评论 -
莫比乌斯反演 学习笔记
预备知识枚举除法⌊ni⌋\lfloor{n\over i}\rfloor只有O(n√)O(\sqrt n)种取值 并且对于i,⌊n⌊ni⌋⌋\lfloor{n\over \lfloor{n\over i}\rfloor}\rfloor是i被n除并下取整取值相同的一段区间的右端点一个非常有用性质: ⌊nab⌋=⌊⌊na⌋b⌋=⌊⌊nb⌋a⌋\lfloor{n\over ab}\rfloor=\lf原创 2017-03-27 21:46:17 · 1369 阅读 · 0 评论 -
斜率优化dp 学习笔记
从一个问题开始 真正理解斜率优化dp orz ISA1 问题Apio 2010 特别行动队1.1 题意简述给出一个序列x1,x2...xnx_1,x_2...x_n,将其划分成若干个连续的区间,每一段区间[l,r][l,r]的价值为ax2+bx+cax^2+bx+c,其中x=∑i=lrxix=\sum\limits_{i=l}^r x_i 现在你需要最大化序列的价值1.2 数据范围对于20%2原创 2017-02-18 23:39:42 · 2176 阅读 · 0 评论 -
卡特兰数 学习笔记
网上关于卡特兰数的讲解一大片,所以就懒得再自己写一遍了 贴上几个觉得不错的讲解 小思Catalan数 从《编程之美》买票找零问题说起,娓娓道来卡特兰数——兼爬坑指南原创 2017-01-29 12:37:41 · 577 阅读 · 0 评论 -
有上下界的网络流 学习笔记
预备知识f(u,v)f(u,v)表示u->v这条边的实际流量 b(u,v)b(u,v)表示u->v这条边的流量下界 c(u,v)c(u,v)表示u->v这条边的流量上界 在一个无源汇的普通网络流图中,满足0≤f(u,v)≤c(u,v)0\le f(u,v)\le c(u,v)∑f(u,i)=∑f(i,v)\sum f(u,i)=\sum f(i,v)分别称为流量限制条件和流量平衡条件原创 2017-02-05 22:37:23 · 7076 阅读 · 10 评论 -
BSGS算法 学习笔记
因为你,我懂得了爱。原创 2016-02-25 20:47:47 · 6985 阅读 · 5 评论 -
Manacher 回文自动机 学习笔记
Manacher“马拉车”算法非常好写好调的回文串算法。 用途:在O(n)O(n)时间内,求出以每一个点为中心的回文串长度。首先,有一个非常巧妙的转化。由于回文串长度有可能为奇数也有可能为偶数,说明回文中心不一定在一个字符上。所以要将字符串做如下处理:在每两个字母之间插入一个特殊字符,通常用“#”,这样所有的回文串就都变成了以一个字符为回文中心的。并且,我们需要在字符串的开头或者结尾插入另一个特殊原创 2016-12-19 23:14:20 · 6981 阅读 · 2 评论 -
关于 Nim游戏与SG函数 的一点研究
引言在《博弈圣经》中博弈论的定义:我们把动物利用大自然移动的瘾魂,在决策人期待的空间里,形成三维均衡的语文学理论,称为博弈论。 博弈论又被称为对策论(Game Theory)既是现代数学的一个新分支,也是运筹学的一个重要学科。 博弈论主要研究公式化了的激励结构间的相互作用。是研究具有斗争或竞争性质现象的数学理论和方法。 博弈论考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略。生物学家使原创 2016-12-25 10:36:57 · 2917 阅读 · 0 评论 -
AC自动机 学习笔记
Q:给出一坨短串,给出一个长串,求有多少个短串在长串中出现了。 A:把短串丢进trie树,建立fail指针,把长串在trie树上匹配,暴力蹦fail即可。每一个点只会被蹦一遍,打标记即可。Q:给出一坨短串,给出一个长串,求每一个短串在长串中出现了多少次。 A:把短串丢进trie树,建立fail指针,把长串在trie树上匹配,能匹配上的点size都+1,然后建立fail树,统计每一个短串end节点原创 2016-12-25 10:37:45 · 901 阅读 · 0 评论 -
并查集 小结
并查集在许多题目里其实只是用来辅助的一个小数据结构,用来实现简单的查找和合并。本文只挑选了以并查集为中心、以并查集的灵活运用为根本的题目——经典的&&特殊的技巧[BZOJ4195][Noi2015]程序自动分析 Noi中竟然出了基础的并查集题目!这道题确实只是并查集的简单操作,只不过需要离散化+排序而已。 [NOIP2010]关押罪犯 并查集里经常会有一类问题:敌人的敌人还是朋友。 其实这道原创 2016-11-19 19:33:27 · 802 阅读 · 0 评论 -
OI竞赛中手工栈的书写
引言在某些算法中,尤其是树、图、数据结构相关的算法,会牵扯到大量的递归。在绝大部分的OI竞赛中(NOIP、NOI等),递归所占用的栈空间限制为内存限制,换句话说,就是一般只要你不MLE就不会爆栈。 但是SDOI历年使用Windows+Cena评测,这个古老的评测系统递归的栈空间有限,经常递归到3w+就会爆栈,也就是说,如果你想遍历一条10w级别的树链是不可能的。 所以SDOI的选手们就开始写手工原创 2017-03-10 15:03:16 · 2484 阅读 · 0 评论 -
后缀数组 学习笔记
后缀数组定义搞懂定义是学习后缀数组的关键。 子串:字符串 S 的子串 r[i..j] ,i ≤ j ,表示 r 串中从 i 到 j 这一段,就是顺次排列r[i],r[i+1],…,r[j]形成的字符串。 后缀:后缀是指从某个位置 i 开始到整个串末尾结束的一个特殊子串。字符串 r 的从 第 i 个字 符 开 始 的 后 缀 表 示 为 Suffix(i) ,也就是Suffix(i)=r[i..l原创 2016-12-29 07:09:27 · 1276 阅读 · 4 评论 -
史上最详尽的平衡树(splay)讲解与模板
首先声明:万分感谢gty大哥的帮助!这年头能找到简单易懂的数组版平衡树模板只能靠学长了! 变量声明:f[i]表示i的父结点,ch[i][0]表示i的左儿子,ch[i][1]表示i的右儿子,key[i]表示i的关键字(即结点i代表的那个数字),cnt[i]表示i结点的关键字出现的次数(相当于权值),size[i]表示包括i的这个子树的大小;sz为整棵树的大小,root为整棵树的根。再介绍...原创 2016-02-03 20:59:45 · 33207 阅读 · 54 评论 -
关于数列an=n^t(t为常数)前n项求和公式的讨论
你知道人类最大的武器是什么吗?是豁出去的决心。原创 2016-05-13 20:11:30 · 1535 阅读 · 0 评论 -
计算几何 学习笔记
向量、直线与多边形精度控制控制精度一般在10−710^{-7}~10−1010^{-10}之间const double eps=1e-7;int dcmp(double x){ if (fabs(x)<eps) return 0; else return (x>0)?1:-1;}计算π的值\pi的值反余弦函数const double pi=acos(-1.0);定义一个向量st原创 2017-01-05 08:21:43 · 1517 阅读 · 4 评论 -
Link-Cut-Tree 学习笔记
信仰是与心中的上帝交谈,借此积聚“天上的财富”。原创 2016-03-27 15:02:21 · 2778 阅读 · 0 评论 -
网络流之最大流 EK/Dinic/Isap算法 学习笔记
为这,我已经在佛前求了五百年,求他,让我们结一世尘缘。原创 2016-02-17 23:03:41 · 2076 阅读 · 0 评论 -
例题:最短网络 图论算法之最小生成树 prim//kruskal 学习笔记
图论算法之最小生成树 prim//kruskal 最小生成树简单的说就是在一个图里选取一些边,使这些边以及它们所连接的结点组成一棵树(两两结点之间可以到达),并且使选取的边的边权最小。 它的成立条件是图是连通的。并且选取的边数为n-1。(有n个结点,n-1条边,只能为一棵树,没有别的可能) 主要有两个算法:prim和kruskalprim原创 2015-10-05 11:03:09 · 1310 阅读 · 0 评论 -
例题:[codevs1073/tyvj1251]家族 并查集 学习笔记
并查集并查集是一种树结构,可以把它看成是若干个集合,相同集合的点有相同的根节点;每一个点都有自己的代表元素,初始化时所有点的代表元素都是它本身,最终同一个集合里的点把它的代表元素递归上去,就可以找到它们公共的根;并查集的几种基本操作:1、合并2、查找3、路径压缩合并合并两个点,首先要找到这两个点的代表元素;如果f[i]代表i的代表元素,n1,n2分别是查找到的两个值原创 2015-09-19 19:53:02 · 779 阅读 · 0 评论 -
例题:信使 最优乘车 最短路径 图论算法之Floyed 学习笔记
图论算法之Floyed算法思路:最短路问题中,求两个点的最短路,有可能存在中间有中转点的情况,比直接到达要优。Floyed就是利用了这个思路。如果求ij之间的最短路,那么如果ik之间的最短路+kj之间的最短路要小于当前ij之间的最短路的话,我们就认为以k为中转点要更优,更新答案。时间复杂度:O(N^3);【代码】#include#include#includeusing na原创 2015-09-16 18:29:00 · 3298 阅读 · 0 评论 -
最大子矩阵问题&悬线法 学习笔记
幽人竹桑园,归卧寂无喧。物情今已见,从此欲无言。——少伯原创 2016-01-17 10:49:54 · 6156 阅读 · 0 评论 -
[codevs1557/tyvj1031/USACO OTC09 9TH]热浪[tyvj3187]最小花费 图论算法之dijkstra 学习笔记
图论算法之Dijkstra【算法思路】s[i]表示起点到i的最短路径的值;初始时s[起点]赋为0,其余正无穷;每一次找到一个s[i]最小的点minj,置标记,然后把所有没有标记过的且与点minj相连的点的s值更新一下;重复做,最多做n-1次,就能保证更新了所有的点。但也正是因为这个算法思路的局限性,Dijkstra不适于有负边权的情况;【代码】#include#inclu原创 2015-09-16 19:13:56 · 1533 阅读 · 2 评论 -
树形dp 小结
只能勉强称之为树形dp的傻逼问题:[POJ1655]Balancing Act 树的重心,经典问题,但是非常简单啊。。。 用size维护一下就好辣! [BZOJ2435][Noi2011]道路修建 Noi的题竟然有这么水。。。树的?序遍历树的遍历问题,大多数与根有关。也就是说,以?为根经常在dp的状态中出现。 [NOIP2003]加分二叉树树的直径(最长链)相关(经典问题):做法一:两遍d原创 2016-11-17 22:32:40 · 1630 阅读 · 2 评论 -
tarjan相关算法 学习笔记
链接 有向图强连通分量的Tarjan算法 图的割点、桥与双连通分支原创 2016-11-04 09:36:19 · 691 阅读 · 0 评论 -
关于fibnacci数列循环节的讨论
当你选定一条路,另一条路的风景便与你无关。原创 2016-10-21 11:40:14 · 592 阅读 · 0 评论 -
RMQ (Range Minimum/Maximum Query)算法
WA转载 2016-02-02 14:26:24 · 527 阅读 · 0 评论 -
带权中位数 学习笔记
我终于相信,每一条走上来的路,都有它不得不那样跋涉的理由;每一条要走下去的路,都有它不得不那样选择的方向。原创 2016-02-01 16:29:16 · 2211 阅读 · 0 评论 -
判断图是否有环
QAQ转载 2016-01-17 21:08:05 · 1593 阅读 · 0 评论 -
POJ dp题目列表
=▽=转载 2016-10-18 21:47:32 · 1527 阅读 · 0 评论 -
单调队列 学习笔记
定义按我的理解,单调队列就是一个可以一端进两端出的队列。只能从队尾进但是可以同时从队首和队尾出。用的不是很多,但是在某些情况下会有特殊之处。性质单调队列满足这样一个性质:队内的元素单调,并且队内前面一个元素的位置一定小于后面一个元素的位置(这里的位置是相对于原序列中的位置)。 很容易证明性质的正确性:如果只从队尾入队的话,一定满足前面一个元素的位置一定小于后面一个元素的位置。这样的性质为二分提供了原创 2016-11-10 10:39:13 · 540 阅读 · 0 评论 -
数论 学习笔记
一、整除 约数 倍数a|b表示b除以a余0,也就是a能整除b。称a是b的约数,b是a的倍数。 若a|b, a|c, 则a|(b+c) 若a|b, 那么对所有整数c, a|bc 若a|b, b|c, 则a|c二、素数 合数约数只有1和本身的数是素数,除此以外还有其他约数的数是合数。1既不是素数也不是合数。三、算数基本定理每个正整数都可以惟一地表示成素数的乘积。即有唯一的分解质因数方案: x=a原创 2016-02-17 08:07:34 · 854 阅读 · 0 评论 -
关于欧拉筛求phi的讨论
我喜欢你,仅仅如此,喜欢而已。原创 2016-03-04 22:07:19 · 1074 阅读 · 0 评论 -
Miller_Rabbin大素数判定 学习笔记
引理:(费马小定理) ap−1≡1(modp),(a,p)=1a^{p-1}\equiv 1\pmod p,(a,p)=1快速判定一个数是否为素数的方法: 如果存在一个整数aa,满足ap−1≡1(modp)a^{p-1}\equiv 1\pmod p的话,那么nn称为基于aa的伪素数。 当有多个满足关系的aa时,nn为素数的概率趋向于1。 所以多取几个aa测试即可。原创 2016-11-13 21:49:14 · 549 阅读 · 0 评论 -
关于“求[1,n]中与n互质的数的和”的讨论
引理: 若 gcd(n,i)=1 则 gcd(n,n-i)=1 (1<=i<=n)证明:用反证法 如果存在k!=1使gcd(n,n-i)=k,那么(n-i)%k=0,n%k=0 那么必须保证i%k=0 k是n的因子,如果i%k=0,那么 gcd(n,i)=k,与原命题矛盾。那么,由于i,n-i总是成对出现,并且和是n,那么ans=n∗φ(n)/2ans=n*\varphi (n)/2于是可能原创 2016-11-13 21:37:42 · 1406 阅读 · 0 评论 -
一个关于数论中拉格朗日定理的证明
劲。原创 2016-11-13 15:39:23 · 6425 阅读 · 0 评论 -
C++/STL bitset
STL大法好!转载 2016-10-01 17:41:36 · 724 阅读 · 0 评论 -
扩展欧几里得算法(exgcd) 学习笔记
定义首先引入一个叫做贝祖定理的东西 对于∀a,b∈N,总是∃x,y∈Z,使ax+by=(a,b)\forall a,b\in N,总是\exists x,y\in Z,使ax+by=(a,b)已知a,ba,b,求ax+by=(a,b)ax+by=(a,b)一组可行解的算法即为扩展欧几里得算法。算法流程首先我们知道用来求最大公因数的欧几里得算法。int gcd(int a,int b){原创 2016-11-12 00:12:36 · 2060 阅读 · 0 评论 -
单调栈 学习笔记
单调栈相对来说比较简单,那就简单写一下。有些题目的单调栈只是一个“单调的栈”而已,是根据题目的性质维护了一个单调的栈实现一些查询操作。但是单调栈更常见的一种用处是维护以每一个点为最大值/最小值的最长的区间是多少。举个栗子:1 2 1 1 5 如果要求以每一个点为最小值的区间的话,答案应为[1,5][2,2][1,5][1,5][5,5]由于每一个点的左右端点都只会被左边/右边第一个大于/小于它的点原创 2016-11-11 19:49:30 · 865 阅读 · 0 评论 -
关于扩展欧几里得的一点研究
orz TA转载 2016-11-11 19:23:55 · 509 阅读 · 0 评论 -
二分图 学习笔记
很久之前就学过二分图,但是感觉当时理解的并不好。今天重新复习了一下二分图——for noip,在此写下一些新的体会。二分图的定义摘自ATP的blog—— 二分图顾名思义就是可以分成两部分的图。并且这两部分内部不能有边相连。形式化地,定义图G={V,E}G=\{V,E\},AA是GG的一个子集。如果对于∀(x,y)∈E\forall (x,y)\in E,都有(x∈A)∧(y∈S−A)(x\in原创 2016-11-10 23:28:58 · 755 阅读 · 0 评论