摘要:
学习权值线段树之前要先学会: 线段树(废话) 权值线段树主要思想就是利用线段树维护一个序列的值。 ##定义: 权值数列:对一个数列 $a$ 构造一个数列 $b$ ,其中 $b[i]$ 表示 $a$ 中数值 $i$ 出现的次数,就是 $a[j] = i$ 的 $j$ 的个数,这样的数列 $b$ 就叫 阅读全文
摘要:
##Link 经典区间dp 思路: 每到了序列的一个位置,这个位置的数字就表示他有几个儿子,向下搜索0/1/2次 设状态: dp[i][j] 表示i这个节点,有j个儿子,最多有多少绿点 f[i][j] 表示i节点,有j个儿子,最少有几个绿点 在搜索的同时将三种情况都顺便转移一下。 BOOM!! /* 阅读全文
摘要:
##Link 感觉有点像最长公共子串, 但是那个是绿题,这个是蓝题,那肯定不一样qwq 整理一下思路: 设置状态: 设 \(f[i][j]\) 表示a串到i位置,b串到j位置,最长的公共子串长度。 枚举边界,因为这个状态的转移是从前边转移过来的,所以我们正向枚举。 转移,两种情况: 如果a[i] ! 阅读全文
摘要:
阅读本文之前请先学习扩展欧几里得算法 一个整数,除以23余2,除以59余51,除以79余33,除以97余77,求这个数 设a为这个数,那么可以列出: $$ \begin{cases} a≡2(\bmod 23)\ a≡51(\bmod 59)\ a≡33(\bmod 79)\ a≡77(\bmod 阅读全文
摘要:
阅读本文之前,请先学习裴蜀定理 扩展欧几里得算法,简称扩欧,exgcd 其实就是求 \(ax+by=gcd(a,b)\) 的特解, 求法如下: \[ ax+by=gcd(a,b)=gcd(b, amodb) \] \[ bx'+(a-⌊\frac{a}{b}⌋b)y'=gcd(b,amodb) \] 阅读全文
摘要:
##定义 若a和b为整数,最大公约数gcd(a,b)=g,则对于任意的整数x和y,ax+by一定为g的倍数,并且一定存在整数$x_0$和$y_0$。使得 $ax_0+by_0=g$ 成立 \(161x_0+126y_0=7\) 经过简单计算后可以看出来 \(161×(-7)+126×9=7\) 但 阅读全文
摘要:
##引入 123456789x+1=11y,求整数解qwq 这道题其实是初等数论里的线性丢番图方程,即二元一次不定方程,当a,b,c∈Z,求x和y的整数解 求解这个问题要学习辗转相除法 ##最大公约数(gcd) 求最大公约数的方法有很多种,其中最简单的一种就是质因数分解 我们把两个数分解质因子,当中 阅读全文
摘要:
来总结一下调了一整天的 $Splay$ $qnq$ 在学习Splay之前,可以先学一下二叉搜索树和Treap。 #为什么要学习 $Splay$ Splay是通过不断的暴力旋转,将调用某些点时的复杂度大大降低,而且旋转之后其他点的深度最多增加2,所以学一下Splay是很有必要的qwq。 另外以后可能要 阅读全文
摘要:
##一道贪心题 \(qwq\) 读完题目,就知道这道题跟字符没什么关系,所以我们可以先把 * 和 ^ 看成 \(1\) 和 \(0\)。 那问题就转化成了怎么着把其中的一个序列翻转一下使其中的 \(1\) 的个数最多和最少。 ##现在考虑一个问题,怎么求所有分数的可能性: 要知道,最小值与最大值之间 阅读全文
摘要:
排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。 排列组合的中心问题是研究给定要求的排列和组合可能出现的情况总数。 排列组合与古典概率论关系密切。 #加法原理 & 乘法原理 ##加法原理 加法 阅读全文