• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
KasenBob
博客园 | 首页 | 新随笔 | 新文章 | 联系 | 订阅 订阅 | 管理

随笔分类 -  算法

1 2 下一页

 
KM算法
摘要:匈牙利算的是无权边二分图,而KM算法算的是有权边二分图 参考博客:https://blog.csdn.net/chenshibo17/article/details/79933191 模板代码: 阅读全文
posted @ 2019-09-17 20:38 KasenBob 阅读(315) 评论(0) 推荐(0)
匈牙利算法
摘要:参考博客: https://blog.csdn.net/sunny_hun/article/details/80627351 模板: 阅读全文
posted @ 2019-09-05 21:02 KasenBob 阅读(210) 评论(0) 推荐(0)
拓扑排序
摘要:参考博客: https://www.cnblogs.com/tonghao/p/4721072.html 模板代码: 使用邻接矩阵存储边 阅读全文
posted @ 2019-09-04 16:29 KasenBob 阅读(156) 评论(0) 推荐(0)
最小生成树(kruskal+prime)
摘要:kruskal模板: prim算法模板 阅读全文
posted @ 2019-09-02 20:27 KasenBob 阅读(178) 评论(0) 推荐(0)
spfa算法
摘要:作为能够判断负权边的算法,效率比Bellman-Ford要高,比较实用 参考博客:http://keyblog.cn/article-21.html https://blog.csdn.net/sxy201658506207/article/details/78779045 使用邻接矩阵 使用深搜进 阅读全文
posted @ 2019-08-31 13:47 KasenBob 阅读(283) 评论(0) 推荐(0)
广搜+深搜(搜索最短路径+最短步数)
摘要:#include #include #include #include #include using namespace std; const int maxn=10; struct P { int x,y; }point[maxn]; struct PP { int fx,fy; }path[maxn][maxn]; int num[maxn][maxn... 阅读全文
posted @ 2019-03-29 22:03 KasenBob 阅读(527) 评论(0) 推荐(0)
输出欧拉路径(并查集+佛罗来算法)
摘要:#include using namespace std; const int maxn=100; stacks;/*输出欧拉回路*/ vectorway[maxn];/*记录与每个点相连接的点*/ int edge[maxn][maxn];/*记录两点是否联通*/ int in[maxn];/*记录每个度的入度*/ int fa[maxn];/*用做并查集查询图是否联通*/ int n,m; ... 阅读全文
posted @ 2019-03-01 20:13 KasenBob 阅读(383) 评论(0) 推荐(0)
LIS(最大上升子序列)
摘要:代码实现如下: 可进行优化,优化后代码为: 阅读全文
posted @ 2019-02-28 13:41 KasenBob 阅读(289) 评论(0) 推荐(0)
背包问题
摘要:一、01背包 问题描述: 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 解答: 状态转移方程:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]} 即将问题分解为“将前i件物品放入容量为v的背包中 阅读全文
posted @ 2019-02-27 19:29 KasenBob 阅读(150) 评论(0) 推荐(0)
归并排序求逆序对
摘要:#include void Merge(int ,int ,int ); void mergeSort(int ,int ); int ch[20000],temp[20000]; int count = 0; void mergeSort(int lo,int hi) { if(lo ch[j]) { count+= mid - i ... 阅读全文
posted @ 2019-02-25 23:04 KasenBob 阅读(143) 评论(0) 推荐(0)
博弈论
摘要:一、巴什博弈 假设要报 n 个数,每次最少报一个,最多报 m 个,可得状态式: 若 r =0.先手必败,否则先手必胜 二、威佐夫博弈 有两堆若干物品,两个人轮流以其中取至少一件物品,至多不限,或从两堆中取相同件物品,最后取完者胜,可得: 设两堆初始为 x, y,且 x <y.则令 z = y-x,记 阅读全文
posted @ 2019-02-01 21:37 KasenBob 阅读(283) 评论(0) 推荐(0)
线段树
摘要:#define maxn 100007 //元素总个数 #define ls l,m,rt>1; //左右递归 Build(l,m,rt>1; //根据条件判断往左子树调用还是往右 if(L >1; PushDown(rt,m-l+1,r-m);//下推标记 //这里判断左右子树跟[L,R]有无交集,有交集才递归 ... 阅读全文
posted @ 2019-01-17 16:28 KasenBob 阅读(177) 评论(0) 推荐(0)
Dijkstra算法
摘要:相比于Floyd算法的复杂度,Dijkstra算法的时间复杂度要低很多 同样用邻接矩阵来存储边,用一个一维数组更新起点到其他点的距离,代码如下: 阅读全文
posted @ 2019-01-16 00:31 KasenBob 阅读(154) 评论(0) 推荐(0)
最短路径Floyed算法
摘要:使用有向图的邻接矩阵的概念,代码如下: 这是只过一个中继点的情况(应该是吧。。。),对其进行优化后发现可以进行动态规划,代码如下: 抽象理解就是先算u,v只经过第1个点的最短路径,然后在此基础上再算过第1,2个点的最短路径,动态方程为a[i][j]=min(a[i][j],a[i][k]+a[k][ 阅读全文
posted @ 2019-01-15 23:32 KasenBob 阅读(323) 评论(0) 推荐(0)
克鲁斯卡尔算法(最小生成树)
摘要:将图中的边按权值大小从小到大排序后,若有n个顶点则选前n-1条边,用并查集的思想进行连通后得到的树即为最小生成树,代码如下: 阅读全文
posted @ 2019-01-14 16:30 KasenBob 阅读(690) 评论(0) 推荐(0)
并查集
摘要:并查集是一种经常用于判断图中是否有环的算法,重点是将连通的分支用树的形式来表示,代码如下: 阅读全文
posted @ 2019-01-14 14:11 KasenBob 阅读(148) 评论(0) 推荐(0)
手动开根
摘要:这道题让我深深的感到我tm数学到底有多差。。。 做题解前先看一下什么叫手动开根: https://jingyan.baidu.com/article/4f7d5712f663371a20192797.html 这是手动开根的c++代码实现: 阅读全文
posted @ 2018-11-30 19:26 KasenBob 阅读(536) 评论(0) 推荐(0)
卢卡斯定理
摘要:(说实话推断过程不是我这种弱鸡能看懂的,直接上结论。。。) 卢卡斯定理: C(n, m) % p = (C(n/p, m/p) % p) * (C(n%p, m%p) % p) % p 阅读全文
posted @ 2018-11-30 09:00 KasenBob 阅读(171) 评论(0) 推荐(0)
同余与模算术
摘要:以下三条常用式子: (a+b)modn=((amodn)+(bmodn))modn (a-b)modn=((amodn)-(bmodn)+n)modn abmodn=(amodn)(bmodn)modn 大整数取模: 幂取模: 阅读全文
posted @ 2018-11-26 22:25 KasenBob 阅读(221) 评论(0) 推荐(0)
扩展欧几里得算法
摘要:当需找出一对整数(x,y)使得ax+by=gdc(a,b)时,可使用扩展欧几里得算法; 注意,a需大于b,当a<0时需|a|x+by=gdc(|a|,b) 若方程ax+by=c的一组整数解为(x,y),则它的任意整数解都可以写成(x+kb,x+ka),其中a=a/gcd(a,b),b=b/gcd(a 阅读全文
posted @ 2018-11-26 19:53 KasenBob 阅读(151) 评论(0) 推荐(0)
 

1 2 下一页

公告


博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3