算法学习
lero1005
菜是原罪。
展开
-
WARSHALL算法计算传递闭包
考虑n+1个矩阵的序列M0,M1,……,Mn,将矩阵Mk的第i行记作Mk[i,j]. 对于k=0,1,……,n,Mk[i,j]=1当且仅当在R的关系图中存在一条从xi到xj路径,并且这条路径除了端点外中间只经过{x1,x2,……,xk}中的结点。WARSHALL算法从M0开始,顺序计算M1,M2,……,直到Mn为止。 我们知道,对于关系R对应的关系矩阵M来讲,其传递闭包R(t)...原创 2018-05-10 22:46:43 · 2335 阅读 · 0 评论 -
背包问题总结
1.01背包01背包问题#include <cstdio>#include <stack>#include <algorithm>#include <cstring>#include <cmath>#include <iostream>#include <map>#include <v...原创 2019-07-28 22:24:02 · 127 阅读 · 0 评论 -
单调队列入门
求1~m全覆盖的最短区间651. 逛画展#include <cstdio>#include <stack>#include <algorithm>#include <cstring>#include <cmath>#include <iostream>#include <map>#inclu...原创 2019-07-29 20:40:10 · 243 阅读 · 0 评论 -
洛谷P4783 (高斯消元求矩阵的逆 模板)
/** 高斯消元矩阵求逆**/#include <cstdio>#include <stack>#include <algorithm>#include <cstring>#include <cmath>#include <iostream>#include <map>#include ...原创 2019-07-24 22:15:46 · 208 阅读 · 0 评论 -
CodeForces - 343C 二分
题目链接题意:给定n个可并行工作的起点的坐标,和m个终点坐标,要求用起点去碰终点,起点移动一次花费1s,问最少需要多长时间思路:可以二分时间,记录目前最小未覆盖的点的下标,对于每个点考虑先左移动还是先右移,算出目前的起点可覆盖的最远距离后更新最小未覆盖点的下标。注意:决策时有先往右再往左和先往左再往右两种情况如下图#include <cstdio>#include ...原创 2019-07-29 23:50:09 · 161 阅读 · 0 评论 -
洛谷P1092 (高斯消元+搜索/二进制状态压缩)
题目描述所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子: 43#9865#045+ 8468#6633 44445509678其中#号代表被虫子啃掉的数字。根据算式,我们很容易判断:第一行的两个数字分别是55和33,第二行的数字是55。现在,我们对问题做两个限制:首先,我们只考虑加法的虫食算。这里的加法...原创 2019-07-24 23:30:29 · 264 阅读 · 0 评论 -
模意义下大整数乘法
计算与二进制取幂的思想一样,这次我们将其中的一个乘数表示为若干个 2 的整数次幂的和的形式。因为在对一个数做乘 2 并取模的运算的时侯,我们可以转化为加减操作防止溢出。递归方法如下:ll p;ll qmul(ll a, ll b, ll p){ ll res = 0; a = ((a%p)+p)%p; b = ((b%p)+p)%p; if(a...原创 2019-07-30 23:33:46 · 525 阅读 · 0 评论 -
中国剩余定理模板
裸中国剩余定理中国剩余定理的内容:对于两两互质的一组整数,对于一组整数有,则可以唯一地确定一个在内的解使得此同余方程组成立。方法:考虑两个方程的情况:即n%m1 = a,n%m2 = b,显然如果不在模意义下的话,那么a+(b-a)显然可以成为第二个方程的解,然而b-a的偏移量不满足模意义,我们可以求出m1关于m2的逆元w,则显然a+(b-a)m1w可以成为方程的解。按照这种构造方...原创 2019-08-03 23:37:18 · 233 阅读 · 1 评论 -
高次同余方程(BSGS算法模板)
裸题(n是素数)POJ 2417#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#includ...原创 2019-08-04 16:12:08 · 227 阅读 · 0 评论 -
LightOJ - 1058
题意:给定n个顶点和其坐标,问这n个顶点里挑四个能组成几个平行四边形Sample Input260 02 04 01 13 15 17-2 -18 95 71 14 82 09 8Sample OutputCase 1: 5Case 2: 6思路:我过于愚蠢。 判断平行四边形最简单的形式就是对角线相互平分...原创 2019-08-08 00:02:44 · 167 阅读 · 0 评论 -
学会将互不干扰的因素分离考虑(LightOJ-1323 LightOJ-1349)
这两个题都是将二维的运动分离考虑的,最初看到无从下手,分离后情况就简单了许多。LightOJ-1323题意:现在有个矩形长l宽w矩形内部n个小球,速度相等,方向沿{左上,左下,右上,右下}中间的一个现在给出n个小球的坐标,问第k秒时这些小球的坐标是什么,要求输出按横纵坐标排序存在碰撞情况:1.碰到边界,速度反向2.两球相碰输入是T,矩形长度L,W,小球数量N和秒数K...原创 2019-08-05 23:33:41 · 192 阅读 · 0 评论 -
尺取模板题
套路套路都是套路POJ-2100#include <cstdio>#include <stack>#include <algorithm>#include <cstring>#include <cmath>#include <iostream>#include <map>#include &...原创 2019-08-01 21:08:15 · 148 阅读 · 0 评论 -
POJ-1811(Miller Rabin素性测试+Pollard_rho分解质因数)
题意:给出一个数N(2 <= N < 254),判断N是否是素数,如果是素数,直接输出"Prime",反之,输出N的最小质因数。//先粘一下正解,等等再完善#include <iostream>#include <ctime>#include <algorithm>#define LL long longconst int S=2...原创 2019-08-01 23:18:19 · 213 阅读 · 0 评论 -
LightOJ-1140(数位DP)
题意:求n~m之间数字里共有多少个0/****/#include <cstdio>#include <stack>#include <algorithm>#include <cstring>#include <cmath>#include <iostream>#include <map>#...原创 2019-08-08 16:24:02 · 198 阅读 · 0 评论 -
CCPC网络赛-补
1002 arrayarrayTime Limit: 4000/2000 MS (Java/Others)Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 1382Accepted Submission(s): 534Problem DescriptionYou are given a...原创 2019-08-26 20:40:07 · 135 阅读 · 0 评论 -
数论基本定理典型例题
1.HDU-2973(威尔逊定理)The math department has been having problems lately. Due to immense amount of unsolicited automated programs which were crawling across their pages, they decided to put Yet-Anoth...原创 2019-09-03 19:16:26 · 715 阅读 · 0 评论 -
高斯消元总结
什么是高斯消元高斯消元是用于解形如的线性方程组的。我们可以将系数存在系数和常数保存在增广矩阵中,通过行变换列变换求解。高斯消元的思想是,将方程组中一方程中的未知数用含有另一未知数的方程表示,代入原方程,即可消去原方程的一个未知数。可以看出,高斯消元的时间复杂度是O(n^3)的。我们来看一个例子:求解线性方程组首先,要将L1以下的等式中的x消除,然后再将L2以下的等式中的y...原创 2019-09-10 16:28:10 · 878 阅读 · 0 评论 -
数论代码补充
1.素数的检验(试除法)bool is_prime(int x){ for(int i = 2; i<=sqrt(n); i++) { if(x%i == 0) return false; } return true;}2.素数的筛选Eratothenes筛法int vis[maxn];void...原创 2019-07-15 23:40:21 · 486 阅读 · 0 评论 -
HDU - 1542 求矩形面积并(线段树+离散化+扫描线)
There are several ancient Greek texts that contain descriptions of the fabled island Atlantis. Some of these texts even include maps of parts of the island. But unfortunately, these maps describe dif...原创 2019-05-17 00:45:37 · 330 阅读 · 0 评论 -
扩展欧几里得 求逆元 组合数
ll exgcd(ll a,ll b,ll &x,ll &y){ if(b==0) { x=1,y=0; return a; } ll res=exgcd(b,a%b,y,x); y-=a/b*x; return res;}ll Inv(ll a){ ll d,x,y; d=...转载 2019-04-28 13:51:21 · 196 阅读 · 0 评论 -
简单最短路径问题及模板
本文主要介绍用Floyd和dijkstra算法解决简单最短路径问题。Floyd算法1.复杂度:O(n3)2.适用范围:数据范围小的情况下可用于计算所有点间的最短路,且可以解决带有负权边的图,但不能用于解决负权环(带有负权边的回路)问题。3.思想:中转。比较 点i和点j间的现有最短路径 与 点i通过点k中转到达点k的路径 的大小,从而更新最短路。注意在三层for循环中,中转点k的fo...原创 2018-07-29 12:07:32 · 471 阅读 · 0 评论 -
prim算法和并查集算法解决简单最小生成树问题
什么是最小生成树在图{V,E}中,使用E中的边将V中所有的点联通,使其成为树,要求树中边权之和最小,这就是最小生成树。prim算法1.复杂度:O(n2)2.适用范围:与dijkstra算法类似,不能处理负权边3.思想:与dijkstra算法类似,松弛。找到距离源点(这里的源点任意)最近的点,如此循环。4.代码实现:int mp[maxn][maxn],in[maxn]...原创 2018-07-29 12:46:58 · 561 阅读 · 0 评论 -
匈牙利算法和KM算法解决二分图匹配问题
参考博文:https://www.cnblogs.com/logosG/p/logos.html https://www.cnblogs.com/wenruo/p/5264235.html匈牙利算法1.复杂度:O(n2)2.适用范围:增广路径求最大匹配,无权图3.思想:dfs进行匹配,如果匹配冲突,则检查能否改变冲突顶点的配对4.代码实现:dfs代码模板:int ...原创 2018-07-29 15:18:32 · 515 阅读 · 0 评论 -
几种博弈问题及算法
巴什博弈巴什博弈是最基础的博弈游戏。有一堆石子,共计n颗,规定二人每次拿1~m颗石头,先拿完者胜,求解先手是否能赢。算法思想非常好考虑:因为每次最多拿m颗石头,所以当n是m+1的倍数时,first无论拿多少颗,second只要在first之后拿能够凑够m+1颗石子就能胜利,所以first必败。如果n不是m+1的倍数,假设n = (m+1)*s + r(1 <= r...原创 2018-08-14 22:00:30 · 9635 阅读 · 0 评论 -
HDU-1847(裸SG)
1、总共n张牌;2、双方轮流抓牌;3、每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…)4、抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;假设Kiki和Cici都是足够聪明(其实不用假设,哪有不聪明的学生~),并且每次都是Kiki先抓牌,请问谁能赢呢?#include <cstdio>#include <algorithm>#...原创 2018-08-14 22:35:36 · 470 阅读 · 0 评论 -
Gym 100814A Arcade Game (STL排列组合+二项式定理)
Gym 100814A题意:给定数字n(1 ≤ n ≤ 1e9),n由0,1,2,3,4,5,6,7,8,9组成,第一位不为0且无重复数字。每一步都可以由当前的数字跳转到由n中数字全排列构成的数字,当跳转到比n小的数字时,游戏结束,当跳转到全排列后最大的数字,游戏胜利。问:有多大的概率可以胜利。解:假设给定数字为num,通过%、/操作可以取出num中的每一位数字,假设num有n...原创 2018-08-18 21:39:03 · 277 阅读 · 0 评论 -
洛谷P1190 接水问题
水一波。题目描述学校里有一个水房,水房里一共装有 mm 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为 11 。现在有 nn 名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从 11 到 nn 编号, ii 号同学的接水量为 w_iwi 。接水开始时, 11 到 mm 号同学各占一个水龙头,并同时打开水龙头接水。当其中某名同学 jj完成其接水量要求 w_j...原创 2018-08-23 22:32:31 · 208 阅读 · 0 评论 -
快速幂算法
对于a^n,使用迭代算法的复杂度为O(n),而且cmath的函数库中,pow(a,b)的返回值是int型,稍不注意就会丢失精度。而快速幂的算法的复杂度则是O(logn)的,原理也很简单,惊了,nice兄dei!我们知道,任何一个数都可以拆成2的n次幂的和的形式,如,那么,对于任意一个数非负数n,,我们可以利用一个中间变量base,不停对base进行乘方运算,从而得到n,n^2,n^4等形如...原创 2018-08-29 21:09:21 · 159 阅读 · 0 评论 -
KMP算法
转自队友wwg博客:KMP算法部分参考于大佬的博客:https://blog.csdn.net/starstar1992/article/details/54913261/从头到尾彻底理解KMP:https://blog.csdn.net/v_july_v/article/details/7041827一:单模字符串匹配问题与BF算法O(n*m):(一)单模字符串匹配问题 ...原创 2018-09-03 22:22:41 · 266 阅读 · 0 评论 -
[Gym-102072A] 矩阵快速幂模板+计算斐波那契数列
题目链接:【深蓝】教科书般的亵渎"现在给大家展示一波教科书般的亵渎" "扭了扭了"炉石传说是一款比较火的卡牌游戏,不同的卡牌间可以打出许多不可思议的配合。炉石传说的战斗大部分由随从来完成。每个随从都有血量。当随从血量为0时,随从就会死亡。"恐怖的奴隶主"是一个有3血的随从。他的特效是:每当该随从收到伤害且没有死亡时,召唤一个恐怖的奴隶主。也就是说,一个3血或2血的奴隶主,受到1点...原创 2019-04-01 15:52:46 · 343 阅读 · 0 评论 -
POJ - 3904 容斥原理
题目链接Stancu likes space travels but he is a poor software developer and will never be able to buy his own spacecraft. That is why he is preparing to steal the spacecraft of Petru. There is only one ...原创 2019-04-01 18:09:56 · 145 阅读 · 0 评论 -
POJ - 2478 Eratosthenes筛法/线性筛求欧拉函数
题目链接:POJ-2478The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b with 0 < a < b <= n and gcd(a,b) = 1 arranged in increasing order. The fi...原创 2019-04-11 14:18:54 · 212 阅读 · 0 评论 -
POJ-1091 扩展欧几里得+容斥原理
Z城市居住着很多只跳蚤。在Z城市周六生活频道有一个娱乐节目。一只跳蚤将被请上一个高空钢丝的正中央。钢丝很长,可以看作是无限长。节目主持人会给该跳蚤发一张卡片。卡片上写有N+1个自然数。其中最后一个是M,而前N个数都不超过M,卡片上允许有相同的数字。跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向右跳S个单位长度。而他最终的任务是跳到距离他左边一个单位长度的地方,并捡起位于那里的礼物。...原创 2019-04-08 16:42:27 · 112 阅读 · 0 评论 -
第十三届NENUACM校赛正式赛总结
目录ABCDEFGHI这次比赛主要是心态稳定,一直坚持不懈地想把题A掉,运气好就好在有很多思维题,我出的题没有用到高级点的算法。一个点在于自己潜心研究了一点组合数学,其实并没有比以前强只是有思考问题的自信了。这是我参加的第一次校赛也是最后一次校赛,感谢出题的聚聚手下留情让我水了一波一等,学长们为了降低难度也是操碎了心。AA-拆魔方达人...原创 2019-04-15 16:45:10 · 474 阅读 · 0 评论 -
NENU校赛热身赛补-C
Huge 非常喜欢收集数学问题。有一道题是这样的,给定正整数aa,bb并且aa与bb互质且满足a < ba<b。在所有小于b的自然数构成的集合AA= {1,2,3,… ,bb- 1}中,称(c , d), c, d \in A(c,d),c,d∈A中,为一个有序数对简称序偶。huge想知道cc和dd相乘后模bb等于aa的序偶有多少对。Input总共有T(T \l...原创 2019-04-13 21:02:10 · 174 阅读 · 0 评论 -
LightOJ 1282-求n^k的前三位和后三位
You are given two integers:nandk, your task is to find the most significant three digits, and least significant three digits ofnk.InputInput starts with an integerT (≤ 1000), denoting the nu...原创 2019-04-22 17:32:17 · 193 阅读 · 0 评论 -
2019 ICPC上海网络赛-F. Rhyme scheme
F.Rhyme schemeRhyme scheme问答问题反馈编辑代码31.21% 1000ms 65536KA rhyme scheme is the pattern of rhymes at the end of each line of a poem or song. It is usually referred to by using letters to...原创 2019-09-16 14:10:50 · 336 阅读 · 0 评论