自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树的遍历

结合以上特点,我们可知根据先中遍历可以确定一颗二叉树,根据中后遍历也可以确定一颗二叉树。但是先后遍历因为无法确定根节点,所以无法确定二叉树。根据先序和中序遍历建树。

2023-04-15 23:20:58 813 1

原创 软件体系结构(期末复习)

sicnu2022软件体系结构期末考试复习笔记

2023-02-19 19:32:33 1288

原创 树上问题——树的直径

求树的直径通常有两种方法,一种是通过两次搜索(bfs和dfs均可),另一种就是通过树形dp来求了。首先递归到叶结点,然后再由叶结点连接父节点,更新。树的直径就是树中所有最短路经距离的最大值。为初始点用dfs找到离初始点最远的点。开始,用dfs找到离初始点最远的点。数组表示离点i次远的点的距离)。数组表示离点i最远的点的距离,最大的值,该值即为树的直径。

2022-09-05 17:01:34 252

原创 Oracle数据库安装及配置

将其启动类型改为手动(不然你电脑一开机,Oracle服务就会启动,开机会变慢,还占用不少内存)可以创建一个新的Windows用户来使用Oracle,也可以使用虚拟机来安装Oracle。这里口令的格式要求至少一个大写,一个小写字符加数字,且长度要大于8字符小于128字符。然后对你电脑的服务进行处理,将自动启动的oracle相关服务都改为手动。输入用户名system和在安装时设置的密码(要求大小写都有的那个)用户名密码可以用自己一开始设置的,也可以用之后添加的用户。然后再看看这些信息有没有要改的,没有就继续。

2022-09-05 16:55:37 12209

原创 字符串算法——manacher(马拉车)1/10

最长回文子串马拉车manacher字符串

2022-08-16 23:31:11 208

原创 牛客寒假基础训练营1

文章目录前言九小时九个人九扇门炸鸡块君与FIFA22Baby's first attempt on CPU牛牛做数论炸鸡块君的高中回忆中位数切分ACM is all you need前言第一次参加牛客训练营,题目真的很有挑战性 (不会做) ,题目包含的知识面很广 (其实是我知识面太窄了) 补题就花了好长的时间 (其实是我摆烂,一天也就补个一两题) ,再加上正逢春节假期,当然要好好休息啦。于是这一场的补题,从去年拖到了今年。(不会吧不会吧,不会有人过年当晚、大年初一,初二还在学习吧)九小时九个人九扇门

2022-02-04 17:34:24 734 2

原创 刷题——跳石头(二分)

链接:https://ac.nowcoder.com/acm/contest/22353/C来源:牛客网题目描述 一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终 点。在起点和终点之间,有 N 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至

2022-01-14 11:30:12 238

原创 Codeforces Round #765 (Div. 2) B

链接:https://codeforces.com/contest/1625/problem/B思路:一开始想的是双指针找相同的数,然后根据下标得到最大子串长度。后来发现会超时,于是想到了用vector+pair,来存数与对应的下标,再将数排序,那么相等的数就会相邻,然后根据下标求子串长度,再维护个最大值就行。最大子串的长度就是,前面一个数的位置+n-后面一个数的位置。我的代码:#include<bits/stdc++.h>using namespace std;typedef pa

2022-01-14 11:03:51 132

原创 刷题——栈和排序

链接 :https://ac.nowcoder.com/acm/contest/22669/A来源:牛客网题目描述 给你一个1->n的排列和一个栈,入栈顺序给定你要在不打乱入栈顺序的情况下,对数组进行从大到小排序当无法完全排序时,请输出字典序最大的出栈序列输入描述:第一行一个数n第二行n个数,表示入栈的顺序,用空格隔开,结尾无空格输出描述:输出一行n个数表示答案,用空格隔开,结尾无空格示例1输入52 1 5 3 4输出5 4 3 1 2说明2入栈;1入栈;5入栈;5

2022-01-14 10:36:27 586

原创 java头歌实训题

本关任务:设计一个程序,管理一个班级的若干学生(学生的姓名是唯一的),每个学生都修了若干门课程,没门课程都有了一个成绩。但一个班的同学修的课程不完全一样。要求:该程序用集合框架的Map接口来实现。学生用Map来存储,键用学生姓名,值是另一个存储课程的Map;每个同学修的若干门课程也用Map来存储,键是课程名称,值是该课程的成绩。将把完成的工作放在Class类中。 类名:Class public Class(String name) 构造函数,name为班级名称;public void addC

2021-12-21 20:33:22 1550 3

原创 bad apple项目试制

文章目录前言1.下载视频2.截图成帧3.用代码生成文档4.播放前言 之前就一直很羡慕大佬能制作出用字符跑bad apple的项目,一直很想试试。最近突然想到了,于是动手自己实操了一番。 项目里的很多代码都是借鉴了大佬们的,也感谢很多大佬的博客讲的很详细。 主要借鉴了以下几个大佬的博客: https://blog.csdn.net/clauyiye/article/details/78995219?spm=1001.2014.

2021-12-07 04:32:17 1969 1

原创 数据结构——并查集

什么是并查集?看这篇博客https://blog.csdn.net/liujian20150808/article/details/50848646了解了什么是并查集,我们现在来看怎么用代码来实现。核心代码带状态压缩的int find(int x)//查询老大结点{if(p[x]!=x) p[x]=find(p[x]);return p[x];}int add(int a,int b)//合并两个帮派{ p[find(a)]=find(b);//b将a引荐给自己的大哥}一

2021-12-03 15:56:27 80

原创 数据结构易错点

正确答案:C、DA:原地工作算法的含义是指算法所需要的临时空间不依赖问题的规模n,即算法的空间复杂度为O(1)并非不需要额外的临时空间。B:当n的规模较小时,O(logn)不一定比O(n)慢,具体情况具体对待。正确答案:ABDA:当时以为该函数没有返回值,便以为这不算算法,后来发现引用类型的形参也算输出,于是xyz便满足了算法必要的五个特性,算是一个合格的算法了当时以为是需要先遍历找到结点p,后来发现只要考虑插入时的操作,那么时间复杂度就是O(1)。B答案是顺序表的一个特点,链表无法.

2021-12-03 00:06:15 451

原创 二维费用的背包问题

板子题链接:https://www.acwing.com/problem/content/8/有 N 件物品和一个容量是 V 的背包,背包能承受的最大重量是 M。每件物品只能用一次。体积是 vi,重量是 mi,价值是 wi。求解将哪些物品装入背包,可使物品总体积不超过背包容量,总重量不超过背包可承受的最大重量,且价值总和最大。输出最大价值。输入格式第一行三个整数,N,V,M,用空格隔开,分别表示物品件数、背包容积和背包可承受的最大重量。接下来有 N 行,每行三个整数 vi,mi,wi

2021-12-01 14:55:29 947 2

原创 java基础学习

由于java大量的语法与c语言相似,我只在这里记录下与c语言有差别的内容。1.类的名字要大写2.ALT+/是eclipse的语法联想3.读入操作Scanner in =new Scanner(System.in)之后可用in.nextline()来读取4.shift+方向键=选行CTRL+/=注释,也可以解除注释5.类型转换,与c相似6.判断浮点数相等Math.abs(a-b)<1e-6;7.定义数组 int [] num =new int [100]数组有属性 num.leng

2021-11-18 01:10:34 454

原创 计算机及网络——概述

1.1计算机网络在信息时代中的作用List item

2021-11-17 20:53:56 601

原创 acwing3998. 变成1

链接:https://www.acwing.com/problem/content/4001/给定一个二进制数 x,在它变为 1 之前,不断对它进行如下操作:如果 x 为奇数,则将 x 加 1。如果 x 为偶数,则将 x 除以 2。请问,多少次操作后,x 会变为 1。输入格式共一行,一个 01 字符串,表示二进制数 x。输出格式一个整数,表示所需操作次数。数据范围前六个测试点满足,x 的位数不超过 11。所有测试点满足,x 的首位不为 0,且位数不超过 106。输入样例1:

2021-10-17 10:09:02 162

原创 算法——bfs(广度优先搜索)

简介宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。bfs最经典的问题就是迷宫问题,最短路问题。给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,1) 处,已知该人每次可以向上

2021-10-13 17:41:01 1233

原创 防TLE大法

今天看博客的时候,发现有题关于dfs的题,如果不做优化直接做的话,会TLE。这时评论区里有位大佬发声了。暴力算法yyds!(hhhhh,其他算法虽然难,但是还是要好好学的)。别管它时间复杂度多少,直接暴力。听我的!别和我提剪枝,优化,压位。暴它就完事了!大不了还是TLE。这总比wa了强吧!然后贴上来一段代码#pragma GCC optimize(3)#pragma GCC optimize("Ofast")#pragma GCC optimize("inline")#pragma GCC op

2021-10-10 20:53:53 119

原创 数独(dfs+优化+位运算)

链接:https://www.acwing.com/problem/content/168/来源:《算法竞赛进阶指南》数独是一种传统益智游戏,你需要把一个 9×9 的数独补充完整,使得图中每行、每列、每个 3×3 的九宫格内数字 1∼9 均恰好出现一次。请编写一个程序填写数独。输入格式输入包含多组测试用例。每个测试用例占一行,包含 81 个字符,代表数独的 81 个格内数据(顺序总体由上到下,同行由左到右)。每个字符都是一个数字(1−9)或一个 .(表示尚未填充)。您可以假设输入

2021-10-10 14:09:28 299

原创 最小的和(多路归并)

地址:https://www.acwing.com/problem/content/3998/来源:AcWing,第20场周赛给定两个长度为 n 的整数序列 a1,a2,…,an 和 b1,b2,…,bn。现在要对序列 a 进行恰好 k1 次操作,对序列 b 进行恰好 k2 次操作。每次操作具体流程为选取序列中的一个元素,并将其加 1 或减 1。要求所有操作进行完毕以后,∑i=1n(ai−bi)2 尽可能小。输入格式第一行包含三个整数 n,k1,k2。第二行包含 n 个整数 a1,

2021-10-09 23:58:22 179

原创 常用STL

vector(动态数组)为什么说是动态数组,因为它的大小我们可以不定义,在超过当前数组的上限,该容器会再申请一个当前数组两倍空间的数组,再将小空间内的数据复制到大的里面。初始化:定义具有10个整型元素的向量(尖括号为元素类型名,它可以是任何合法的数据类型),不具有初值,其值不确定vector<int>a(10);//定义具有10个整型元素的向量,且给出的每个元素初值为1vector<int>a(10,1);//用向量b给向量a赋值,a的值完全等价于b的值vecto

2021-10-07 21:09:46 47

原创 数据结构——哈希表

哈希表的使用模板有两种,个人觉得开放寻址法比较容易理解和使用,这里只用开放寻址法的模板了。模板int h[N]; // 如果x在哈希表中,返回x的下标;如果x不在哈希表中,返回x应该插入的位置 int find(int x) { int t = (x % N + N) % N; while (h[t] != null && h[t] != x) { t ++ ; if

2021-10-07 10:51:15 89

原创 石子游戏(前缀和加枚举)

原题链接https://www.acwing.com/problem/content/3996/题目描述有 n 堆石子,石子数量分别为 a1,a2,…,an。现在,需要你通过取石子操作,使得所有堆石子的数量都相同。一轮取石子操作的具体流程为:设定一个石子数量上限 h。检查每堆石子,对于石子数量大于 h 的石子堆,取出多余石子,使其石子数量等于 h。要求,在一轮取石子操作中取走的石子数量不得超过 k。请计算并输出为了使得所有堆石子的数量都相同,最少需要进行多少轮取石子操作。输入格

2021-10-04 22:15:37 298

原创 数据结构——单调队列

给定一个大小为 n≤106 的数组。有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。你只能在窗口中看到 k 个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为 [1 3 -1 -3 5 3 6 7],k 为 3。窗口位置 最小值 最大值[1 3 -1] -3 5 3 6 7 -1 31 [3 -1 -3] 5 3 6 7 -3 31 3 [-1 -3 5] 3 6 7 -3 51 3 -1 [-3 5 3] 6 7 -3 51 3 -1 -3 [5

2021-09-23 18:26:41 74

原创 数据结构——单调栈

给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。输入格式第一行包含整数 N,表示数列长度。第二行包含 N 个整数,表示整数数列。输出格式共一行,包含 N 个整数,其中第 i 个数表示第 i 个数的左边第一个比它小的数,如果不存在则输出 −1。数据范围1≤N≤1051≤数列中元素≤109输入样例:53 4 2 7 5输出样例:-1 3 -1 2 2#include <iostream>#include <cstr

2021-09-23 16:38:48 232

原创 数据结构——trie树

什么是trie树Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串)、敏感词过滤。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。Trie树也有它的缺点,Trie树的内存消耗非常大。** 典型的trie树**代码模板插入函数int son[N][26],idx;//son数组中

2021-09-10 19:24:02 132

原创 算法——背包问题

01背包问题有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入

2021-08-21 01:12:27 1160

原创 逆序对——归并排序求解

---------------------------------琪露诺的排序---------------------------------------------描述笨蛋琪露诺喜欢用冰块搭积木。这天她用她的能力制造了N根冰柱作为材料,但这些冰柱显得参差不齐,不过好在她知道这些冰柱的高度。患有强迫症的小妖精琪露诺决定将这N根冰柱从小到大排列,不幸的是,琪露诺是个笨蛋,她只能将相邻的两根冰柱调换位置。现在她想知道她最少需要进行几次调换才能使这些冰柱变得有序。输入输入共两行。第一行N(

2021-08-18 16:21:58 74

原创 算法——威佐夫博弈

------------------------------------------小游戏---------------------------------------描述富婆和大力去西天取经的路上遇见了两堆石子,数量任意,可以不同。他们觉得旅途太无聊于是决定开始玩一场激情的小游戏,游戏开始后由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,(因为富婆极其霸

2021-08-17 21:53:57 176

原创 算法——进制转换

---------------------------------------------sky 数---------------------------------------描述AI有一天发现一种奇怪的四位数它的十六进制,十进制,十二进制的数字之和是相同的,这样的数就被称为sky数。例如2992,其四位数字之和为2+9+9+2=22,它的十六进制数为BB0,其各位数字之和也为22,同时它的十二进制数表示1894,其各位数字之和也为22。下面你要对一些sky数进行判断。输入输入多个四位正

2021-08-17 21:26:55 175

原创 算法——递归习题

-----------------------------------------------logo----------------------------------------描述川师的ACM里面有很多大佬,其中就包括ACM创世の神宋学姐,相传她在创世时ak了所有的ACM题并且设计了一自己的一个logo已让后代瞻仰。一层的logo如图所示:SSSY二层的logo如图所示:SSSSSYSYSSYYSYYS我们很容易发现logo是通过将阶数为k-1的logo的窗

2021-08-16 23:01:57 130 5

原创 算法——DFS

前言由于DFS没有具体的模板,所以通过具体的题目来了解该算法。---------------------递归实现组合型枚举---------------------------------------从 1∼n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。输入格式两个整数 n,m ,在同一行用空格隔开。输出格式按照从小到大的顺序输出所有方案,每行 1 个。首先,同一行内的数升序排列,相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排

2021-08-13 22:31:47 108

原创 算法——前缀和与差分

代码模板前缀和:一维 S[i] = a[1] + a[2] + ... a[i] a[l] + ... + a[r] = S[r] - S[l - 1]二维S[i, j] = 第i行j列格子左上部分所有元素的和以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵的和为:S[x2, y2] - S[x1 - 1, y2] - S[x2, y1 - 1] + S[x1 - 1, y1 - 1]差分:一维给区间[l, r]中的每个数加上c:B[l] += c, B[r + 1]

2021-08-09 22:03:23 42

原创 算法——高精度运算

算法介绍主要用于处理较大数的加减乘除,阶乘,乘方的运算。由于c/c++的long long int最大范围为-9223372036854775808~+9223372036854775807,当数大于这个范围就要用到高精度运算,即用数组来存储数的每一位,模拟运算的过程来改变数组中的数,以达到正常运算的效果。算法模板高精度加法:// C = A + B, A >= 0, B >= 0vector<int> add(vector<int> &A, vecto

2021-08-08 22:19:04 130

原创 排序——归并排序

模板void merge_sort(int q[], int l, int r){ if (l >= r) return; int mid = l + r >> 1; merge_sort(q, l, mid); merge_sort(q, mid + 1, r); int k = 0, i = l, j = mid + 1; while (i <= mid && j <= r) if (q

2021-08-07 23:50:03 50

原创 排序-快速排序

题目给定你一个长度为 n 的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5模板#include<iostream>using namespace std;const

2021-08-06 23:24:12 248

原创 起床困难综合征(位运算)

链接:https://ac.nowcoder.com/acm/contest/996/E来源:牛客网题目描述21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳。作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争。通过研究相关文献,他找到了该病的发病原因:在深邃的太平洋海底中,出现了一条名为 drd 的巨龙,它掌握着睡眠之精髓,能随意延长大家的睡眠时间。正是由于 drd 的活动,起床困难综合症愈演愈烈,以惊人的速度在世界上传播。为了彻底消灭这种病,at

2021-08-06 00:02:06 131

原创 哈士顿图(状压dp)

链接:https://ac.nowcoder.com/acm/contest/996/D来源:牛客网题目描述给定一张 n(n≤20) 个点的带权无向图,点从0 ∼n−1标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。示例1输入40 2 1 32 0 2 11 2 0 13 1 1 0输出4思路a[i][j],中i来表示选择点的情况,0<i<=1<<n(&

2021-08-05 22:41:38 57

原创 算法——快速幂

题目链接:https://ac.nowcoder.com/acm/contest/996/A来源:牛客网求 a 的 b 次方对 p 取模的值,其中 0 <=a,b,p <=10^9​ 0≤a,b,p≤10 ^9.分析:该题如果用正常方法来算肯定会超时,这时我们可以用我们的天降猛男——快速幂来解决这个问题。快速幂的简单原理例如:2500对4399取模,可以转化为4250对4399取模,同理,以此类推,8125%4399…………,当指数为奇数时,我们可以看成41*4124%4399

2021-08-04 23:20:13 125

空空如也

空空如也

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

TA关注的人

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