algorithms
cyBlogs
cy的个人博客
展开
-
割顶与桥
本来每个节点访问且访问一次的,为什么在dfs里用sum统计会有问题呢?只有一种可能,那就是sum会重复统计,可,这是为什么呢这是因为u可以有v1,v2,v3,…,vn,多个儿子,如果v1已经不能在不通过u的情况下回到v1的非父祖先节点,而v2的情况和v1一样,那就会照成sum重复统计,所以这里要注意一下void dfs(int u,int fa) { dfn[u] = low[u]...原创 2018-10-05 13:59:53 · 174 阅读 · 0 评论 -
矩阵快速幂与同余定理
原创 2018-10-06 16:27:11 · 1076 阅读 · 0 评论 -
堆排序
首先我们有一个数组arr,他的里面有一些元素,如果要我们找到这里面的最小值,我们是不是要去扫描一遍这个数组?如果这个时候他要求我们去找一个次小值,或者删除这个数且加一个数进来问你最小值,那我们是不是得又扫描一遍,这样重复n次就扫描了n次也就是0[n]的效率,n一大就gg,那这个时候怎么办呢?堆出现了。堆是一个完全二叉树,所有顶点的左子树和右子树都比他本身要小,这就叫最大堆(大根堆)因为这样一...原创 2018-10-06 15:32:09 · 1062 阅读 · 1 评论 -
最短路之Dijkstra
原创 2018-10-06 16:27:34 · 178 阅读 · 0 评论 -
一张图带你理解栈走迷宫
每一个栈就保留了一种状态原创 2018-10-06 16:29:21 · 404 阅读 · 0 评论 -
二分图最大匹配
应该会持续更新网络流的总结匈牙利算法的生活解释核心算法严谨的学术性解释洛谷二分图最大匹配的模板题中的一些问题匈牙利算法的生活解释有人说它挺暴力的,确实是挺暴力的这里借用啊哈算法里的一段话,我想没有比这讲的更好动了的1号认识2’号,所以向2’号"主子"2号发送调换请求,2号调换到3’号,这就代表调换成功啦,于是1号便和它询问的对象在一起了,3号也和他询问的对象在一起了核心算法n=左边...原创 2018-10-06 17:09:46 · 666 阅读 · 0 评论 -
最小生成树
Kruskal算法它把每条边排序,然后依次选取权值最小的边,当然,这个边必须能够带来一个新的顶点,如何判断是新顶点还是老顶点呢?很简单,用并查集把已选取的点放在一个集合里,未选取的点各自为营,选边的时候只需要判断一下,f[pre(e[i].u)]==f[pre[e[i].v]] (第一条边一定在集合里)因为只有两种集合,一种是被选中的,另一种没有这思想算是一种贪心吧!prim算法它像Dij...原创 2018-10-06 19:25:18 · 128 阅读 · 0 评论 -
啊哈算法之水管工游戏
先给不同状态的水管编给号吧跟走迷宫一样的,深搜,每个dfs里遍历水管的状态,如果当前状态和水管指向的下一个状态能连通就深搜过去直到走到终点为止上代码吧,这个代码是加强版,支持了更多的水管的编号,已经出口,入口和出发点是由用户输入的,以后可以用python做7k7k的水管工游戏辅助哈哈游戏地址#include <stdio.h>#include <stdlib.h...原创 2018-10-07 15:15:41 · 1205 阅读 · 0 评论 -
对拍程序的写法
学习至https://blog.csdn.net/code12hour/article/details/51252457:againdata > input.txta < input.txt > a_out.txtb < input.txt > b_out.txtfc a_out.txt b_out.txtif not errorlevel 1 goto ...原创 2018-11-08 12:10:46 · 245 阅读 · 0 评论 -
动态规划(持续更新中)
原创 2018-10-06 16:26:59 · 145 阅读 · 0 评论 -
最短路之Bellman-Ford与它的队列优化中的几个问题
原创 2018-10-06 16:28:28 · 179 阅读 · 0 评论 -
最短路之Floyd-Warshall
原创 2018-10-06 16:29:00 · 138 阅读 · 0 评论 -
记录一个洛谷评测机上的问题
下面这个代码是给普通spfa,我本想用它来测试spfa面对高压数据下的表现,但是让人困惑的是洛谷的评测机给出了WA的评分,这让我以为是算法哪里除了问题,检查半天没检查出来,发到群里,有人指出这是手写队列导致溢出,这一点我一开始是想到了的,我没想到溢出导致了WA,这里记录一下,以后记得溢出也会WA#include <stdio.h>#include <stdlib.h>...原创 2018-10-05 14:05:06 · 1161 阅读 · 0 评论 -
SPFA的两种优化
转自:https://blog.csdn.net/oranges_c/article/details/64124235这个博客写的比较清楚SPFA算法有两个优化算法 SLF 和 LLL:SLF:Small Label First 策略,设要加入的节点是j,队首元素为i,若dist(j) < dist(i),则将j插入队首,否则插入队尾。LLL:Large Label Last 策略,...转载 2018-10-05 14:13:03 · 340 阅读 · 0 评论 -
把最长公共子序列LCS问题转化为最长上升子序列LIS问题
先看题目题目描述给出1-n的两个排列P1和P2,求它们的最长公共子序列。输入输出格式输入格式:第一行是一个数n,接下来两行,每行为n个数,为自然数1-n的一个排列。输出格式:一个数,即最长公共子序列的长度输入输出样例输入样例#1:53 2 1 4 51 2 3 4 5输出样例#1:3再看看是如何转换的因为两个序列内容一样只是元素位置不一样,所以可以把序列A的元素在...原创 2018-10-05 14:53:19 · 2600 阅读 · 0 评论 -
洛谷P1567 统计天数题解
题目地址这是一个最长上升子串(注意不是子序列)的问题从头到尾扫一遍,设循环控制变量为ifor i in [2,n]: if(arr[i-1]<arr[i]): max0=max(++sum,max0); else: sum=1;#include <stdio.h>int main(){ int maxDay=0,pre,today,n,sum=1; ...原创 2018-10-05 15:03:07 · 718 阅读 · 0 评论 -
洛谷 P2141 【珠心算测验】题解
说一下基本思路,因为是互异的集合,所以把这个集合升序排序之后,对于任一在集合中的元素Xi,能比它小的数一定在它的左边,那么我们可以从它左邻域,先择一个元素,再从这个有序集头部找一个元素,使得它们相加为Xi仅使用:线性表,基本快速排序,二分查找//by:yyfai#include <stdio.h>#define MAX 100int arr[MAX + 1];void s...原创 2018-10-05 15:04:47 · 852 阅读 · 0 评论 -
并查集
输入输出格式先来一段不严谨的描述,这是看了啊哈算法之后的回忆比如说现在有一些贼(1号,2号,3,号,…,n号)他们之间又如下关系1 3(1号和3号一伙)2 42 3…让你求出一共有几个独立的团伙我们可以这样,每得到一条边(u,v),我们就把u所在的集合与v所在的集合合并,当然可以写程序模拟这个过程,使用动态分配的数组这并不难,但是现在有更好的做法:搞一个数组,下标是贼,值是下标...原创 2018-10-06 16:29:42 · 687 阅读 · 0 评论 -
[贪心][题目][洛谷]P1181_数列分段Section_I
这个虽然不知道怎么证明,但是觉得从头到尾数一遍是可以完成这个动作的ac代码策略也是比较简单,从前往后数,在不超过M的情况下能数多少算多少,这样数出来的数作为一个分段我想不出来这样一种情况,那就是在从前往后数完一次之后会导致错误发生的情况,这个找不到矛盾,可以让人更确信这个猜想,但如何证明呢?#include <iostream>#include <cstdio>...原创 2018-11-21 23:01:20 · 199 阅读 · 0 评论