板子
文章平均质量分 62
「已注销」
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
扩展Lucas总结
类比: 类比一下所有可以用来求组合数的方法: 预处理:可以有效处理O(1e6)数据,弊端是不能存在模数不为质数和中的情况,p为模数 帕斯卡恒等式:可以处理O(1e3)的数据,依靠dp,没有模数限制 Lucas定理:可以求n,m较大而p较小的情况,递归在O()O(?)来求,弊端是模数一定是质数 扩展Lucas:跟lucas无关,是中国剩余定理+预处理阶乘,注意,在题中保证p不是质数而且还很大的情况下,能保证p的质因数幂在1e5~6范围内,考虑使用扩展Lucas 补充一个:BSGS是求:最小正整数x.原创 2022-05-09 21:24:58 · 389 阅读 · 0 评论 -
中国剩余定理
CRT: 证明的话显然,在(mod mi)中才会有Mi*ti=1的意义,而不在(mod mi)情况下时,会整除,因为前者是除以外所有的的乘积,故,不会产生贡献,最终只有原创 2022-05-07 23:11:19 · 421 阅读 · 0 评论 -
求区间元素种类数的几种方法
P1972 [SDOI2009] HH的项链https://www.luogu.com.cn/problem/P1972 本博客将以该题目为例进行介绍 方法1:树状数组 树状数组需要结合离散化处理,我们观察到一个性质,随着右端点的右移,每一种元素的贡献位置(这里指存在贡献的位置,如:1 2 3 1 这组数据,内1元素的贡献可以用4位置提供1次贡献,而1位置的元素贡献为0),因为右端点不断右移,所以不需要考虑查询区间存在如下情况: 在上图中,假设7位置的1提供了贡献,此时肯定右端点位置,故上图区间..原创 2022-05-04 18:19:23 · 928 阅读 · 1 评论 -
点分治解析
前言 最近碰见了淀粉质。想系统学学,虽然也学不懂。 算法概述 首先明确用途:在大规模处理树上路径的问题时,可以考虑淀粉质 淀粉质(点分治 的主要思想继承了分治的思想,相当于每一次拆开了一棵树(子树),然后不断重复操作,因此,点分治优化的思路就来自于选取的树根的最大深度最小 引理 树的重心 关于树的重心,贴个oiwiki 这里我们应用的性质即为性质第一条 首先考虑为什么需要树的重心,我们每次分裂出子树,假设子树退化成链,结合线段树的思想,我们知道应该选取尽量到各个........原创 2021-12-16 22:41:43 · 542 阅读 · 0 评论 -
差分约束系统
算法简介 差分约束系统是一种特殊的n元一次不等式,包含n个变量,以及m个约束条件,每个约束条件由两个变量做差构成的,形如:,其中是常数, 常规约束条件为:原创 2021-08-19 13:49:01 · 231 阅读 · 0 评论 -
博弈论基础
巴什博弈 必胜策略,第一回合消去余数,此后每次保持两个人轮流取一回合的石子数量维持在 #include<iostream> #include<cstdio> #include<cmath> using namespace std; int n,m; int main() { scanf("%d%d",&n,&m); if(n%(m+1)) printf("Second"); else printf("First"); return ...原创 2021-08-13 13:58:29 · 296 阅读 · 1 评论 -
线段树合集整理
作为oier刷题是碰见的大数据结构的集合 作者水平有限,如有不足欢迎批评指正 会随时更新其中的题目原创 2021-08-11 11:43:06 · 459 阅读 · 1 评论 -
欧几里得及其扩展
辗转相除法 用途:求解a,b两数的最大公约数 定理: 前提: 语言表述为:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数 有了这个定理,可在几乎是log的时间复杂度内求得最大公约数 int gcd(int a,int b) { if(!b) return a; return gcd(b,a%b); } 其定理延申:我们知道 而我们知道,, 则要求,等价于求 因此,这样一看,如果求多个数的最大公约,可化成差分的形式 所以一个树状数组...原创 2021-08-09 10:53:14 · 233 阅读 · 0 评论 -
区间二分法
二分查找 while(l<=r) { int mid=(l+r)/2; if(val[mid]==x) return mid; if(val[mid]<x) l=mid+1; else r=mid-1; } 很基础的板子,没啥可说 保证答案处于以内,循环一般以结束,每次二分的中间值会归于左半段或右半段 在单调递增区间中查找第一个满足的数(即的数中最小的一个) while(l<r) { int mid=(l+r)>>1;/*向下取整*/ ...原创 2021-07-30 12:00:46 · 1178 阅读 · 1 评论 -
等比数列求和
引入: 先来看一个问题,求的所有约数之和; 解决思路如下:首先将分解质因数,表示为,其中均为质数,因此表示为:。此时我们将的所有约数表示为集合,从这个约数中选出个数的乘积即为一个约数。 此时我们根据乘法分配律反推:所有约数之和为: 而如何求解每一对括号内的等比数列和? 正文 等比数列求和通项公式: 注意,如果解决此类问题,对于除法应为在的条件下做同余,需要用到逆元,还需要关注是否为素数 而这里问题来了,我们想用更快的没有除法的方法求等比数列和 考虑分治法:如果为奇数, ...原创 2021-07-29 14:27:57 · 3656 阅读 · 0 评论 -
网络流和二分图初步
杂谈 初步涉猎网络流,谈谈自己的理解,蒟蒻会不定期补充的 qwq 网络流问题 最大流问题: 先举一个运输方案的例子 : 可行方案: 总运输量5百吨。 显而易见一个可行方案有如下性质: 而现在的问题转变为求Vs到Vt的最大运输量 概念概述: EK算法 感性理解则为:增广的流量一定要符合短板效应,即等于路径上残量的最小值。 EK算法具体实现:标程 #include <cstdio> #include &...原创 2021-07-27 22:30:48 · 320 阅读 · 0 评论 -
逆元求解方法
费马小定理求逆元 int quick_pow(int a,int b) { int ans=1%mod; int tmp=a%mod; while(b) { if(b&1) ans=(ll)(ans*tmp)%mod; tmp=(ll)(tmp*tmp)%mod; b>>=1; } return ans%mod; } int Inv(int x) { return quick_pow(x,mod-2); } o(n+log(n))预处理逆元 void.原创 2021-07-16 10:12:46 · 351 阅读 · 0 评论 -
并查集基础
并查集 是一种树型的数据结构,用于处理一些不相加集合的合并和查询问题。在使用中常常以森林来表示。 并查集也是用来维护集合的,和前面学习的set不同之处在于,并查集能很方便地同时维护很多集合。如果用set来维护会非常的麻烦。并查集的核心思想是记录每个结点的父亲结点是哪个结点。我们来引入一下:话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一...原创 2018-06-09 17:21:56 · 16545 阅读 · 14 评论
分享