自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构代码

1.线性表1.顺序表typedef struct{ int data[maxSize]; int length;}Sqlist; 2.单链表typedef struct LNode{ int data; struct DLNode *next;}LNode;3.双链表typedef struct DLNode{ int data; struct DLNode *prior; struct DLNode *next;}DLNode;2.栈和队列1.顺序栈int st

2021-10-18 20:43:45 952

原创 操作系统期末考试重点总结【全】

计算机操作系统第一章计算机系统概述第二章:进程管理第三章:内存管理第四章:文件管理第五章:输入/输出管理第一章计算机系统概述操作系统的概念、特征、功能和提供的服务概念:操作系统是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作和资源分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的系统软件特征:并发、共享、虚拟、异步1)并发是指两个或多个事件在同一时间间隔内发生,操作系统的并发性是指计算机系统中同时存在多个运行的程序,因此它具有处理和

2021-09-01 21:35:22 14522

原创 《数据结构》知识点汇总+算法代码总结【全】

写在前面:本文写于吴签时期,在家备考时刷完数据结构王道书之后想着把书中重点梳理汇总一下。本文内容包括但不局限于王道数据结构每章的知识点及其课后习题所涵盖的知识点。本人曾在大三期间打过一些程序设计类比赛,所以本文所涉及到的代码不一定局限于王道书,但思想都一样。期末复习和备考408均可使用第一章:绪论(不在考研大纲但很重要)第二章:线性表第三章:栈和队列第四章:串第五章:树与二叉树第六章:图第七章:查找第一章:绪论(不在考研大纲但很重要)数据结构三要素:逻辑结构、存储结构、数据的运算;其中逻辑结构包括线

2021-08-13 21:53:08 65003 6

原创 《数据库系统概论》期末考试重点总结【全】

又是划水的一个学期。马上要期末了,整理一下这本书要考到的一些重点,本文只列出理论部分,代码部分自行总结。第一章:绪论1.数据库的四个基本概念:数据、数据库、数据库管理系统和数据库系统2.数据是数据库中存储的基本对象,描述事物的符号记录称为数据3.数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。4.数据库的特点:独立性、易扩展性、较小的数据冗余、可为各种用户共享5.数据库管理系统是位于用户与操作系统之间的一层数据管理软件6.数据库管理系统的功能:数据定义功能,数据存储、组织和管

2020-06-02 10:49:09 10069

原创 浅谈HUSTOJ后端源码 (一)【学习路径+源码分析】

写在前面:该文章只针对学习开发后端HUSTOJ的Judged、Judge_client部分(目前不研究sim部分)代码的同学。 默认你已了解HUSTOJ是个什么东西和他的所分的各个部分的功能。并且你已经在你的电脑上搭建好了本地的HUSTOJ首先我想说题主目前是普通本科大二在读生,如果某些方面写的不详细或不太正确的地方还请见谅,欢迎在下面留言交流。好,接下来进入正文。先谈下学习源码之前的准备工作1.如果你想了解HUSTOJ后端源码具体都是写什么意思,你要熟练掌握c语言,(自己用c语言写过几千几万行代

2020-05-23 15:48:43 10671

原创 PTA-520钻石争霸赛题解【c/c++ 完整思路+代码】

写在前面:因为在家上课水了一学期的网课,最近开始着手复习(预习)。所以这次做这个比赛明显感觉到有点生疏了,这东西还是得每天练一点保持一点手感。 1个小时八道题,我写完前六道的时候记得时间只剩24分钟左右了,又花了点时间改第六题,导致最后没时间细看第七题。7-1 考试周:思路:这题我记得我做的时候大致看了下题没太看懂,然后看了一下输入输出样例发现就是除一下就行,代码如下:#include<bits/stdc++.h>using namespace std;inline void re

2020-05-21 08:38:51 4009 1

原创 倍增法LCA【模板】

#include<bits/stdc++.h>using namespace std;const int N=5e5+10;struct zzz{int t,nex;}e[N<<1];int head[N],tot;int depth[N],fa[N][22],lg[N];inline void read(int &x){ int w=1;x=0;...

2020-04-29 16:08:47 385

转载 一文掌握MySQL语句【全】

零、用户管理:  1、新建用户:    >CREATE USER name IDENTIFIED BY 'ssapdrow';  2、更改密码:    >SET PASSWORD FOR name=PASSWORD('fdddfd');  3、权限管理    >SHOW GRANTS FOR name;    //查看name用户权...

2020-04-26 16:48:44 204

原创 HUSTOJ后端代码中makefile解读

HUSTOJ分为前端和后端两部分 web和core。后端又分为judge_client judged sim 三部分然后本文写的是 core,judge_client,judged三个文件夹下面的makefile,读懂makefile可以有效的帮助你理解大体的运行流程。如果有好的见解,欢迎私聊我交流或者在下方评论 我的个人邮箱:[email protected]#!/bin/bash ...

2020-04-24 10:41:35 389 5

转载 一文学会Makefile【全】

<div id="article_content" class="article_content clearfix" style="height: 2382px; overflow: hidden;"> <link rel="stylesheet" href="https://csdnimg.cn/release/ph...

2020-04-24 10:20:50 227

转载 在Linux中使用chmod修改权限命令【全】

声明:本文转自Linux命令:修改文件权限命令chmod详解 Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。文件或目录的访问权 限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文...

2020-04-24 10:12:55 849 1

原创 染色法判断二分图模板

#include<bits/stdc++.h>using namespace std;const int N=100010,M=200010;int h[N],e[M],w[M],ne[M],idx,n,m,color[N];inline void add(int a,int b,int c){ e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx...

2020-04-12 17:46:52 167

原创 使用数组来模拟各种数据结构【c/c++ 模板】

#include<bits/stdc++.h>const int N=100010;//数组模拟单链表 int ne[N],n[N],head=-1,idx=0,a;void add_head(int x) {n[idx]=x,ne[idx]=head,head=idx++;}void add(int k,int x) {n[idx]=x,ne[idx]=ne[k],ne[k...

2020-04-03 16:39:32 219

原创 hustoj二次修改汇总【持续更新】

前排提示:我是一名初学者,对于这个领域还有很多很多未知的部分没有探索。我是在Vmware上用ubuntu装的hustoj,本文提到的一切修改基于此。去除广告如果是用的源码的话,首页里会有广告推广。然后在源码中找到 /home/judge/src/web/template/bs3 下面的js.php然后在里面找汉字的位置就行了(全是英文找汉字应该不难找)删除掉后广告就去除完成了。如下图所...

2020-03-19 19:22:56 1659

原创 最长上升子序列【leetcode每日一题】【LIS完整优化思路】

写在前面:说来也巧,昨天刚在洛谷上做线性dp,在学习LIS和LCS的优化问题,今天每日一题就出了这道LIS。思路:首先说朴素算法的思路,首先我们要定义一个集合,我们不妨以dp【i】表示数组中以第i位结尾的最长上升子序列的长度,然后从左往右依次迭代就可以了。然后我们需要确定状态,dp【i】表示数组中以第i位结尾的最长上升序列长度,那么它和之前dp【0~i】有什么关系呢?如果nums【i】&...

2020-03-14 08:58:12 265

原创 字符串的最大公因子【leetcode每日一题】

其实最开始我的思路是找到str1和str2的最小周期串,然后比较比较两个周期串是否相等,当然如果某个没有周期的话直接返回空串。后来看了一下题解,感觉学到了。。。。啊哈哈哈哈!大致思路如下:1.str1是由m个str组成的,str2是由n个str组成的,那么m+n个str就等于n+m个str,所以只要判断str1+str2==str2+str1就能判断它是否具有最大公因子.2.如果第一步满...

2020-03-12 07:51:55 250

原创 将数组分成和相等的三个部分【leetcode每日一题】

思路:1.首先数组里面的数小于三个,直接返回false;2.对数组里面的数求和,和不是3的整数倍,直接返回false;3.从左往右遍历,如果s为和的1/3,就让cnt++,s=0;在第三步考虑到如果你求出来三个区间满足但是最后还有剩余怎么办?没关系,我们接着加,最后只要判断cnt==3并且剩余的几个数的和s等于0就可以了。这个思路非常直接,也不用考虑什么细节,适合新手学习,如果有问题...

2020-03-11 08:21:09 712

原创 买卖股票的最佳时机

大致思路如下:从左往右遍历,先用一个变量记录第一个数,然后第二个数开始,如果比记录的数小,就重新赋值,否则就计算这两个数的差值。遍历完一遍之后也就找到了最大的差值。时间复杂度O(n),空间复杂度O(1)代码如下:class Solution {public: int maxProfit(vector<int>& prices) { if(price...

2020-03-09 07:30:38 130

原创 零钱兑换【leetcode每日一题】

这道题我刚开始做的时候就觉得是完全背包,每种无限个,且每个都有它的价值,要求在目标价值下求背包中装的个数最小(当然完全背包原型是求得最大,不过都一样)。下面直接上这个方法的代码,算是板子吧:class Solution {public: int coinChange(vector<int>& coins, int amount) { int Max...

2020-03-08 10:01:35 192

原创 作为OIer的起手代码

别人分享的,自己保存下,如有侵权,联系立删(几行代码。。应该不至于。。啊哈哈哈哈)//#pragma comment(linker, "/stack:200000000")//#pragma GCC optimize("Ofast")//#pragma GCC optimize(3)//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt...

2020-03-06 16:49:46 820

原创 和为s的连续正数序列【leetcode每日一题】

思路:注意题目上说是连续的一串数。判断连续的一串数是否满足一定的性质可以转化为在一个区间内这些数是否满足一定的性质,那么这道题就可以用我们喜闻乐见的滑动区间来做了。模拟过程:我们可以设一个初始区间,左边界l=1,右边界r=2.在这个区间内,数字之和就是等差数列求和:sum=(l+r)*(r-l+1)/2如果sum<target 那么说明这个区间太小了,就让右边界向右移动扩大区间如果...

2020-03-06 08:50:39 278

原创 腐烂的橘子【leetcode每日一题】

这道题算是一个搜索的板子题了。多源的宽度优先搜索。大致思路如下:1.首先遍历统计初始数组中有多少好橘子和坏橘子如果没有坏橘子,返回-1;如果没有好橘子,返回0;2.当好橘子不为0得时候,开始每轮的循环。时间数加1,然后里面所有坏橘子感染周围的好橘子。结束后判断这一轮感染完好橘子数有没有减,没有返回1.有的话且不为0继续下一轮感染,最后就得到了感染时间代码如下:int oranges...

2020-03-04 08:32:21 257

原创 合并排序的数组【leetcode每日一题】

这道题并不难,或许每个人都能想到直接赋值给A,然后再排序就完了。然后我刷这道题学到了这种双指针的做法。1.一个指针t1指向A的最后一个数(3),一个指针t2指向B的最后一个数(6);2.如果t1>t2,就把t1插到(t1+t2-1)的位置然后指针t1向前移动一格反之,就把t2插到(t1+t2-1)的位置然后指针t2向前移动一格3.直到t1或者t2有一个指针走完了全部路程。如果是t...

2020-03-03 16:33:34 212

原创 打家劫舍 II

相较于打家劫舍,算是一个升级版。既然是打家劫舍的升级版,那我们就先找与原版之间的联系。做过打家劫舍之后我们知道状态转移方程是dp[i]=max(dp[i-1],dp[i-2]+nums[i-1])。然后我们再来看这道题,由相邻的一家变成了相邻的两家。那么就相当于把原来的一条直线首尾相连变成了一个环,这句话你细品,哈哈。所以我们要做的就是把这个环怎么变成直链,因为首尾相连,所以我们如果偷第一家就...

2020-03-03 15:42:33 321

原创 最小生成树

Prim算法:#include<bits/stdc++.h>using namespace std;const int N=1010,inf=0x3f3f3f3f;int n,m,dist[N],mp[N][N];bool st[N];int prim(){ int res=0; memset(dist,0x3f,sizeof dist); for(int i=0...

2020-03-02 10:44:45 220

原创 7-2 Huffman Codes (30分)【完整思路+46行代码】

咳,对于不会建树也懒得建树的我。看到网上上百行建树的题解就头疼。所以我一直在想如何不建树AC掉这道题,还好。。没白花时间。。。首先要清楚哈夫曼编码的概念,我想能做L3的人底子应该不太差,哈夫曼的原理肯定都知道,我就不再赘述了。但是做这道题还是要知道哈夫曼编码的特征或者性质。1.编码后路径权值如何求? 其实哈夫曼编码类似于贪心,每次取最小和次最小的,将他俩合并。以此类推到最后全部合并完...

2020-03-01 11:50:12 741 2

原创 数组模拟二叉搜索树

void build(int idx,int x){ if(a[idx]==0) a[idx]=x; else if(x>a[idx]) build(idx<<1|1,x); else if(x<a[idx]) build(idx<<1,x);}

2020-02-29 21:10:54 456

原创 ZUA_Coder天团假期欢乐赛总结【全】

写在前面:这次出题的时候其实很纠结,好久不见也不知道大家水平提高了多少,害怕出的题目难了很少有人做出来,又怕出的题简单了丧失了比赛的意义。下面我大致分析一下这套题。我们出题的时候我个人计划的是不能还像刚学完c语言那样,只要脑子快,for循环全能解出来。所以这次算法题占大多数。...

2020-02-29 18:13:14 3151

原创 不同路径 II

class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m=obstacleGrid.size(),n=obstacleGrid[0].size(); vector<vector<...

2020-02-28 09:54:27 277

原创 最长有效括号

class Solution {public: int longestValidParentheses(string s) { vector<int>dp(s.size(),0); int maxn=0; for(int i=1;i<s.size();i++) { if(s[i]=...

2020-02-28 09:01:50 265

原创 最长回文子串

dp[i][j]存放的是[i,j]是否是回文区间dp[i][j]=dp[i+1][j-1]&&(s[i]==s[j])去除两端之间的子串是回文子串,且两端相等class Solution {public: string longestPalindrome(string s) { int maxn=0,len=s.length(); s...

2020-02-27 21:11:45 259

原创 圆圈中最后剩下的数字

如果开始圈子里只有一个人,就返回0;如果不是一个人,那么删去一个人后 状态变为dp【n-1,m】 ,原先 第m+1位置的人因为m没了坐在了第m的位置 并且从他开始编号为0 所以是m向0转移所以调用(dp(n-1,m)+m)%n【递推】class Solution {public: int lastRemaining(int n, int m){ if(n==1) ...

2020-02-27 20:27:47 347

原创 连续子数组的最大和

class Solution {public: int maxSubArray(vector<int>& nums) { int sum=0,maxn=-1000000; for(int i=0;i<nums.size();i++) { if(sum<0) sum=nums[i]...

2020-02-27 20:17:29 192

原创 字符串最大跨距

#include<bits/stdc++.h>using namespace std;int main(){ string s,s1,s2; int i=0; char a; while(cin>>a) if(a!=',') { if(i==0) s+=a; else if(i==1) s1+=a; else s2+=a; }...

2020-02-27 16:02:07 1019

原创 字符串移位包含问题

#include<bits/stdc++.h>using namespace std;int fun(string s,string t){ int len=s.length(); while(len--) { if(s.find(t)!=string::npos) return 1; s.push_back(s[0]); s.erase(s.begin...

2020-02-27 15:52:41 279

原创 把数字翻译成字符串

dp[i] 表示以第i位字符结尾的字符串 有多少种解码方式分为两种状态:1。第i位单独解码 那么dp[i]=dp[i-1];2。如果第i-1位和第i位可以组合 那么相对于前i-2位的字符串来说 就相当于加上了一个二位数此时dp[i]=dp[i]+dp[i-2];代码如下:class Solution {public: int getTranslationCount(s...

2020-02-25 17:41:26 194

原创 五种最短路算思路及其代码实现【全】

刚看完Acwing上面y总的最短路视频,过来写一篇博客总结一下,也希望能帮助到别人先上一张图,刚用这个画图软件,可能画的比较拙劣根据图片我们可以知道,最短路问题分为单源最短路和多源最短路。单源最短路:只有一个出发点。求出来的应该是一个一维数组,保存该点到各点最短距离多源最短路:有多个出发点,那么求出来应该是一个二维数组,每行表示一个上面的一维数组。首先说一下多源最短路把。Floyd算是...

2020-02-24 09:30:52 3375

原创 单调栈【完整思路+代码】

看到这道题,首先我们会想到的肯定是暴力模拟。外层循环i是每个数,内层循环j是从i-1到最开头,找第一个比i小的数。这样做的话,如果数据是10的5次方,那么双重循环时间是非常可怕的。然后我们来分析一下上面这个思路,看看有哪里可以优化。因为找的肯定是比他小且最接近的数,那么如果第2个数比第一个数小,对于第三个数来说第一个数肯定是没用的(因为第二个距离第三个数更近),而且对于第四个第五个以至于第n个...

2020-02-23 10:24:20 372

原创 数组模拟双链表【头插,尾插,中插,删除】

#include <iostream>#include <algorithm>using namespace std;const int N = 100010;int e[N], l[N], r[N], idx;void init(){ r[0] = 1, l[1] = 0; idx = 2;}void add(int k, i...

2020-02-23 09:55:03 258

原创 数组模拟单链表【头插,中插,删除】

代码如下:#include<bits/stdc++.h>using namespace std;const int maxn=100010;int head,e[maxn],ne[maxn],idx,m;void add(int x){ e[idx]=x; ne[idx]=head; head=idx++;}void insert(int k,int x){...

2020-02-23 09:51:15 361

空空如也

空空如也

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

TA关注的人

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