![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
算法
霞鹜
这个作者很懒,什么都没留下…
展开
-
入门筛素数
#include<iostream>//筛某范围的素数using namespace std;int main(){ int n; cin >> n; for (int i = 0; i < n; i++) { if (i <= 2) { continue; } else { int flag = 1; for (int j = 2; j*j <= i; j++) { if (i%j == 0) { fla原创 2021-06-04 16:57:03 · 107 阅读 · 0 评论 -
广度优先搜索入门——走迷宫
给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,1) 处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角 (n,m) 处,至少需要移动多少次。数据保证 (1,1) 处和 (n,m) 处的数字为 0,且一定至少存在一条通路。输入格式第一行包含两个整数 n 和 m。接下来 n 行,每行包含 m 个整数(0 或 1),表示完整的二维数组迷宫。输出格原创 2021-05-27 11:31:29 · 241 阅读 · 0 评论 -
深度优先搜索入门——排列数组
给定一个整数 n,将数字 1∼n 排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数 n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤7输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1深度优先搜索的基础题目,一条路走到底,在进行单一路径逐步加深的时候,没加深一层就要加一层dfs,不断递归。我的错误代码#include<iostream>using n原创 2021-04-09 20:40:53 · 175 阅读 · 0 评论 -
小数二分
先上模板double l,double r,double mid;while(fabs(r-l)<eps){ if(check(mid))r=mid; else l=mid;}//还是将l或r作为结果。小数二分一般就是精度容易出问题。先来第一个:电缆大师Inhabitants of the Wonderland have decided to hold a regional programming contest. The Judging Committee has volunte原创 2021-02-28 17:11:22 · 324 阅读 · 0 评论 -
前缀和和差分
前缀和和差分是两种预处理方法。都需要新建一个数组#include<iostream>using namespace std;int main(){ int a[100] = { 0 }; int b[100] = { 0 }; int c[100] = { 0 }; //前缀和 for (int i = 1; i <= 100; i++) { cin >> a[i]; b[i] = a[i] + b[i - 1]; } //差分 for (i原创 2021-02-28 15:56:41 · 119 阅读 · 0 评论 -
快速排序
#include<iostream>using namespace std;void quick_sort(int q[], int l, int r){ if (l >= r)//标志着排序结束 return; int i = l - 1, j = r + 1, x = q[l + r >> 1];//因为最开始有i++和j--,所以要写成-1,+1形势 while (i < j)//指针重合,则排序结束 { do i++; while (q[i]原创 2021-02-28 15:15:51 · 92 阅读 · 0 评论 -
二分查找
二分法常见有两个模板:这个是划分区间为[l,mid]和[mid+1,r]两个部分。int bsearch_1(int l, int r){ while (l < r) { int mid = (l + r) / 2; if (check(mid)) r = mid; else l = mid + 1; } return l;}这个模板再对取mid时用直接除二,这就会出现1,4的mid值为2。——————原创 2021-01-25 15:13:26 · 110 阅读 · 0 评论 -
简单并查集
这里将介绍简单并查集。例题部分是程序自动分析。并查集是一种通过建立父节点和子节点的关系,来确立两者是否有联系。a和b有关系,b和c有关系,a和d有关系,那么我想查找c和d的关系,就要用到并查集。接下来给出一道例题,程序自动分析:Description在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当原创 2021-01-10 14:37:08 · 120 阅读 · 0 评论 -
二分法最终判断
先放两个代码:while(l<r) { mid=(l+r)/2; if(check(mid)) r=mid; else l=mid+1; } if(3*mid*mid+3*mid+1==m) printf("YES\n"); else printf("NO\n")while(l<r) { mid=(l+r)/2; if(check(mid)) r=mid; else l=mid+1; }原创 2021-01-05 10:36:35 · 223 阅读 · 0 评论 -
stl二分函数
菜鸟笔记1第一次使用stl中的函数。很不幸题目没法复制粘贴,简述题目如下:输入n个整数,进行m次查找(就是查找程序运行m遍)每次查找找一个数。题目如下:输入样例:第一行 2 个整数 n 和 m,表示数字个数和询问次数。第二行 n 个整数,表示这些待查询的数字。第三行 m 个整数,表示询问这些数字的编号,从 1 开始编号。eg:输入11 31 3 3 3 5 7 9 11 13 15 151 3 6输出1 2 -1#include<cstdio>//及时复习,有关st原创 2020-11-29 00:09:24 · 421 阅读 · 0 评论