自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 2022.2.17

prim算法:和Dijkstra算法的实现有些类似 【1】从起点开始往后找和这个点连接的权值最小的点,连到树上 【2】重复第一步 例题: 最小生成树: #include<bits/stdc++.h> using namespace std; #define inf 0x3f3f3f3f int Map[505][505]; int vis[505]; int dist[505]; int n,m; void init() { for(int i=1;i<=n;i++

2022-02-17 19:50:04 255

原创 2022.2.16

重新看了下最小生成树 kruskal算法 【1】先将图中带权的(两点)全部得到(放在结构体中) 【2】然后按权值大小排序(从小到大) 【3】将点与点连成边(用并查集判断是否有环) 最小生成树(模板题) 思路:和上面一样 #include<bits/stdc++.h> using namespace std; struct edge { int x; int y; int z; } edge[200010]; int father[5010]; int

2022-02-17 09:42:24 178

原创 2022.2.13

上午: 看书; 看网课; 炸铁路; (一看到题目就想到前面学的并查集)但是没做出来 下午: 学长讲课; Dijkstra算法(重点) 模板: #include<bits/stdc++.h> using namespace std; const int N=105; const int inf=1e9+5; int n,m,s,e; int mp[N][N]; //当前距离数组 int low[N]; int vis[N]; //初始化 void init() { fo

2022-02-13 22:52:49 344

原创 2022.2.12

上午: 练字; 教妹妹做作业 (试卷) 下午: 看书(求最短路径的做法) 看网课 做题:租用潜艇(还没做出来)

2022-02-12 09:17:39 344

原创 2022.2.10

上午: P2957[USACO09OCT]Barn Echoes G 这个题的数据需求比较小,暴力也能出来 直接循环找到两个相等的部分,记录长度,不断更新 #include<bits/stdc++.h> using namespace std; int main() { int result=0,max=0; int k,l; char a[100],b[100]; cin>>a+1>>b+1; int la=strlen

2022-02-10 22:15:48 537

原创 2022.2.9

上午: AB数对 这个题很容易下想到暴力(70%) //暴力会有两点超时 #include<stdio.h> int ans; int main() { int a[200001],b[200001]; int A,B; int n,c; scanf("%d %d",&n,&c); //输入一串数 for(int i=1;i<=n;i++) { scanf("%d",&a[i]);

2022-02-09 21:50:25 530

原创 2022.2.8

上午: 学习KMP算法 看网课 下午: P3375 【模板】KMP字符串匹配 (因为是输入字符所以用了cin>>来输入) 思路: 得到前缀表,输出(即最后一排的数字) 利用前缀表来判断下一步要和谁比对 #include<bits/stdc++.h> using namespace std; int prefix[1000001]; int lens1,lens2; char s1[1000001],s2[1000001]; void get_next() {

2022-02-08 18:57:00 319

原创 2022.1.24

上午: 补题: Beautiful Array 我这里为了方便处理字符就用了cin>> /* 思路: 这其实就是括号匹配 就把"("压入栈中,遇到右边第一个")"时出栈 就可以找到最多的分出来的次数 然后和输入的次数作比较 最多的次数大于输入的就是可行1 否则0 */ #include<bits/stdc++.h> using namespace std; char str[10000]; int top,num; char Q[10000]; char pop() {

2022-01-24 22:34:35 270

原创 2022.1.23

上午: 校门外的树 思路:就几个循环就出来了 #include<stdio.h> int main() { int tree[10000]; int l,m; scanf("%d %d",&l,&m); for(int i=0;i<=l;i++) { tree[i]=1; } for(int i=0;i<m;i++) { int u,v; scanf

2022-01-23 22:11:31 4463

原创 2022.1.21

昨晚: 并查集模板 (就是将输入的点合并,再查找) /* 这个题就像它的名字所说,模板 */ #include<stdio.h> int find_root(int x,int *parent) { if(parent[x]==x) return x; else { return(parent[x]=find_root(parent[x],parent)); } } void combine(int x,int y,int

2022-01-21 21:43:31 328

原创 2021.1.20

上午: 并查集网课(正月点灯笼) 下面是例题: //并查集找环 /* 题解: 【1】用一个parent[];产生联系 【2】将点与点合并时,分别找到两点的根节点合并 【3】如果两个点的根节点相同就说明,这里有一个环 (优化)【4】将根连在一起时可以加一个判断高度的, 将矮的加到高的上,这样最大的高度不会变 */ #include<stdio.h> //将数组全部赋值为; void initialise(int *parent,int *rank) { for(int i=0;i&

2022-01-20 20:33:27 817

原创 2022.1.19

上午: 层序遍历(我和其它的遍历方法放一起了): //根据前序遍历建树 #include<stdio.h> #include<stdlib.h> //数据,左孩子指针,右孩子指针 typedef struct bitnode { char data; struct bitnode *lchild,*rchild; } bitnode,*bitree; //即bitree表示一个地址 bitree Q[10000]; int back=0,front=0; voi

2022-01-19 22:03:38 260

原创 2022.1.18

上午: 补题: 成年的Bob (开始错的,重新打了一遍对了,然后就开始找哪错了,最终发现是那个NO里的O错了) /* 注意: 输入时带点 输出的大小写 注意对闰年二月的处理 */ #include<stdio.h> int dd,mm,yy; int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int judge(int bd,int bm,int by) { //printf("%d %d %d\n",bd,bm,by

2022-01-19 07:49:22 623

原创 2022.1.17

上午: 快排: PS:问题:倒序和数组元素完全相等 (这题,额,= =!)集齐20%、40%、60%、80%召唤100% AC 80% 思路: [1]快排在数组是有序的时候时间复杂度会变成O(n^2) [2]所以在数组有序时,将其变为无序就行了 [3]下面是将最左边,即第一个和中间值交换,这样又重新被分为了两块 [4]再以被交换到第一个为基准点(此时为中间值了) [5]传统快排 [6]再将中间值到还要继续交换的地方 #include<stdio.h> int num[200000

2022-01-17 22:03:04 373

原创 2022.1.16

上午: 拯救总部: 问题: 这个题就是字符矩阵的输入有问题,不用scanf改用那个cin>>就对了 (因为cin>>会忽略空格和换行,百度) #include<bits/stdc++.h> using namespace std; int x,y; int map[550][550]; int dir[4][2]={{1,0},{-1,0},{0,-1},{0,1}}; void print() { for(int i=1;i<x+1;i++)

2022-01-16 22:17:02 325

原创 2022.1.15

洛谷 马的遍历: 注意:需要注意的是输出的要求 首先来看看dfs该怎么做(有的测试点会超时): //这个题如果用 dfs 的话只能部分AC,因为会超时 #include<stdio.h> int dir[8][2]={{-2,-1},{-2,1},{2,1},{2,-1},{1,-2},{1,2},{-1,2},{-1,-2}}; int n,m,x,y; int min=1e9; int way[405][405]={0}; int dfs(int sx,int sy,int fx,

2022-01-16 19:27:12 146

原创 2022.1.13-1.14

洛谷:单词方阵 和前天的思路是一样的,不过没再用数组将需要对比的字母装起来了; 题解: 【1】首先输入这个单词矩阵(一定要注意字符数组的特殊性)//前面卡了挺久,有这个原因 【2】找到单词首字母’y’,从它开始搜索 【3】分八个方向,题中说一个单词只会在一个方向上(所以把方向也当作了一个参数) 【4】如果搜索时,该方向上的字母和单词相同位置的字母是相同的,且下一个字母也满足这样的条件(这里可以用返回值,来判断),就可以将这个位置标记,这一步旨在,将上一个字母和下一个字母联系起来 【5】如果一次性找到了单词的

2022-01-14 22:22:27 169

原创 2022.1.12

上午: 做题回溯例题:组合问题(这个出现了错误,我看不懂它那个提交上去产生的错误是个啥意思) 洛谷:单词方阵(感觉就只差一乃乃就写出来了,但就是卡住了)= =! 想法: 这个题感觉和迷宫挺像不过起点有很多个(应该就是从每个起点出发,找到长度为7的数组和单词"yizhong"作比较,如果相同,则将对应坐标点的位置(这里需要另一个数组来存放坐标)进行标记,最后搜完之后再将整个数组遍历,有标记的地方改为"星号". (暂时还没实现) 下午: 继续洛谷单词方阵:其实上午的时候没看到那个只能在一个方向,找到了错误的地方

2022-01-12 22:27:15 153

原创 2022.1.11

上午: [1]听四级网课 [2]记单词 [3]洛谷:perket #include<stdio.h> #include<math.h> int acid=1,salt=0; int s[20],b[20]; int n; int book[100]={0}; int absdifference=1e9; void dfs(int c) { //这个好像有没有都无所谓 // if(c>n-1) // { // printf("#######\n"

2022-01-11 22:48:32 290

原创 2022.1.9——1.10

上午: 【1】听网课(回溯) 【2】洛谷:自然数的拆分(套用模板做的) 下午: 听学长讲课(讲的挺好); 【1】讲了深搜和广搜。(只是感觉听完之后更加的混乱了) (==!) 深搜是基于递归,广搜依靠队列; 【2】快排的代码实现(两种方法): //这是让课后自己了解的填坑法: #include<stdio.h> void fastsort(int *a,int left,int right) { int key=a[left]; int first=left,last=right

2022-01-10 22:08:23 308

原创 2022.1.8——1.9

一月八日晚上: 一、补链表的题(补题无果) 有思路了,但代码实现出现了点问题; 二、看了《大话数据结构》的第一、二、三(三未看完)章 【1】了解到数据结构和算法的基本含义和时间复杂度的计算方法; 【2】在看第三章时,对线性表的插入进行了代码实现(存在不完善的地方) #include<stdio.h> #define MAXSIZE 10000 int main() { //创建一个线性表(例如数组) int n; scanf("%d",&amp...

2022-01-09 22:26:56 469

原创 C语言之栈和队列的简单应用

知道了栈和队列的初步概念后,就需要开始运用它们做题; 在做题之前,了解几个小细节; 【1】当队头等于队尾等于0时,队列为空;当栈顶为0时,栈内为空; 【2】做题时一定要仔细看题目的要求,在对应的地方进行操作,比如说:题目是让你在所有的运算结束后再输出,那你的输出就一定要在最后。 【3】一般来说,题目都会有要求多组输入分别输出对应结果的,这个时候一定要注意:某些变量在新的一次运算开始之前需要重新赋值为0(这里只是我所遇到的一些情况); 【4】数组一定要开大,至少要比题目给出的需求大 题目1: 实

2021-12-17 02:35:39 1086

原创 C语言之栈与队列的简单实现

先简单的讲一下我学到的概念; 栈 【1】含义:可以说像一个桶,入栈,就像把东西放进那个桶里面,先放进去的肯定是最底层,后放进的肯定在上层;出栈,因为只有一个门所以上面的东西就可以先拿出来。 【2】特点:先进后出 代码: #include<stdio.h> //给定数组的最大长度 int Q[10000]; //只需要栈顶 int top; //栈,要从栈顶进入 void push(int x) { Q[top++]= x; //每入栈一个数字,就让top++; }

2021-12-15 22:48:25 1202

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除