算法学习记录
分类专栏简介不能为空 ?
竒仔
这个作者很懒,什么都没留下…
展开
-
洛谷 康托展开 部分题目
目录P2524 Uim的情人节礼物·其之弐P5367 【模板】康托展开P3014 [USACO11FEB]Cow Line SP2524 Uim的情人节礼物·其之弐P2524 Uim的情人节礼物·其之弐述题目描述前传:详见洛谷P2525Uim成功地按照顺序将礼物送到了N个妹子的手里并维持她们的和谐。Uim现在想知道,他最终选择的顺序是所有给N个妹子送礼顺序中、字典序第几小的。输入格式第一行一个整数N,表示有N个数。第二行一个整数X,表示给出的排列。输出格式一个整数,表示是第几小的字典序原创 2020-12-02 00:07:49 · 357 阅读 · 0 评论 -
洛谷 并查集 or 生成树入门题集
文章目录P3367 【模板】并查集P3366 【模板】最小生成树P1551 亲戚P1195 口袋的天空P2330 [SCOI2005]繁忙的都市P1396 营救P1547 [USACO05MAR]Out of Hay SP1111 修复公路P1546 [USACO3.1]最短网络 Agri-NetP1536 村村通P2820 局域网P3367 【模板】并查集P3367 【模板】并查集#include<iostream>#define N 10005int bb[N];using na原创 2020-11-30 15:40:16 · 412 阅读 · 0 评论 -
二进制枚举题集 入门篇 第一弹
星期七补星期一的课,所以今天是星期八,上次说过星期八写博客,今天就来了。二进制枚举是比较偏的算法,知道的人不多。其底层原理就是通过二进制中的1和0代表每种物品选与不选的情况。如果需要选取的物品为20, 则它所以可能的情况为2的20次方,即1 048 576,所以二进制枚举只能用来处理数据量较小的题目,尽管比较局限,但是它处理这类题目的程序相较于搜索是比较容易写出的,而且也很好理解。文章目录例题...原创 2020-04-26 23:51:18 · 547 阅读 · 1 评论 -
各种迷迷迷宫问题 深搜dfs和广搜bfs做法
三分钟热度又回来了谈到迷宫问题就得提到解决迷宫问题的常见做法,bfs和dfs在处理迷宫问题时,dfs一般用来解决能不能的问题,即从x点能否到达y点,而bfs一般用来解决最少需求的问题,即从x点走到y点最少需要多少步。当然,很多情况下,用bfs和dfs都能解决上述两个问题,就看哪种方法效率高或者说你乐意用哪种方法。成天想什么呢,效率最重要bfs:定义一个队列;起始点加入队列;while(...原创 2020-04-18 20:29:53 · 1399 阅读 · 3 评论 -
二分查找 (模板+例题)
板子int BinarySearch(int a[], int size, int num) {//参数分别为:数组,数组元素的个数,待查找的元素 int left = 1; right = size, mid; while(left <= right) { mid = left + (right-left) / 2; if(num==a[mid]) return...原创 2020-02-19 16:21:07 · 905 阅读 · 0 评论 -
深度优先搜索 模板+例题
dfs板子bool check(参数) { if(满足条件) return ture; return false;}void dfs(int step) { if(到达边界){ 输出或其他相关操作 //根据题意添加 return ; } if(越界 / 不合法的状态) return;for() { if(满足check) { 修改...原创 2020-01-13 22:22:23 · 886 阅读 · 0 评论 -
并查集
并查集简单学第一次记录(感谢前辈指导)递归查找void find(int x) { if(bb[x] == x) return x; return bb[x] = find(bb[x]);}循环查找void find(int x) { while(x != bb[x]) { x = bb[x] ==bb[bb[x]]; }} 合并两子集void me...原创 2020-01-12 20:15:28 · 120 阅读 · 0 评论