
有趣( • ̀ω•́ )✧
Arlia
老年人记性不好
展开
-
set详解
一篇比较详尽的set讲解博客原创 2018-08-11 12:33:01 · 356 阅读 · 0 评论 -
vector详解
一篇比较详尽的讲解vector的博客原创 2018-08-09 15:08:00 · 303 阅读 · 0 评论 -
DP小结
DP小结DP本质就是状态压缩——只记录和答案有关的值。所以DP的解法大概就是: ①不断探索问题性质(数位DP体现得比较明显,如BZOJ1026 windy数,还有一道缺了题号的题) ②减少那些和答案有关的值的个数(比如要从题目中筛选信息来定出状态,列出方程)。 ——scαpe只是说说而已,DP并没有什么定式。一些方法这些方法说不定可以提供一些思...原创 2018-08-01 13:36:11 · 239 阅读 · 0 评论 -
rand()原理
rand()原理参考这一篇博客和这一篇博客用rand()之前,要设置一个种子:srand(seed),否则seed默认为1也可以srand(timd(NULL)),这样每次生成的伪随机数都不一样总的来说,系统的生成大概就是一个一次函数,然后加一个模数rand()=(a∗seed+b)%crand()=(a∗seed+b)%crand()=(a*seed+b) \% c,其中a,b,...原创 2018-07-31 10:17:21 · 2961 阅读 · 0 评论 -
sort与STL排序的时间复杂度
sort与STL排序的时间复杂度转载 2018-06-19 12:52:39 · 7707 阅读 · 1 评论 -
差分与树上差分
差分与树上差分差分必须离线。O(1)修改,O(n)求和,O(1)查询[L,R]区间整体加上d:w[L]+=d, w[R+1]-=dA数组为修改后的数组,有A[i]=A[i-1]+w[i]树上差分点权求和:若[x,y]两点之间路径上的所有点的权值+d,则w[x]+=d , w[y]+=d , w[LCA(x,y)]-=d , w[Fa[LCA(x,y)]]-=d边...原创 2018-06-17 18:42:55 · 898 阅读 · 0 评论 -
最大线段覆盖问题
最大线段覆盖问题给你一些线段和一个区间,找出一种选择方法,使得区间被覆盖的长度最大,且线段之间互不相交(或者端点处可以相交)。千万不要用贪心!这是背包DP问题,设状态f[i](如果只有一个区间),表示[1,i]的区间能被覆盖的长度的最大值,方程:f[i]=max(f[i],f[Segment[j].l−1]+Segment[j].w)(Segment[j].r<=i)f[i]...原创 2018-06-17 17:58:11 · 2278 阅读 · 0 评论 -
LCA 倍增+O(1)
LCA 倍增算法时间复杂度为O(NlogN)O(NlogN)O(NlogN)的在线算法Dep[v]Dep[v]Dep[v]记录节点vvv的深度,Fa[v][k]Fa[v][k]Fa[v][k]记录vvv向上第2k2k2^k个祖先的编号代码#include<iostream>#include<cstd原创 2018-06-10 18:31:15 · 1184 阅读 · 0 评论 -
Sparse Table [RMQ]
Sparse Table [RMQ]预处理时间复杂度O(NlogN)O(NlogN)O(NlogN),查询时间复杂度O(1)O(1)O(1)。很优秀。f[i][j]f[i][j]f[i][j]表示[i,i+2^(j-1)]区间中的最大/最小值。方程:f[i][j]=min(f[i][j-1],f[i+2^(j-1)][j-1])代码#include<iostream&...原创 2018-06-10 18:23:31 · 253 阅读 · 0 评论 -
重大ACM预赛总结
重大ACM预赛总结最后一道题竟然T了三次,罚时一个多小时QAQ,真恐怖,,,要不然就是rank1了QAQ我还是太弱了,没想到SPFA判环会退化到n*n,然后就没想其它的判环方法基础还是很薄弱,有待加强...原创 2018-05-20 13:26:39 · 545 阅读 · 0 评论 -
判环的方法
判环的方法SPFA O(n*n)(n为点数)拓扑排序 可以有重边 O(n)Tarjan 实质上也是拓扑排序有待完善原创 2018-05-20 13:25:25 · 1219 阅读 · 0 评论 -
五月月赛第一场总结
五月月赛第一场总结总算不是倒数了,还是比较欣慰。但是我发现,最近学了字符串算法,前面的知识忘得厉害。比如C题收集宝石,我很快就看出这是道动规+搜索,但是我竟然没有加标记数组来标记讨论过的状态,然后就陷入了调试代码的死循环。好智障。如果加了那个标记数组,我至少能多拿50分。再比如E题青蛙表演,我也很快看出这是道差分约束,约束条件也很简单。然鹅, 我先是忘了差分约束的具体操作,现推一遍...原创 2018-05-19 10:41:58 · 285 阅读 · 0 评论 -
关于xxx_bound
使用xxx_bound的前提都是数列A是有序的 要包含<algorithm>头文件 lower_bound:找A中大于等于某个数的数的位置(第一个) upper_bound:找A中大于某个数的数的位置(第一个)写法int k=lower_bound(A+1,A+n+1,t)-A;组合使用有序数列A中某个数t的出现次数等于upper_bound(A+1,A+n+1,...原创 2018-05-18 23:21:43 · 251 阅读 · 0 评论 -
初级数论
朴素欧几里得用途:求公约数//手写版int gcd(int a,int b){ if(b==0)return a; return gcd(b,a%b);}//系统函数版int ans=__gcd(a,b);扩展欧几里得用途:解不定方程ax+by==gcd(a,b)的一组整数解int exgcd(int a,int b,int &amp;amp;...原创 2018-05-16 17:56:22 · 369 阅读 · 0 评论 -
KMP
KMP注意:Fail[1]=0(代码中的字符数组下标从1开始)Fail数组有两个性质:①有关循环节:对于一个长度为Len的字符串,它的循环节长度是Len-Fail[Len](数组下标从1开始);如果Len%(Len-Fail[Len])!=0,就没有循环节。②有关树:如果把所有的Fail值连上边,那么所构成的图是一棵树。bool KMP(int s,int e,int id...原创 2018-05-14 19:45:23 · 206 阅读 · 0 评论 -
不知道如何优雅地为这篇博客命名
听学长哔哔唐学长哔哔了两个半小时,不过很有趣啊(๑╹ヮ╹๑)1.有些题数据范围很小,多半就是:状态压缩 or 搜索2.如何对一个数向上取整:例如ceil(a/b)=(a+b-1)/b3.A*剪枝:最优化剪枝4.迭代加深:设置搜索层数上限...原创 2018-05-06 23:32:02 · 263 阅读 · 0 评论 -
学了些啥
学了些啥一、动态规划(真是非常有趣啊δωδ) (1)基础动规 ①公共子串 ②公共子序列 (2)区间动规 ①普通的区间 ②三角剖分 (3)背包动规 一个/两个背包,有限/无限个物品,带权/不带权…… (4)多维动规 (5)费用提前计算 (6)树形动...原创 2018-05-01 09:06:31 · 215 阅读 · 0 评论 -
最小生成树
最小生成树最小生成树的性质1.一棵生成树从p点出发,遍历完每个点之后再回到p点,那么生成树中的每条边至少被经过两次,设生成树中第i个点的度数的di,那么第i个点至少会被经过di次。(安慰奶牛)2.一个图的最小生成树不唯一。它的每一个最小生成树中,每个点对之间的边都是一一对应的(即边长相同)。因此,一个图中的最小生成树的最大边长和最小边长是固定的。(Poj 3522)3.(最小瓶...原创 2018-04-18 10:59:43 · 388 阅读 · 0 评论 -
树剖
树剖只是想来放一波代码= =单点修改+区间求和+区间最大值区间修改就在线段树上加个Lazy操作就可以了#include&lt;iostream&gt; #include&lt;cstdio&gt; #define N 300000 #define ll long long using namespace std; ll maxxx=0; ll V[N]; ll L...原创 2018-04-14 07:15:43 · 307 阅读 · 0 评论 -
图的连通性【模板】
图的连通性【模板】强连通分量【有向图】强连通图:图G中任意两点之间都有可以到达的路径强连通分量:有向图G的最大连通子图最大连通子图:该子图是G的强连通子图,且将G中的任意一个不在该图中的点加入该子图中该子图将不再连通。stack&lt;int&gt;s;void Tarjan(int u){ Time++; Dfn[u]=Time,Low[u]=Tim...原创 2018-04-13 19:40:14 · 530 阅读 · 0 评论 -
非朴素最短路
非朴素最短路次短路struct node{ int id,len,flag; bool operator<(const node &a)const{ return len>a.len; }};void dijkstra(int s){ //dis[i][0]表示从s到i的最短路径长度 //dis[i][...原创 2018-04-11 17:04:52 · 300 阅读 · 0 评论 -
多维动规
多维动规你可以把多维动规理解成多线程操作,就是一次走两条路。例题借Phantasm Dragon大佬博客一用方格取数原创 2018-03-17 19:38:05 · 327 阅读 · 0 评论 -
动态规划——费用提前计算
费用提前计算就是在讨论当前状态时,提前把后面状态的部分值先算了,有点类似于乘法分配律中的提公因式。这一类动态规划是为消除后效性而生的。例题植物大战僵尸Sue的小球总结1.费用提前计算类型的DP一般存在于区间问题中,设状态的时候可以往区间DP上靠2.后效性是指当前状态会影响到后面的状态,即每一个状态的权值不唯一。例如,植物大战僵尸里面,通过一块蓝草之后,通过草地的速度就会...原创 2018-03-17 16:23:50 · 1318 阅读 · 0 评论 -
全概率公式+贝叶斯公式详解
http://blog.youkuaiyun.com/luc9910/article/details/54377626转载 2018-02-24 22:25:11 · 1485 阅读 · 0 评论 -
容斥原理详解
http://blog.youkuaiyun.com/usher_ou/article/details/68927439转载 2018-02-24 22:23:53 · 1238 阅读 · 0 评论 -
求乘法逆元的几种方法
http://blog.youkuaiyun.com/stcyclone/article/details/52081822转载 2018-02-24 22:22:24 · 466 阅读 · 0 评论 -
O(n)求乘法逆元
它的公式是这样的:inv[i]=(MOD-MOD/i)*inv[MOD%i]%MOD;前提是模数MOD必须是质数写成代码就是这样:inv[1]=1;for(int i=2;i&amp;amp;amp;amp;lt;MOD;i++) inv[i]=(MOD-MOD/i)*inv[MOD%i]%MOD;inv[]数组一般开到比MOD大20就够了时间复杂度是O(n),即扫一遍就可以求出[1,MOD)范...原创 2018-02-24 22:14:31 · 399 阅读 · 0 评论 -
关于质数
欧拉函数求phi(n)//phi(1)==1int phi(int k){ int ans=k,a=k; for(int i=2;i*i<=a;i++) if(a%i==0){ ans-=ans/i; while(a%i==0)a/=i;//算数基本定理 } if(a>...原创 2018-02-22 19:41:01 · 421 阅读 · 0 评论 -
斯特林数 Stirling
【组合数学】第二类斯特林数(更加常用)定义:把n个元素划分成m个非空集合的方案数。递推式:S2[n][m]=S2[n-1][m-1]+m*S2[n-1][m]①前n-1个球放在前m-1个盒子里,第n个球单独放一个盒子;②前n-1个球放在m个盒子里有S2[n-1][m]种放法,第n个球可以放进m个盒子中的任意一个,又有m种放法代码:void Stirling2(int...原创 2018-02-22 19:40:16 · 638 阅读 · 0 评论 -
扩展欧几里得定理
朴素欧几里得定理代码:int gcd(int a,int b){//a>=b if(b==0)return a; return gcd(b,a%b);}不定方程==在已知整数a,b的情况下求a*x+b*y=gcd(a,b)的一组整数解x,y==这样的方程一定有解x1=y2,y1=x2-a/b*y2;证明略(核心就是把a%b换成a-k*b,...原创 2018-02-22 19:37:54 · 230 阅读 · 0 评论 -
Lucas定理——大组合数取模
大组合数取模,求C[n][m]%p公式:C[n][m]%p == C[n%p][m%p]*C[n/p][m/p]%p代码(内含粗略解释):#define LL long longLL mont(LL a,LL b,LL c){//快速幂 LL ans=1; a%=c; while(b){ if(b&amp;amp;amp;amp;amp;1)ans=ans*a%c; ...原创 2018-02-22 19:37:18 · 544 阅读 · 0 评论