自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 逆元

简单得求余概念:(a+b)%p=(a%p+b%p)%p(a+b)\%p=(a\%p+b\%p)\%p(a+b)%p=(a%p+b%p)%p(a−b)%p=(a%p−b%p+p)%p>0(a-b)\%p=(a\%p-b\%p+p)\%p>0(a−b)%p=(a%p−b%p+p)%p>0(a∗b)%p=(a%p∗b%p)%p(a*b)\%p=(a\%p*b\%...

2019-08-29 18:36:24 244

原创 扩展欧几里得详解

给出a、b、c,,给出a∗x+b∗y=ca*x+b*y=ca∗x+b∗y=c中,x、y满足一定条件的解。这时我们就要用到扩展都几里德了。首先要知道一个性质:若a∗x+b∗y=ca*x+b*y=ca∗x+b∗y=c有解,则有c=k∗gcd(a,b),k∈Zc=k*gcd(a,b),k∈Zc=k∗gcd(a,b),k∈Z,这一点可以利用唯一分解定理证得。利用上面的性质,我们将等式两边同除于kkk...

2019-08-29 00:33:48 501

转载 KMP模板

#include<bits/stdc++.h>const int maxn = 1e6 + 10;char mo[maxn], str[maxn];///mo为模式串、str为主串int next[maxn];inline void GetNext(){ int i = 0, j = -1, len = strlen(mo); next[i] = j; ...

2019-08-26 16:52:37 79

原创 快速幂+矩阵快速幂+欧拉降幂

快速幂对于一个非常大的数进行指数运算时,运算会很慢。例如计算5195^{19}519时,直接算就是19个5相乘。快速幂则二进制分解19,得到10011,这时只需要计算3次就可得到答案设置ans=1,tmp,top从10011的低位指向高位,100115195^{19}519=510011(2)5^{10011(2)}510011(2)=51(2)5^{1(2)}51(2)∗*∗510(2...

2019-08-25 20:00:26 431

原创 Fishing Master 贪心+思维

2019CCPC秦皇岛站网络赛-1008Problem DescriptionHeard that eom is a fishing MASTER, you want to acknowledge him as your mentor. As everybody knows, if you want to be a MASTER’s apprentice, you should pass t...

2019-08-24 10:37:47 177

原创 多重背包

有N种物品和容量为V的背包,第种i件物品价值v[i],费用w[i],数量num[i]。求解在如何让背包获得最大价值。基本思路:可把每种物品拆分,拆分后的几份物品独立。例如把数量为22,价值为v,费用为w的物品拆成5份,每份包含1,2,4,8,7件。1,2,4,8,7可以组合成0~22内的任何数字。所以从这三份物品我们可以得到所有种情况。二进制拆分n=22。1,2,4,8可以组合成0~15的...

2019-08-23 17:53:44 129

原创 完全背包

有N种物品和容量为V的背包,第种i件物品价值v[i],费用w[i],每件商品取多次。求解在如何让背包获得最大价值。基本思路:如果按照01背包的思路,对于一种商品,不取,或取1件,2件,3件…时间复杂度太大。有一个优化,一维的01背包容量从前向后枚举,因为对于i状态,他需要一个没有选择i物品且容量更小的状态,而对于完全背包可以不考虑i种物品装了几次。for i=1…Nfor j=w[i]…...

2019-08-23 10:47:27 74

原创 01背包

有N件物品和容量为V的背包,第i件物品价值v[i],费用w[i]。求解在如何让背包获得最大价值。基本思路:对于每件物品,可以选着装或者不装。问题的可求解子状态是背包的容量为v(v<=V)时的最大属性。dp[i][j]表示在前i件物品,用容量为j的背包能获得的最大价值。状态转移公式:f[i][j]=max( f[i][j] , f[i][i-w[i]]+v[i] )for i=1…N...

2019-08-23 09:35:41 70

原创 线段树区间合并

**通过一道例题入门线段树区间合并例题: 输入n个 0,1数字. 操作 :  0 l r 查询[l,r]区间,输出最长连续1的长度;  1 l r x 修改[l,r]区间的值为x.思路区间信息问题可以用线段树,线段树的基本模板,每个节点主要维护区间最长1串,sum.len。此外,区间合并时(push_up),我们要求的两个子区间合并的最长1串,可以通过增加两个节点信息(下面还要讲一...

2019-08-16 23:28:51 248 2

原创 DFS序-树链剖序-欧拉序

,二叉树是一颗线段树,树状数组,树上的每个维护节点负责维护一个区间信息,节点之间又包含和属于的关系。例如线段树:DFS序:我们通过对每个节点设置两个量,in和out。从根节点开始DFS搜索,in为第一次搜索到时的时间戳,out为退出出栈时的时间戳。可以得到,例如我们要查询以b为根节点我们只需要查询区间[2,5];要查询以c为根节点子树的信息,我们可以查询区间[6,7];查...

2019-08-12 00:16:00 189

原创 线段树---单点修改

思路:线段树,每个节点都被模拟成一条线段,负责维护这条线段(下面成为区间)从从左端点到有端点这一部分的信息。大致思路是这样的:一个父节点负责维护一块大区间的信息,他有两个左右子节点,编号为分别负责维护父节点的左一半区间和右一半区间。这个图是维护区间最大值的线段树.数据结构:根节点编号为1。编号为rt的节点,维护区间是[l,r];左儿子编号为rt*2,维护[l,(r+l)/2];...

2019-08-07 22:07:00 167

原创 tarjan算法-缩点

有向图的缩点就是把有向图中强连通分量缩成一个点(道理很简单,我到了这个强连通分量的任何一点,那么这个强连通分量上的点就都能被我访问了),在处理有向图的连通性问题时有很多作用。代码是对求连通分量的改的,cnt做连通量的编号,belong[],表示点属于哪个连通分量,vector<> p存储每个连通量的点。int Stack[maxn], low[maxn], dfn[ma...

2019-08-06 20:44:00 237 1

原创 tarjan算法-无向图割边

无向图中,u是v的父节点low(v)的值表示v通过u以为可以访问的最大祖先节点的时间戳low(v)>=dfn(u) 表示:v访问祖先节点必须通过v-u(不包括u),不存在其他路。(割点)low(v)>dfn(u)表示:v访问祖先节点必须通过v-u(包括u)。(割边)low(v)==dfn(u)表示:v可以不通过u回到u,即不从v-u这条边走到u,但必须从u访问祖先节点。...

2019-08-06 17:36:00 255

原创 tarjan算法-最大连通分量个数(模板)

const int maxn=1e5+7;int Stack[maxn], low[maxn], dfn[maxn], inStack[maxn], belong[maxn];int now, cnt; // now:时间戳,cnt强连通的个数struct edge{ int v,nex;}edges[maxn*5];int head[maxn],edge_cnt;void...

2019-08-05 19:32:00 196

原创 数论基础

素数就是质数,在大于1的自然数中,除了1和它本身以外,不能被任何数整除唯一分解定理: 一个数要么其本身是质数,要么可以分解为几个质数之积。对于一个正整数X(除1外)都有这样一个式子(p是素因子,a是素因子的个数)判断素数 复杂度:O(√n)int flag=0for(int i=2;i*i<=n;i++){ if(x%i) { ...

2019-08-04 17:34:00 320

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除