自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 问答 (1)
  • 收藏
  • 关注

原创 leetcode 循环列表的插入(Python)

找到最小值,最大值需要循环一遍列表,如果当前cur元素的值<nex元素的值,说明后一个节点更大,让nex = cur,继续循环,直到nex=<cur,那么就找到cur为最大值,nex为最小值。坑2,列表为【3,3,3,5,3】,错把第一个3当做列表开头,因此条件变为当前cur元素的值=<nex元素的值。首先我们需要找到列表中的最小值,最大值这个节点,因为找到后可以与我们的新元素进行比较厚插入。坑1,列表为【3,3,3】,列表会无限循环,因此加一个条件nex!题目如果不进行思考,巨多坑。

2024-04-28 19:30:45 49

原创 leetcode 边双连通tarjan(python)

先回顾一下强连通分量,首先维护dnf和low两个列表,dnf【i】表示第i个节点的编号,low【i】表示第i个节点能到达的最小节点编号。例如节点0可以到1,节点1能到达2,节点2能到达0,那么可以推出low【1】= 0。强联通是有向图,而边双连通是无向的,那么如果某次到达了v节点,不能让他再顺着原路返回父节点u,否则low【v】肯定等于low【u】,总结就是从u节点到达v后,不能再从v到达u。如果low【v】= dnf【v】,说明节点v不能到达v的父节点u及之前的其他节点,就是说u到v只有一条边。

2024-04-27 14:39:04 100

原创 leetcode最大间距(桶排序+Python)

【代码】leetcode最大间距(桶排序+Python)

2024-04-22 19:44:55 167 1

原创 LeetCode 课程表二(拓扑排序+Python)

这里使用卡恩算法,主要维护一个列表cnt,cnt【i】表示能到达节点i的边,比如说:a到c有一条边,b到c有一条边,那么cnt【c】= 2。当然,如果从a走到c一次,cnt【i】= 1。如果b再到cc一次,那么cnt【i】= 0。如果某个节点i,cnt【i】= 0,说明没有边能到达i节点,就是说i节点前面没有其他节点了,那么可以选择i节点。使用桶排序算法中的kahn(卡恩)算法,也可以使用dfs。

2024-04-22 18:52:14 245

原创 给字符串添加加粗标签(AC自动机+Python)

ac自动机主要维护两个列表,一个列表ch,ch[f][idx]表示从父节点f向idx这个方向走,走到的节点。另一个列表nex,nex[i]表示节点i回跳边的节点。确实是通过了,但是!暴力解法居然比ac自动机更快!可以暴力解决,但是为了锻炼一下ac自动机的编程,我们使用ac自动机。下面是暴力的,上面是ac自动机。

2024-04-22 16:58:35 264

原创 701强连通分量(python)

Tarjan 算法主要是维护两个列表dnf和low,dnf[i]记录到达i这个点的次序,low记录i这个点的祖先次序。如果dnf[i]==low[i],就是说i这个点就是祖先节点,如果dnf[i]!这题用强连通分量 Tarjan 算法,强联通:对于任意两个点u和v,u可以到达v,v也可以到达u。这题需要考虑有重边,自环,同样别忘记可能会有两个点u和v,u不能到达v,v也不能到达u的情况,就是u和v不在同一个图中,数据中会存在几个图的情况。遇到一个问题就是,需要考虑数据中存在不同的图!

2024-04-21 18:58:42 205

原创 KMP算法(Python)

p[j+1],让j=nex[j],意思是发现aabaaa和aabaab不匹配了,现在找到aabaa的(相等前后缀的最大长度),那就是aa,j跳到2的位置,相对于j = nex[j]。找到aabaa的(相等前后缀的最大长度)相对于找到1,2(aa)和4,5(aa)相等,再考虑aa+a和aa+b匹不匹配,看起来不匹配,再找到aa的(相等前后缀的最大长度)为(a),那么a+a显然和a+a相匹配。目前在最大长度的情况下,前缀是aabaa,后缀是aabaa,分别编号1,2,3,4,5。

2024-04-19 19:59:49 389

原创 AC自动机简单版(Python)

代码待优化,洛谷的居然没过!

2024-04-18 19:27:37 194

原创 leetcode(474.最大连续1的个数)(python)

dp[i][0], dp[i][1] 可以缩写成d1,d2。因为第i个元素的状态,只需要已知dp[i-1][0]和dp[i-1][1]。nums[i]为1的情况,nums[i]为0的情况,我希望还是大家顺着这个思路自己尝试一下。dp[i][1]表示前i个数字,以第i个元素结尾,只存在一个0,其他全为1的个数。dp[i][0]表示前i个数字,以第i个元素结尾,全为1的个数。个人觉得(以第i个元素结尾)这句话很重要,怎么感觉哪都用到过。题目要求数组的*****的个数,想到dp动态规划。

2024-04-18 16:00:43 219 1

原创 4202. 穿过圆 (python)

把整个坐标系想象成一个大圈,编号就给他当m,先把能括住每个点的最小圈记录下来,再把能括住某个圈的最小圈记录下来,这样每个点都有父圈,每个小圈也有父圈。这样每次询问a和b的距离,可以通过计数经过的父圈节点来计算距离。怎么快速计算到父圈的距离呢?通过创建st表,st[i][j]表示编号i点经过2**j的父圈到达的父父父....圈编号。但是k=10**5次方,算法超时。

2024-04-12 20:01:41 173

原创 3210. 最优灌溉+prim (python)

要使图的整体权重加起来最小,那么肯定选(prim或者kru),论算法编写简单程度,肯定选prim。这题特别适合练习prim和kru,建议两种算法都使用一遍。prim时间复杂度(nlogm),每个点都要遍历,并且需要用最小堆使得队列里的元素排序。kru时间复杂度(m),每个边都要遍历,从边中最小的两个点进行连线。首先看一下数据范围,知道算法时间复杂度必须小于m**2。题目说没有重边和自环,平时写code时候需要注意这两点。

2024-04-12 14:49:16 127

原创 853. 有边数限制的最短路+spfa (python)

当然可以简化步骤,可以用队列把更新的节点放在下一次nex队列里,因为不更新的节点下次同样不更新,更新的节点,下次可能到达某个子节点会更近,所以只把更新的节点加入下一次队列。先for循环m次,第一次,把1节点加入队列,弹出后,把更新过的节点加入nex里,qu中弹出所有节点后,让qu加载nex的节点。有了spfa的精髓,让复杂度最高为(mk),肯定比全部边都遍历一遍节省时间。加入1号的下一个节点后进行第二次。

2024-04-12 10:04:46 124

原创 4872. 最短路之和(python)

题目要求,求出任意两个点之间最小距离的和,那么想到Folyd算法,但是这个算法需要(n**3),并且题目询问n次,总共需要(n**4),那么想到一个一个删除点再求最小距离,相对于一个一个加点,再求最小和,跟Folyd算法流程不谋而合,例如前面有a,b点,先需要加上c点,那么这次把c当做路过的点,计算a到c再到b的距离,和原来a到b的距离进行比较。如果这时候又加上了d点,重复上述流程,把d点当做路过的点,计算a到d再到b,a到d再到c......。少了从a,b经过c再到d,和d经过c再到a,b。

2024-04-11 15:31:36 113

原创 最短路算法回顾1:Dijkstra(python)

【代码】最短路算法回顾1:Dijkstra(python)

2024-04-11 11:28:44 115

原创 飞机降落(python)

【代码】飞机降落(python)

2024-04-09 19:41:37 205

原创 4964. 子矩阵(python)

维护最大值,最小值窗口,特别需要注意,当遍历到第i个元素时,查看栈顶元素是否等于第i-b个元素,此元素不在边长为b的滑动窗口中。想到滑动窗口维护最大值或者最小值,但它是二维矩阵,可以先对每一行滑动维护一个大小为b的窗口,再对每一列维护一个大小为a的窗口。考虑前缀和,max和min维护一个表,也不能求出某个矩阵的最大值,最小值。首先看题目范围,如果暴力解,大概是四个for循环,显然不太ok。

2024-04-09 18:15:59 158

原创 货车运输(python)

询问x到y的最大载重,意思为从x到y开车,这条路径需要在所有从x到y的路径中的最小值,让最小值最大,考虑生成最大树,从已知相连接的两点之间,只选择路径最大的那条,生成一棵树,那么从x到y,就算绕路走,也走最大的那唯一的一条路。生成最大树后,如果查询q次最大承载力,暴力的算法可能复杂度达到qn,所以使用LCA优化寻找速度,例如查(1,2**10+2)的最大承载力,可以先查(1,2**10)再查(2**10,2**10+2)。(m为边的数量,n为点的数量),不知道为啥这题选kru?

2024-04-08 15:59:25 135

原创 异或和之差(python)

看见题目范围,可知暴力解法不行,本代码还有待改进(没过200000)建立字典树,不是字典建立的,使用的是列表。

2024-04-07 14:46:31 222

原创 121. 赶牛入圈

【代码】121. 赶牛入圈。

2024-04-04 16:57:05 124

原创 背包问题求具体方案(python)

背包问题

2023-11-02 16:22:28 122

原创 生成多个颜色不同的箱线图

首先,我们需要导入所需的库:Matplotlib 和 NumPy。# 设置每个箱线图的线条颜色和样式# 设置中位数线的颜色和样式# 设置横线的颜色和样式# 设置异常值的样式和颜色在这些代码中,我们使用循环来为每个箱线图的不同部分设置样式。我们通过遍历boxplots字典中的不同键(如'boxes''medians''whiskers'和'caps')来访问相应的线条对象,并使用set方法设置它们的颜色、线宽和样式。

2023-06-16 16:24:54 1353

原创 矩阵的二范数,已知A的二范,求cA的二范;c为常数

矩阵的二范

2022-09-19 16:10:12 340

原创 matlab.^的高级用法(数的矩阵次方)

则c=a.^[0,1,2,3,4]

2022-07-20 20:46:26 1888

原创 暗通道先验去雾Single Image Haze Removal Using Dark Channel Prior

MATLAB代码

2022-06-29 10:17:22 339

原创 青蛙跳台阶(函数递归)

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法分析:在跳上n阶之前,要么在第n-1阶,要么在第n-2阶。所以第n阶的跳法=第n-1阶+第n-2阶的跳法#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int wow(int x){ if (x >= 3) { return wow(x - 1) + wow(x - 2); } else if (x == 1) r

2022-05-06 16:26:53 166

原创 函数递归的使用

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>//目的是打印输入的数字(每个数字直接带空格),列如123,打印1 2 3void print(unsigned int x){ if (x > 9) { print(x / 10);//函数递归:1 递归需要限制条件 } // 2 每次递归都需要更加接近限制条件 printf("%d ", x%10);}int .

2022-05-04 10:36:51 46

原创 用函数交换a与b的值

需要交换a与b的地址(如果单纯交换两个数值,函数会新创建两个数值,并且交换,与原来数值无关)

2022-04-29 10:33:32 2529 1

原创 三个数按从大到小排序和公约数

待优化

2022-04-27 09:42:25 78

原创 猜数字的小游戏

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include<stdlib.h>#include<time.h>void menu(){ printf("*********************\n"); printf("******1:开始游戏*****\n"); printf("******0:退出游戏*****\n"); printf("*********************\n").

2022-04-14 15:32:34 2543

原创 登录密码界面

三次登录中密码正确显示登录成功,三次错误则退出

2022-04-14 10:26:01 119

原创 演示多个字符从两端向中间汇集

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <windows.h>#include<string.h>int main(){ char arr1[] = "welcome to school!!!"; char arr2[] = "********************"; int left = 0; int right = strlen(arr2) - 1; while .

2022-04-14 10:04:13 51

原创 从一组数列中找出一个数的下标

可能要到此为止了

2022-04-13 15:49:20 156

原创 1.for的使用。2.do while的使用。3阶乘

1#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ for (int i = 1; i <= 10; i++)//第一个为初始,第二个为判定,第三个为变化 printf("%d ", i); return 0;}2.#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ int a = 1;

2022-04-10 20:16:00 250

原创 while中的continue用法,getchar及putchar使用方法

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>//int main()//{// int a = 0;// while (a <= 9)// {// a++;// if (a == 5)// continue;//在while循环中,continue负责跳过本次循环continue后面的代码// printf("%d\n", a);// }// return 0;//}//int main().

2022-04-08 17:12:47 886

原创 Switch,case,default搭配使用

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ int day = 0; scanf("%d", &day); switch (day) { case 1: case 2: case 3: case 4: case 5: printf("休息日"); break; case 6: case 7: printf("工作日"); break; default: print.

2022-04-08 16:04:43 143

原创 struct创建一个结构以及使用

#include <stdio.h>#define _CRT_SECURE_NO_WARNINGS 1struct Stu{ char name[20]; int age; double time;};int main(){ struct Stu s = { "赵花花",20,58 }; printf("1:%s %d %lf\n", s.name, s.age, s.time); struct Stu* ps = &s; printf("2:%s %d %.

2022-04-08 16:03:14 156

原创 关于导师不回邮件那些事

考研上岸后,由于心仪导师是计算机方向,便自学c语言。现在导师五天没回我邮件,感觉学c语言没有信心。

2022-04-07 19:05:41 244

原创 指针变量与解引用操作

敲代码的第四天

2022-04-05 19:39:10 129 1

原创 1.static修饰局部变量,全局变量以及函数。2.f(x,y)函数

第五次敲代码

2022-04-05 19:01:50 214

原创 打印数组里面全部数

2022-04-04 20:29:39 1800

空空如也

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

TA关注的人

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