自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 背包问题分析代码详解【01背包+完全背包+多重背包】

由于f[i,j-v]中多了一项f[i-1,j-(s+1)v]+sw,所以f[i-1,j-v]+w,f[i-1,j-2v]+2w,f[i-1,j-3v]+3w,…f(i,j−v)=max(f[i,j−v],f[i,j−2v]+w,⋯,f[i,j−(s+1)v]+sw)(滑动窗口已满)f(i,r+(s+1)v)=max(f[i,r+(s+1)v],f[i,r+sv]+w,⋯,f[i,r+v]+sw)(滑动窗口已满)简言之,在j........................

2022-07-20 23:05:19 2825 1

原创 王道408考研课后习题---二叉树

首先无脑访问做左的节点,中间遇到的非叶子结点全部记录在栈中,当已经访问到最左结点的时候,从栈中取栈顶一个元素,访问其右节点,然后重复一的步骤,然后弹出栈顶一个元素,访问根结点。算法思路:使用递归算法实现,先交换T结点的左孩子的左右子树,然后交换T结点右孩子的左右子树,最后交换T结点的左右孩子。采用后续遍历分别访问p和q,此时p和q的后续遍历的工作栈中即为该结点的祖宗序列,去匹配倒数第一个相同的元素。算法思路:采用非递归的后续遍历,最后访问根结点,那么当访问到x的时候,栈中所有元素即为该结点的祖先结点。

2023-07-06 17:01:59 252

原创 王道408考研课后习题---队列

在循环队列中,设置一个标志域tag,并以tag的值为0和1来区分队头指针front和rear相同的状态是空还是满,然后编写出入对算法。出队的时候,将数据依次出栈入栈到S2中,弹出栈顶元素即可,最后将S2的数据再一次出栈入栈到S1中。入队的数据直接存放在S1栈。利用栈将队列的元素逆置。利用两个栈来模拟队列。

2023-07-03 17:39:02 180

原创 王道408考研课后习题---栈

2)判断一个出入栈序列是否合法,I表示入,O表示出,不合法返回False,否则返回True。判断一个带头结点的单链表的数据是否中心对称,例如xyx、xyyx。共享栈的定义以及相关操作。

2023-07-03 11:48:48 172

原创 王道408考研课后习题---线性表(全二十五题)

int data;第一题:递归算法实现删除不带头结点的单链表L中所有值为x的结点LNode * p;p = L;free(p);} else {} }第二题:非递归实现删除所有x的结点 需要设置一个工作结点和前驱结点while(p!free(q);} } }第三题:逆序打印链表if(L!第四题:删除单链表中的最小值结点算法思路 : 依次扫描比较 然后记录最小值的结点和其前驱结点while(p。

2023-07-02 22:51:43 319

原创 前缀和&差分学习笔记

加上一个值c的时候,那么在b[i]加上c,那么后面都会加上值c,由于j后面不需要加上c,因此要在j+1的位置,减去c,那么在计算前缀和的时候后面值都会减去c,和前面加c抵消了。原理:由于a是b的前缀和,当我们在b[i]加上一个值c,那么在计算后面的前缀和的时候,都会加上c,当我们减上一个值,那么后面都会减去某个值。原数组: a[1], a[2], a[3], a[4], a[5], …原数组: a[1], a[2], a[3], a[4], a[5], …差分数组:b[1] ,b[2] , b[3]…

2022-11-22 18:07:19 142 1

原创 tmux and vim学习笔记

命令行模式:在命令行模式按下:/ :三个字母其中任意一个,会进入命令行模式,命令行在最下面。可以查找、保存、退出、配置编辑器等。​ 一个tmux可以包含多个session,一个session可以包含多个window,一个window可以包含多个pane。编辑模式:在一般模式里按下i,会进入编辑模式,按下ESC会退出编辑模式,会回到一般命令模式。每次用vim编辑文件时,会自动创建一个 .filename.swp 的临时文件。如果打开某个文件时,该swp文件已存在,则会报错。

2022-10-26 11:54:42 482

原创 Python学生管理系统【原码+实现过程】

首先该类需要完成学生信息的初始化(传参实现)。重定义魔法函数__str__,使得本来返回该对象的地址,现在改成返回该类定义的学生信息。{.}{.}{.}{.}需要定义列个列表存储学所有学生信息定义一个run函数,实现学生管理系统的相关操作。run函数就是运行学生管理系统,运行后,首先我们需要在文件中加载已经存储好的学生信息。打印学生管理系统的功能菜单然后输入选项,执行相应的功能(添加、删除、查找、显示、修改、退出系统并保存).........

2022-08-12 22:03:10 3663

原创 Shell脚本编程入门

一、Shell是什么?shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。并且提供一个交互式的命令行窗口。shell的定位:相当于外层应用层和linux内核的之间的翻译官,并且是一个功能相当强大的编程语言,易编写,易调试,灵活性强。......

2022-07-26 19:59:32 612

原创 二分搜索算法【原理&代码模板】

对一段区间进行二分处理,每次将区间一分为二,并只保留我们需要的区间,当区间长度为1的时候(l == r),这个时候l或r就是我们需要的答案。二分的本质并不是单调性。有单调性的一定可以二分,但可以二分的不一定有单调性。其本质是假如一段区间可以划分成两种状态,我们一定可以搜索到这两种状态的边界值。蓝色箭头指向的点就是我们二分搜索出来的答案。这两个点到底哪个是我们搜索的答案取决于我们的搜索策略。下面会介绍两种搜索策略的模板。模板一 当我们将区间[l, r]划分成[l, mid]和[mid + 1, r]时模

2022-06-20 17:49:43 134

原创 长草【标准BFS】

题目分析:本题题意是,给一块草地,刚开始草地上有些草,每经过一个月每颗草都会向四周(上下左右)长一格。思路就是:先把所有有草的地方加入一格队列中,然后依次外延四格,然后把所有上一次外延出来的草加入队列,再一次向外外延四格。如此循环K次即可。...

2022-06-12 23:11:59 87

原创 蓝肽子序列【线性DP】

L 星球上的生物由蛋蓝质组成,每一种蛋蓝质由一类称为蓝肽的物资首尾连接成一条长链后折叠而成。生物学家小乔正在研究 L 星球上的蛋蓝质。她拿到两个蛋蓝质的蓝肽序列,想通过这两条蓝肽序列的共同特点来分析两种蛋蓝质的相似性。具体的,一个蓝肽可以使用 111 至 555 个英文字母表示,其中第一个字母大写,后面的字母小写。一个蛋蓝质的蓝肽序列可以用蓝肽的表示顺序拼接而成。在一条蓝肽序列中,如果选取其中的一些位置,把这些位置的蓝肽取出,并按照它们在原序列中的位置摆放,则称为这条蓝肽的一个子序列。蓝肽的子序列不一定在原

2022-06-09 22:12:24 165

原创 罗马数字(2012 年省赛)

古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因,当时的宗教禁止在数字中出现 0 的概念!罗马数字的表示主要依赖以下几个基本符号:I 1 V 5 X 10 L 50 C 100 D 500 M 1000这里,我们只介绍一下 1000 以内的数字的表示法。单个符号重复多少次,

2022-06-01 20:20:04 164

原创 字符串哈希【算法】

当一个字符串规模很大,并且需要多次访问该字符串或者子串的时候,我们可以用哈希函数对每个字符串进行哈希,分别映射到不同的数字中去,即一个整数哈希值,然后我们可以根据哈希值找到需要的字符串。哈希函数是哈希的关键,首先理论上任何一个函数都能做哈希函数,但是在字符串哈希中,为了避免冲突采用了一种进制哈希的方式(BKDRHash)。原理:设定一个进制 P,需要计算一个字符串的哈希值时,把每个字符看成每个进制位上的一个数字,这个串转化成了一个基于进制 P 的数,最后对 M 取余数,就得到了这个字符串的哈希值。为简化计

2022-06-01 16:24:25 4889 1

原创 KMP字符串模式匹配算法【精简代码模板】

模式匹配(Pattern Matching)就是在一篇长度为n的文本S中,找某个长度为m的关键字P。KMP算法是由朴素字符串匹配算法优化而来,就是重新利用了朴素做法中浪费的一些有用信息。3. 如何实现优化朴素做法在朴素方法中,每次新的匹配都需要对比 S和 P的全部 m个字符,这实际上做了重复操作。例如第一轮匹配 S的前 3 个字符 “aaa” 和 P 的 “aab”,第二轮从 S 的第 2 个字符 ‘a’ 开始,与和 P 的第一个字符 ‘a’ 比较,这其实不必要,因为在第一轮比较时已经检查过这两个字符,

2022-06-01 15:37:50 635

原创 静态模拟实现链表、双链表、队列、栈、堆和哈希【数据结构】

一、单链表的静态实现//单链表代码模板int head,e[N],ne[N],idx;//head表示头指针,e【N】是记录链表的值//ne【N】表示下一个要访问的节点//idx表示当前用到哪个节点了//初始化void init(){ head = -1; idx = 0;}//在链表头插入一个数avoid insert(int a){ e[idx] = a,ne[idx] = head,head = idx,idx++;}//将第一个结点删除void remove

2022-05-29 20:55:23 189

原创 二分模板【算法】

一、二分的分类1)整数二分2)浮点数二分二、二分模板1)整数二分模板2)浮点数模板三、二分的解题步骤1)先写一个mid = (l+r)>> 1。2)写check()函数。3)根据check()函数划分区间。然后根据划分的区间更新区间,当l = mid时, 将第一步改成mid = (l+r+1)>>1。四、例题题目:数的范围给定一个按照升序排列的长度为 n 的整数数组,以及 q个查询。对于每个查询,返...

2022-05-12 17:07:17 1989

原创 常见搜索模板DFS+BFS+二分搜索【算法】

本篇讲的是常见的搜索模板,搜索其实非常好写,下面我将已典型的题目为例子介绍几种常见的搜索方式。1.二分搜索#include<bits/stdc++.h>using namespace std;double n;const double eps = 1e-12;//二分搜索int main() { int t; cin>>t; while(t--) { cin>>n; double l = 0,r = 100000,res = .

2022-05-07 14:53:19 1697 1

原创 GCD练习题:最大体积 【蓝桥杯】

#include<bits/stdc++.h>using namespace std;#define N 100000int n;int a[15];int c[100000];int gcd(int a,int b) { return b?gcd(b,a%b):a;}//求出所有数的最大公约数bool gcdAll() { int temp = a[0]; for(int i = 1; i<n; i++) temp = gcd(temp,a[i]); r...

2022-04-28 16:16:48 300

原创 PTA 程序设计天梯赛【day3】

L1-039 古风排版 (20 分)中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。输入格式:输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。输出格式:按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)。#include<bits/stdc++.h>using namespace std;int n;char a[105][105];

2022-04-21 22:51:14 692

原创 PTA 程序设计天梯赛【day2】

目录L1 - 019 谁先倒下L1 - 023 输出GPLTL1-025 正整数A+BL1 - 027 出租(20分)L1-031 到底是不是太胖了 (10 分)L1-032 Left-pad (20 分)L1-033 出生年 (15 分)L1-035 情人节 (15 分)L1 - 019 谁先倒下划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就...

2022-04-19 23:30:54 361

原创 PTA 程序设计天梯赛【day1】

L1-002 打印沙漏本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。输出格式:

2022-04-18 23:08:03 357

原创 小明的彩灯【差分数组】

题解:#include<bits/stdc++.h>using namespace std;const int N = 5e5+10;long long num[N];//存方灯的数组long long ans[N];//定义差分数组int main(){ int n,q; cin>>n>>q; for(int i = 1;i<=n;i++) cin>>num[i]; for(int i = 1;i<=n;i++) a..

2022-04-06 18:58:11 215

原创 回文日期【蓝桥杯2020年十一届真题】

思路:本题的思路,首先肯定得暴力遍历每一个大于给出的年份,然后判断该年份是否满足要求。观察题目我们可以知道要求的ABABBABA型的回文串,可以知道后面的月和日跟年有关,也就是一年只有可能有一个回文串。因此我们只需要遍历年,然后将年翻转接到年后边形成一个新字符串,然后判断是否符合年月日的规范就可以了。该题使用到的函数:1、stoi函数1)功能:将字符串转换成十进制。2)函数的使用:#include<iostream>using namespace std...

2022-04-04 21:42:10 334

原创 最大公约数和最小公倍数数(GCD&LCM)

1.GCD的定义GCD 即最大公约数Greatest Common Divisor。整数 a 和 b 的最大公约数是指能同时整除 a 和 b 的最大整数,记为 gcd(a,b)。2.GCD的性质1) gcd(a,b)=gcd(a,a+b)=gcd(a,k⋅a+b)2) gcd(ka,kb)=k⋅gcd(a,b)。3) 多个整数的最大公约数:gcd(a,b,c)=gcd(gcd(a,b),c)。4) 若 gcd(a,b)=d,则 gcd(a/d,b/d)=1,即 a/d=与 b/

2022-04-02 16:28:38 1975 1

原创 GCD练习题:最大最小公倍数

题目描述已知一个正整数 N,问从 1∼N中任选出三个数,他们的最小公倍数最大可以为多少。输入描述输入一个正整数 NNN。1<=N<=1e6输出描述输出一个整数表示答案。题解:首先这三个数应该是两两互质的,如果不是互质的,它们就会有公约数,导致答案减少。而由于相邻的两个数必然互质,所以我们考虑以下情况:如果 N 为奇数,那么 N 与 N−2 互质,则 N、N−1、N−2 为选定的 3 个数 如果 N 为偶数,那么 N 与 N−2 最大公约数为 2,此.

2022-04-02 16:02:27 290

原创 STL函数大全

目录一、数组-vector1.vertor的访问2.vector的初始化3.函数二、栈-stack三、链表-list1.初始化2.函数四、队列-queue1.初始化2.基本操作3.priority_queue的初始化4. priority_queue操作与链队列一致。五、集合-set1.初始化2.基本操作六、映射-map1.初始化2.操作函数一、数组-vectorvector是数组的一种类表示,它提供了自动内存管理.

2022-03-30 21:03:36 3360

原创 动态规划入门练习

题目:蒜头君在玩一款逃生的游戏。在一个 n×m 的矩形地图上,蒜头位于其中一个点。地图上每个格子有加血的药剂,和掉血的火焰,药剂的药效不同,火焰的大小也不同,每个格子上有一个数字,如果格子上的数字是正数说明是一个药剂代表增加的生命值,如果是负数说明是火焰代表失去的生命值。蒜头初始化有 v 点血量,他的血量上限是 c,任何时刻他的生命值都不能大于血量上限,如果血量为 0 则会死亡,不能继续游戏。矩形地图上的四个角(1,1),(1,m),(n,1),(n,m)为游戏的出口。游戏中只要选定了一个出口,

2022-03-27 16:23:34 125

原创 蓝桥杯省赛模拟真题六

1.A的个数以下是一个 25 行 25 列的字母矩阵,全部由字母 A 和 B 组成。AAAAAAABABBAABABABAAAAAAAABBBBBABBAABBBBBABABBBBBAABAAABABBBABAABBBBABAAABAABAAABABBBBBAABAABABAAABAABAAABABBABABBABABABAAABAABBBBBABBBABAABBBBABBBBBAAAAAAAABABABABABABAAAAAAABBBBBBBBABAABABBBBBBBBBBBAA.

2022-03-27 11:06:07 423

原创 点积和叉积【计算集合】

先简单看一道几何的题目吧。1.俩点之间的距离sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1))2.平面三角公式:p = (a+b+c)/2 S = sqrt(p*(p-a)*(p-b)*(p-c));在浮点运算时会产生精度误差,为了控制精度,一般设置一个偏差值eps,eps要大于浮点运算结果的不确定量,一般取1e-8;比较2个浮点数时,不能直接用==判断相等,可以选择用dcmp()函数来判断;二、点积和叉积。点积(Dot product)编程时计算点

2022-03-20 15:48:14 4728

原创 集合计算:求土包子(蓝桥杯)

题目描述平面直角坐标系中求一个凸包的周长C。输入描述第一行输入一个 n ,代表测试数据量接下来 n 行输入 n 个坐标 (x,y)输出描述输出 C, 结果保留 6位小数#include <bits/stdc++.h>using namespace std;const int N = 1e5;const double eps = 1e-8;int sgn(double x){ //判断x是否等于0 if(fabs(x) < eps

2022-03-20 15:37:05 252

原创 几何练习题:用圆覆盖点(蓝桥杯)

题目描述平面直角坐标系中求一个最小圆,使这个圆能包括给定的n 个点 。输入描述第一行输入一个n ,代表测试数据量接下来 n 行输入 n 个坐标 (x,y)输出描述第一行输出圆的坐标第二行输出圆的半径。输出保留6位小数#include <bits/stdc++.h>using namespace std;#define eps 1e-8const int N = 1e5+2;int sgn(double x){ if(fabs(x) <

2022-03-20 15:34:49 231

原创 马踏过河卒

A 点有一个过河卒,需要走到目标 BB 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的 CC 点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 CC 点上的马可以控制 99 个点(图中的 P1,P2 \cdots P8P1,P2⋯P8 和 CC)。卒不能通过对方马的控制点。棋盘用坐标表示,AA 点(00,00)、BB 点(nn,mm)、CC 点(c_xc​x​​,c_yc​y​​)(0 < c_x < n \leq 200<c​x​

2022-03-14 22:31:19 167

原创 树状数组入门(代码模板)

#include<bits/sdtc++.h>using namespace std;//树状数组//特点:树状数组的编码并不麻烦,代码短小精悍,效率也高//常用来解决的问题类型:查询前缀和或者区间和。const int N = 1000;#define lowbit(x) ((x) & - (x))int tree[N]={0};void update(int x, int d) { //修改元素a[x], a[x] = a[x] + d while(.

2022-03-10 21:27:38 235

学生管理系统python实现【源码】

### 一、实现要求 - 在面向对象编程思想完成学员管理系统的开发 - 学生的信息要实现永久化保存 - 系统要有如下功能: - 添加学生信息 - 修改学生信息 - 查询学生信息 - 显示所有学生信息 - 退出系统并保存学生信息 ### 二、类框架的搭建 我们需要定义两个类: - student类,存储学生的相关信息(姓名、学号、电话号码、地址)。 - StudentManagerSystem类 ,管理所有学生信息和操作学生信息。 **2.StudentManagerSystem类基本框架的定义:** - 需要定义列个列表存储学所有学生信息 - 定义一个run函数,实现学生管理系统的相关操作。 - run函数就是运行学生管理系统,运行后,首先我们需要在文件中加载已经存储好的学生信息。 - 打印学生管理系统的功能菜单 - 然后输入选项,执行相应的功能(添加、删除、查找、显示、修改、退出系统并保存) - 由于我们并不只进行一次操作所以我们需要对上诉两步进行循环操作,只有当选择退出系统操作后,才结束循环

2022-08-12

空空如也

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

TA关注的人

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