学习记录
文章平均质量分 51
Ken12348
这个作者很懒,什么都没留下…
展开
-
学习记录21
上午根据题意可以看出,此题用floyd就可以了。Floyd是用来求每个点之间的最短路径,尽管时间复杂度有些高,但在这一题中是完全可以满足的了。代码如下:#include <bits/stdc++.h>using namespace std;int n,m,v,s;const long long int inf=1e9+5;int low[110][110];void floyd(){ for(int i=1;i<=n;i++) for(int.原创 2022-02-22 16:42:54 · 633 阅读 · 0 评论 -
学习记录20
写题,到目前为之最短路的题只写了一个,急,很急。对于最短路还是没太多的认识和理解,写这题有点麻,最后用dp写的。题目中的最少租金这四个字就已经勾起了“背包”这两个字,我最开始一想,dp无疑了。就是最开始对于那个所谓的“半矩阵”搞不太清楚,都不太理解这几个数代表着什么……我们将dp[i]设定的意义为游艇出租站i到游艇出租站n的最少租金。dp定义好就开始根据初始值一步步推出答案。实现的代码如下:#include <cstdio>#include <iostream>原创 2022-02-15 10:45:40 · 437 阅读 · 0 评论 -
学习记录19
上午写最后一道题:现在大概能懂一些了。我们使用kmp匹配做出这一题。实现代码如下:#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;#define ull unsigned long long intint ani,kmp[1000010];char a[1000010],an[100原创 2022-02-13 19:24:37 · 230 阅读 · 0 评论 -
学习记录18
上午题目如下:kmp的模板题,因为next数组的值没有设定好,导致求最长border的时候出现问题。后来修改了next的值的初始设定,然后所谓的border就是直接输出next数组里的值就好了。就像之前说过的,kmp利用字符串的对称性来节省时间复杂度,next数组中的值其实就是当两字符串进行字符匹配的时候,如果失配了,该从哪个下标位置重新开始匹配。而我们的next值是根据i字符前所构成的字符串中前后缀相同的个数,比如:abab,此时next[4]=2(下标从0开始)。使用kmp的话,当abab后原创 2022-02-13 10:34:11 · 216 阅读 · 0 评论 -
学习记录17
惭愧,折腾了一天的KMP,写了个模板题,这题写详细些好了。题目如下:首先我们要知道KMP是怎么用的,是干些什么的。KMP主要适用于字符串的匹配,就是上面的这题,当我们需要在两个字符串之间进行判断是否另一方在主串中出现时,一旦字符的长度大了起来,使用朴素算法的话就会显得时间复杂度过大,于是在前人的研究下,我们得到了如今的KMP。因为KMP是利用字符串的对称性来节省时间复杂度的,我们将子串以相同的前后缀个数来编出另一个整型数组,此前后缀个数也是字符串中非重复字符的下标位置。借由这个数组我们可以节原创 2022-02-09 22:49:54 · 527 阅读 · 0 评论 -
学习记录16
上午开始写hash的题目,最开始是这个:最开始写出来会出现时间超限的情况,因为我没有用hash的方法,只是直接写出解决方法。这是看了下题解的做法。双指针法,用两个变量表示两个下标位置。关键的是我们要知道,如果我们把数组从小到大排序起来,当到达一个减去数组中的最前方(后面会改变位置)数后<c的元素再之后的元素,再从头一个个找,找到一个减去N[i]>c的第一个元素,此两个数之间的元素一定是符合题目要求的。大概有点拗口了,理解就好了。#include <iostream>原创 2022-02-08 21:56:34 · 362 阅读 · 0 评论 -
学习记录15
上午写5个题解,分别是“P1177 【模板】快速排序”、“P1111 修复公路”、“P2078 朋友”、“P1455 搭配购买”和’P1551 亲戚”。哦对了,这是一天的量。不想分散了,就写上午了。还看了《大话数据结构》里关于“图”的内容,没看完,不过也算了解了一些。下午复习了一下“二叉树”的知识内容,之前没有看树就直接看来二叉树了,这次把树看了一遍,还行,不难理解。然后就开始了2小时的周测……心碎时间开启……晚上开始了一周一次的答辩环节,我们讲了讲一周写的题和学了的知识点,师傅原创 2022-01-23 21:06:51 · 44 阅读 · 0 评论 -
学习记录14
上午写出一个题:题目描述给出每个节点的两个儿子节点,建立一棵二叉树(根节点为 11),如果是叶子节点,则输入0 0。建好树后希望知道这棵二叉树的深度。二叉树的深度是指从根节点到叶子结点时,最多经过了几层。最多有 10^6106 个结点。输入格式无输出格式无输入输出样例输入 #172 73 64 50 00 00 00 0输出 #14通过的代码是:#include <stdio.h>#include <std原创 2022-01-23 09:45:28 · 111 阅读 · 0 评论 -
学习记录13
上午写”修复公路“,还是并查集,根据题目有变化。通过的代码:#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;int pre[100010];int fini(int x){ if(pre[x]==x) return x; return pre[x]=fi.原创 2022-01-20 21:43:10 · 249 阅读 · 0 评论 -
学习记录12
上午写并查集题目”朋友“。题目为:通过的代码为:#include <stdio.h>#include <string.h>int pre[30000],pre1[30000];int fini(int t,int x)//并查集合并,因为我要建立两个并查集,所以我用t来把它们区分开{ if(t==1) { if(pre[x]==x) return x; return pre[x]=.原创 2022-01-20 19:32:49 · 156 阅读 · 0 评论 -
学习记录11
上午写二叉树题目,“P1827 [USACO3.4]美国血统 American Heritage”,题目描述为:通过的代码为:#include <iostream>#include <cstring>using namespace std;void backi(string m,string f){ if(f.empty)//当前此为前序遍历序列分割出的左子树序遍历序列为空的时候,代表此子树已经分割完 return; .原创 2022-01-18 22:00:09 · 526 阅读 · 0 评论 -
学习记录10
上午看关于《大话数据结构》中的关于二叉树的章节,已经了解了四种遍历序列。分别为前序遍历序列、中序遍历序列、后序遍历序列和层次遍历序列。嗯,看了比较久,下午也有在看书。果然,看了书和会写题目是不能一概而论的……遍历方式了解到了,遍历的代码也会写了,也试了一下写创建二叉树的模板,嗯,还行,还行。把模板贴这里吧。#include <stdio.h>#include <stdlib.h>typedef struct node{ char a; s原创 2022-01-17 21:53:36 · 111 阅读 · 0 评论 -
学习记录9
上午听英语听力,看大话数据结构。写出了八皇后。之前只是数组开小了。开大后答案是对了,就是时间超限了。于是看了下题解。人家是用一个数组内元素标志某列和两个对角线,我傻乎乎的二维数组直接一个个标记,对比起来,难怪超时哦。好了,题目如下:得出的代码如下:#include <iostream>#include <cmath>#include <memory.h>#include <algorithm>using na.原创 2022-01-16 22:52:55 · 210 阅读 · 0 评论 -
学习记录8
上午照旧听英语四级听力,背单词。然后看了两章《大话数据结构》。还写了一下八皇后,没写出。晚上继续写八皇后,终于已经能够得出6*6的答案了,还没搞我这为什么数高上去答案就不对了。明明6的都可以得出来了,已经很接近了。大概,还是回溯的地方出了问题。#include <iostream>#include <cmath>#include <memory.h>#include <algorithm>using namespace原创 2022-01-14 22:31:13 · 55 阅读 · 0 评论 -
学习记录7
上午照旧,听了20年12月的英语四级听力,嗯……不是很容易,这些题目。写“P2392 kkksc03考前临时抱佛脚“,写出来了,在下午……题目为:得出的代码为:#include <iostream>#include <memory.h>#include <algorithm>using namespace std;int main(){ int s[4],dp[3000],n[4][100],sum=0,ans=0;.原创 2022-01-13 22:10:36 · 99 阅读 · 0 评论 -
学习记录6
上午听20年6月的英语四级听力,一小时。并尝试写出“单词方阵”,嗯,下午才写出来……代码和问题放在下午那一块吧。又学了些c++的函数,现在已经差不多可以使用c++来写题目了,具体学了:1,包含在#include <algorithm>中的min和max函数,还有同样包含在这个库里的sort函数,这个可好用了2,包含在#include <cstring>中的memset函数,此函数可以给一整个变量赋值,主要用它给数组赋初值。3,包含在#include <q原创 2022-01-12 21:31:00 · 85 阅读 · 0 评论 -
学习记录5
早上听一个小时的英语四级听力,并记下不熟悉的单词。开始写洛谷里的”马的遍历“。我知道这样的求最小步数的用bfs最好,可我还是想试一试dfs,于是写了一个上午……主要问题有:此题的输出格式有特殊要求,尽管我有注意到,可格式还是出错了,理解错了意思。我也有犹豫要不要使用回溯,因为我觉得按照这题目的意思好像是可以重复到原来的位置,于是最开始我并没有使用回溯,尽管出现了答案——这代表可以运行出来,不会死循环——可答案错误,最后使用回溯,还是没写出来……用dfs的话,的确麻烦得多……下午题原创 2022-01-11 21:52:15 · 73 阅读 · 0 评论 -
学习记录四
上午早晨起来听了半个小时的四级听力,记忆了出现在听力中的较重要单词。听完听力后,看了两个讲解bfs和dfs的视频。了解了两者之间的区别。成功写出2个搜索题,分别为:最后得出的答案代码为:#include <stdio.h>int ni[8][2]={{1,0},{0,1},{-1,0},{0,-1},{1,1},{-1,-1},{-1,1},{1,-1}},ans=0,n,m,xx,yy;//ni为可以走的八个方向char a[110][110];void df.原创 2022-01-10 22:34:49 · 110 阅读 · 0 评论 -
学习记录3
上午写了三个链表题目,分别运用到的是双向链表、合并链表跟链表遍历。由于代码过长,接下来只把主要函数展示出来:1,这个是双向链表实现void cirle(int se){ int cnt=1; while(tail->link!=NULL) tail=tail->link; tail->link=head; tail=tail->link; cnt=1; while(cnt<=se-1)原创 2022-01-09 21:49:38 · 434 阅读 · 0 评论 -
学习记录2
继续是栈和队列,今天主要是栈,做了一道关于出栈序列的题目。最开始我用暴力的方法将每出现的数包含其本身往后确认,使用过的数字用vis数组标记,于是我可以随着序列数字的推进每次都for循环往下推,如果一致那么就算是可实现的序列,而要是有匹对不上的数字那么就代表序列错误。可是当我提交上去时,显示的是时间超限,于是我开始换思路。咳咳,最后,在借鉴了一下别人的思路之后终于是成功ac。思路如下:首先将序列输入到一个数组中,自定义一个函数,功能为在一个for循环中按原本题目设定的入栈顺序入栈,可在入栈的同时也判断原创 2021-12-16 22:54:24 · 51 阅读 · 0 评论 -
学习记录1
今天啊,首先,熟悉了一下链表的创建、数目的去重和排序,代码如下:#include <stdio.h>#include <stdlib.h>typedef struct node {int ber;struct node *next;}tt;tt *a,*b,*tail1,*tail2;tt *creat(int x){ int i,j; tt *head,*tail; head=tail=(tt*)malloc(sizeof(tt));...原创 2021-12-15 22:23:31 · 1422 阅读 · 0 评论