自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 自顶向下伸展树(Splay Tree)的实现、分析以及可视化(C++)

演示程序截图问题描述伸展树是一种二叉搜索树,伸展树具有的特点是:当某个节点被访问时,伸展树会通过旋转使该节点成为树根。基本要求(1)设计并实现伸展树 (Splay Tree) 的 ADT,该 ADT 包括 Tree 的组织存储以及其上的基本操作:包括初始化,查找,插入和删除,拆分和合并等。并分析基本操作的时间复杂性。(2)实现伸展树(Splay Tree ) ADT 的基本操作演示(鼓励应用图形界面)。(3)采用伸展树,编写一个计算文本文件中单词的出现频率的程序并通过实验结果验证伸展树 (Sp

2020-07-25 18:58:28 1191

原创 bomb二进制炸弹拆除实验(MIPS)

上学期计算机系统基础课程的一个实验,在这里再简略整理一下:实验要求:仅给定一个MIPS二进制可执行文件bomb,要求运用GDB调试工具,通过分析反汇编代码来输入正确的参数以拆除炸弹。辅助工具推荐:静态反编译软件 IDA Pro实验步骤:由于前几个炸弹较为简单,故只重点叙述一下最后两个炸弹的拆弹过程。PHASE_1:通过阅读phase_1的反汇编代码,在0x00400...

2020-03-02 11:42:52 4598

原创 跳表的实现、分析以及可视化(Qt C++、Graphviz)

演示程序截图实现功能跳表初始化跳表的查找操作跳表的插入操作跳表的删除操作(指定关键字的元素、关键字最小的元素、关键字最大的元素)跳表可视化程序结构设计初始化模块:void Initialization(int n);查找模块:void find(const K&);插入模块:void insert(const pair<const K, E>&);删除模块:指定关键字的元素:void erase(const K&);关键字最小的元素:v

2020-07-25 19:02:18 2188 3

原创 森林与二叉树之间的转换以及可视化演示(C++实现)

演示程序截图基本要求构造并实现森林的ADT和二叉树ADT,森林ADT中应包括初始化、插入元素、删除元素,插入边,删除边,转换成二叉树,显示森林及对应的二叉树等基本操作,二叉树ADT中应包括初始化、插入根、插入指定元素的左孩子或右孩子,转换成森林,显示二叉树及对应的森林等基本操作。(基本操作可根据问题需要扩展)森林使用孩子链表表示,二叉树使用二叉链表表示,实现森林和二叉树结构。问题分析该程序所应实现的功能如下:(1)二叉树与森林的初始化(2)二叉树与森林的插入操作(二叉树插入结点、森林插入

2020-07-25 19:01:30 2317

原创 应用竞赛树结构模拟实现外排序(C++实现)

基本要求(1)设计实现最小输者树结构 ADTADTADT,ADTADTADT 中应包括初始化、返回赢者、重构等基本操作。(2)设计实现外排序,外部排序中的生成最初归并串以及 KKK 路归并都用最小输者树结构实现;(3)随机创建一个较长的文件;设置归并路数以及缓冲区的大小;获得外排序的访问磁盘的次数并进行分析,可采用小文件来模拟磁盘块。问题分析(1)设计并实现最小输者树(2)应用最小输者树结构实现生成初始顺串(3)应用最小输者树结构实现 KKK 路归并(4)随机生成较长文件,设置归并路数以及缓

2020-07-25 19:00:22 3509 3

原创 分治算法:残缺棋盘可视化(Qt C++)

演示程序截图问题描述残缺棋盘(defective chessboard):是一个有 2k×2k2^k×2^k2k×2k 个方格的棋盘,其中恰有一个方格残缺。对于任意 kkk,恰好存在 22k2^{2k}22k 种不同的残缺棋盘。在残缺棋盘中,要求用三格板(triominoes)覆盖残缺棋盘。在覆盖中,任意两个三格板不能重叠,任意一个三格板不能覆盖残缺方格,但三格板必须覆盖其他所有方格。基本要求输入棋盘大小和残缺方格的位置,输出覆盖后的棋盘。输出棋盘时要着色,共享同一边界的覆盖应着不同的颜

2020-07-25 18:59:34 1895

原创 快速搭建腾讯云服务器并上传本地WEB项目(PHP+MYSQL)

前言暑期学校选了《Web前端开发》,要交作业…有点懒 2333,就想把上上学期数据库课设的前端尽量改改完善一下上交本地打包没法连数据库只好放到服务器上辽~准备工作购买腾讯云服务器安装 XShell腾讯云学生认证(申请域名)具体步骤1. 重装系统这里选择 CentOS、公共镜像2. XShell新建会话连接我们的云服务器设置主机与会话名称用户身份验证用户名一般为 root,密码是腾讯云服务器的密码建立连接可能出现的坑点以及解决方案:第一次建立连接时可能会

2020-07-09 09:32:17 1021

原创 动态规划(线性、坐标型)

引入POJ - 1163 The Triangle在给定的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。(三角形的行数大于1小于等于100,数字为 0 - 99)Sample Input573 88 1 02 7 4 44 5 2 6 5Sample Output30解题思路D(i,j)D(i,j)D(i,j...

2020-06-26 22:15:04 274

原创 差分约束、拓扑排序、强连通分量(笔记整理)

差分约束系统概念一种特殊的 nnn 元一次不等式组,包含 nnn 个变量以及 mmm 个约束条件每个约束条件是由两个其中的变量做差构成的,形如 xi−xj≤ckx_i-x_j≤c_kxi​−xj​≤ck​ ,其中 ckc_kck​ 是常数要解决的问题:求出一组界 x1=a1,x2=a2,...,xn=anx_1=a_1,x_2=a_2,...,x_n=a_nx1​=a1​,x2​=a2​...

2020-06-26 12:13:14 145

原创 P5020 货币系统(贪心+背包DP)

题目链接唉,就是一个凑数问题,一开始没想到是背包,所有数从小到大排序,遍历一遍,直接 DFS 加点剪枝判断已被选入 b 系统的数能否凑成当前的数,不能凑就加到 b 里,后面搜索层数变多肯定会 T 掉(如果这个题能想到背包了的话,就能水过去了…,还是太菜了)#include <bits/stdc++.h>using namespace std;const int maxn=3e4;int ans,t,n,a[maxn];bool flag;vector<int> b;

2020-06-24 16:30:47 208

原创 P5019 铺设道路(暴搜/DP/贪心)

题目链接#include <bits/stdc++.h>using namespace std;const int maxn=1e5+10;const int inf=1e9;int ans=0,n,d[maxn];void solve(int l,int r){ if(r-l<=1){ ans+=max(d[l],d[r]); return; } int tmp=inf,idx; for(int i=l;i<=r;i++){ if(tmp>

2020-06-24 16:25:20 240

原创 P5687 [CSP-SJX2019] 网格图(Kruskal扩展)

题目链接Kruskal 思想的扩展,一开始想到了贪心取各行各列中的最小边权,但是没有把握好环的判断问题,只敲了个裸的 Kruskal 水了水,后面参考了洛谷第一篇的题解,其实就是简单地记录一下已经取的行/列的数目就行啦…#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=310*310;const int maxm=310*310*2;int n,m,tot,idx=0,f

2020-06-23 22:48:22 305

原创 P5686 [CSP-SJX2019] 和积和(前缀和)

题目链接首先感谢 yhf dalao 找的考前模拟题!!!!????题目名称其实也给暗示了,不过没想到后面的积的套娃前缀和,这道题要特别注意的是取模操作,要在每一项后面加一个 mod 然后再取模,不然可能会出现溢出后为负数的现象#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=500010;const ll mod=7+1e9;ll n,a[maxn],b[maxn]

2020-06-23 22:42:56 397

原创 SDU《程序设计思维与实践》课程个人感想

  这门课到此也就宣告结束了呀,回想过去居家学习的 16 周真的是既辛酸又充实…  由于是非竞赛生,之前没怎么接触过算法刷题这一方面,唯一学的点算法也是来自上学期的数据结构,回想刚开始上这门课的时候,真的是十分吃力!!比如第二周几个简单的模拟题一个也没做出来,之前的一些小测试也几乎都是屡战屡败,有时候一些小小作业题也要思考很久。  唉 ~ 受到一些打击后,同时也还是因为不甘落后吧,决定要多加练习啊!屡战屡败,屡败屡战!从基础做起!  作为一个慢热型学习的晚期患者…一开始课程内容没大跟上,窝在家里上网课

2020-06-03 20:40:33 1959

原创 Week16 - 程序设计思维与实践 - 第四次CSP模拟

思路err…送分题 ,后面 T 了四个点,注意:这道题卡了 stl 和 cin代码实现#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e6+10;int n,k,ans=0,a[maxn];bool vis[10];char s[20];int main(){ scanf("%d%d",&n,&k); for(int i=1;i<=..

2020-06-03 18:29:50 364

原创 Week15 - 程序设计思维与实践 - 字符串算法

题目链接A - ZJM 与霍格沃兹(必做)ZJM 为了准备霍格沃兹的期末考试,决心背魔咒词典,一举拿下咒语翻译题题库格式:[魔咒] 对应功能背完题库后,ZJM 开始刷题,现共有 N 道题,每道题给出一个字符串,可能是 [魔咒],也可能是对应功能ZJM 需要识别这个题目给出的是 [魔咒] 还是对应功能,并写出转换的结果,如果在魔咒词典里找不到,输出 “what?”Input首先列出魔咒词典中不超过100000条不同的咒语,每条格式为:[魔咒] 对应功能其中“魔咒”和“对应功能”分别为长度不超

2020-05-28 10:00:08 329

原创 CodeForces - 1249D2 Too Many Segments (hard version) (贪心/差分数组)

题目链接题意给定 nnn 个区间 [l,r][l,r][l,r],区间 [l,r][l,r][l,r] 覆盖 l−rl-rl−r 的所有点(包括端点),要求去除最少的区间,使得每个数被覆盖的次数小于 kkk (数据范围均为 111 到 2∗1052*10^52∗105)思路看数据范围至少得选用 O(nlogn)O(nlogn)O(nlogn) 的算法求解代码实现setsetset#include <iostream>#include <cstdio>#include

2020-05-24 10:48:36 249

原创 CodeForces - 436A Feed with Candy (模拟/贪心)

题目链接题意略思路贪心求解,尽可能去取获得能量大的糖果,然后再从头枚举取合适的糖果,这里从头枚举的话要把 iii 设为 −1-1−1 ,一开始设为 000 (憨),然后 i++i++i++ 后就从第二个开始枚举了…代码实现#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namesp

2020-05-23 18:37:51 319

原创 CodeForces - 1199C MP3 (逆向求解/滑动窗口)

题目链接题意大小为 nnn 的数组,KKK 个不同值,需要 k=ceil(log2K)k=ceil(log2K)k=ceil(log2K) 位存储每个值,整个数组需要 nknknk 位存储,现在需要压缩到 8∗I8*I8∗I ,求需要改变的数的最小值。思路首先题目关注的是不同的值以及每一个值相对应的个数,先存入 mapmapmap 处理正向求解的话需要枚举每个符合条件的区间,比较麻烦,逆向求解则只需求出 kkk 的最大值,然后维护一个大小为 kkk 的滑动窗口,不断更新答案即可。代码实现#

2020-05-23 18:32:30 319

原创 CodeForces - 1236D Alice and the Doll (模拟/贪心/二分)

题目链接题意n∗mn*mn∗m 大小的方格图,起点 (1,1)(1,1)(1,1) ,给定 kkk 个障碍物,每次只能直行或右拐,初始方向为右,问是否能走遍除障碍物之外的所有方格。(1≤n,m≤105,0≤k≤105)(1≤n,m≤10^{5},0≤k≤10^5)(1≤n,m≤105,0≤k≤105)思路err…还是看数据范围,跑 DFS 妥妥的 TLE,一开始也没大有思路优化,然后参考了 这篇blog首先利用贪心的思想进行分析如果没有障碍物那么路径肯定是螺旋矩阵形的,当前方无障碍物时肯定会

2020-05-23 18:21:26 230

原创 CodeForces - 1196C Robot Breakout(坐标类模拟)

题目链接题意给定 nnn 个机器人的坐标,每个机器人有上下左右四种方向可以移动当且仅当相应的 fj=1f_{j}=1fj​=1 ,求一个坐标 (X,Y)(X,Y)(X,Y) 使得所有机器人都能够到达。ps:机器人停止移动当且仅当已经到达 (X,Y)(X,Y)(X,Y)或已经无法再接近 (X,Y)(X,Y)(X,Y)思路由于机器人个数、查询次数、坐标范围都是 10510^5105 级别,枚举的话肯定 gg…这里只需要根据输入信息去逐渐缩小 (X,Y)(X,Y)(X,Y) 的范围,最后判断是

2020-05-23 18:01:46 211 1

原创 Week14 - 程序设计思维与实践 - HDU3700 - Cat(限时模拟)

Problem DescriptionThere is a cat, cat likes to sleep.If he sleeps, he sleeps continuously no less than A hours.For some strange reason, the cat can not stay awake continuously more than B hours.The cat is lazy, it could sleep all the time,but sometim

2020-05-23 10:12:21 271

原创 Week14 - 程序设计思维与实践 - 矩阵快速幂(+优化DP)

题目连接A - Q老师与石头剪刀布(必做)题意每一个大人曾经都是一个小孩,Q老师 也一样。为了回忆童年,Q老师 和 Monika 玩起了石头剪刀布的游戏,游戏一共 n 轮。无所不知的 Q老师 知道每一轮 Monika 的出招,然而作为限制, Q老师 在这 n 轮游戏中必须恰好出 a 次石头,b 次布和 c 次剪刀。如果 Q老师 赢了 Monika n/2(上取整) 次,那么 Q老师就赢得了这场游戏,否则 Q老师 就输啦!Q老师非常想赢,他想知道能否可以赢得这场游戏,如果可以的话,Q老师希望你能告

2020-05-21 10:59:26 361

原创 动态规划(树形DP)总结

树的直径HDU 2196 Computer实验室里原先有一台电脑(编号为1),最近实验室又购置了N-1台电脑,编号为2到N。每台电脑都用网线连接到一台先前安装的电脑上,求第i台电脑到其他电脑的最大网线长度。解法一根据输入数据建树,假设树的最长路的两个叶子结点为 v1,v2v1,v2v1,v2,这道题要求找到某个结点 xxx 所能到达的最长路径,那么这个结点 xxx 的最长路径要么是到v1v1v1的路径,要么就是到v2v2v2的路径,所以首先需要从任意结点开始执行DFS找到最远结点v1v1v1,然后再

2020-05-17 15:17:42 132

原创 Week13 - 程序设计思维与实践 - 动态规划(四)

题目链接A - TT 的神秘任务1(必做)题意给定两个数字,分别表示 n 和 k,并要求给出 k 个奇偶性相同的正整数,使得其和等于 n。例如 n = 10,k = 3,答案可以为 [4 2 4]。ps:本题是SPJInput第一行一个整数 T,表示数据组数,不超过 1000 。之后 T 行,每一行给出两个正整数,分别表示 n(1 ≤ n ≤ 1e9)、k(1 ≤ k ≤ 100)。Output如果存在这样 k 个数字,则第一行输出 “YES”,第二行输出 k 个数字。如果不存在,则输

2020-05-17 13:52:44 204

原创 Week12 - 程序设计思维与实践 - 动态规划(三)

A - 必做题 - 1题意给出n个数,zjm想找出出现至少(n+1)/2次的数, 现在需要你帮忙找出这个数是多少?Input本题包含多组数据:每组数据包含两行。第一行一个数字N(1<=N<=999999) ,保证N为奇数。第二行为N个用空格隔开的整数。数据以EOF结束。Output对于每一组数据,你需要输出你找到的唯一的数。Sample Input51 3 2 3 3111 1 1 1 1 5 5 5 5 5 571 1 1 1 1 1 1Sample Out

2020-05-10 19:35:28 270

原创 Week12 - 程序设计思维与实践 - 第三次CSP模拟

思路遍历输入序列,记录一个前驱数据 preprepre ,每当遍历到的数据不等于 preprepre 时,段数 +1 并更新 preprepre 即可代码实现#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;int a[1010];int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;.

2020-05-10 17:53:37 127

原创 Week11 - 程序设计思维与实践 - 动态规划(二)

必做题必做题与DP没啥关系,难度为 CSP T1、T2 级别A - 必做题11-1题意蒜头君从现在开始工作,年薪 NNN 万。他希望在蒜厂附近买一套 606060 平米的房子,现在价格是 200200200 万。假设房子价格以每年百分之 KKK 增长,并且蒜头君未来年薪不变,且不吃不喝,不用交税,每年所得 NNN 万全都积攒起来,问第几年能够买下这套房子?(第一年年薪 NNN 万,房价 2...

2020-05-03 20:29:10 199

原创 动态规划(0-1、完全、多重、分组、超大背包问题)

个人整理的算法笔记:参考SDU程序设计思维与实践Week11-动态规划(二)+《挑战程序设计竞赛》0-1背包问题有 N 件物品和一个容量为 V 的背包。 第 i 件物品体积是 Wi,价值是Vi。求解将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且总价值最大 。特点:每种物品仅有一件,可以选择放或不放 (对应 1 或 0)。状态转移方程:设 f(i,j)f(i,j)f(i,j...

2020-05-03 19:04:14 581

原创 C++指针操作易错点(深拷贝、浅拷贝)

#include <bits/stdc++.h>using namespace std;template <class T>struct SplayTreeNode{ T element; SplayTreeNode *LeftChild; SplayTreeNode *RightChild; int count,sz; SplayTreeNode()...

2020-05-03 18:47:24 771

原创 高精度运算(模板)

今天课上老师提了提长整数的代数运算,恰巧之前做题也碰到过几次,就顺便写一下吧最最常用的是加法和乘法,但一家人就要整整齐齐就都整理了吧23333P1601 A+B Problem(高精)题目链接#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>...

2020-04-28 16:20:07 193

原创 Week10 - 程序设计思维与实践 - 动态规划(一)

A - 签到题题意东东在玩游戏“Game23”。在一开始他有一个数字n,他的目标是把它转换成m,在每一步操作中,他可以将n乘以2或乘以3,他可以进行任意次操作。输出将n转换成m的操作次数,如果转换不了输出-1。Input输入的唯一一行包括两个整数n和m(1<=n<=m<=5*10^8).Output输出从n转换到m的操作次数,否则输出-1.Sample Input...

2020-04-25 15:30:35 127

原创 Week10 - 程序设计思维与实践 - 限时大模拟(Time Planner)

A-签到题题意TT有一个A×B×C的长方体。这个长方体是由A×B×C个1×1×1的小正方体组成的。现在TT想给每个小正方体涂上颜色。需要满以下三点条件:每个小正方体要么涂成红色,要么涂成蓝色。所有红色的小正方体组成一个长方体。所有蓝色的小正方体组成一个长方体。现在TT想知道红色小正方体的数量和蓝色小正方体的数量的差异。你需要找到红色正方体的数量与蓝色正方体的数量差值的绝对值的...

2020-04-25 14:46:15 424

原创 CCF201509-4 高速公路(强连通分支)

问题描述  某国有n个城市,为了使得城市间的交通更便利,该国国王打算在城市之间修一些高速公路,由于经费限制,国王打算第一阶段先在部分城市之间修一些单向的高速公路。  现在,大臣们帮国王拟了一个修高速公路的计划。看了计划后,国王发现,有些城市之间可以通过高速公路直接(不经过其他城市)或间接(经过一个或多个其他城市)到达,而有的却不能。如果城市A可以通过高速公路到达城市B,而且城市B也可以通过高速...

2020-04-17 18:08:04 173

原创 Week9 - 程序设计思维与实践 - 模拟文件目录管理系统

思路课前试着做了做这道题,没做出来2333,先来总结一下课前没有想到的地方吧:children 的存储方式:我一开始选用的是 vector ,插入时先二分查找位置然后执行插入,查找元素时二分查找,时间复杂度分别为 O(n),O(logn)O(n),O(logn)O(n),O(logn),不是一个很好的选择前几个操作还比较好实现,但是对于 tree 操作的取最后 5 个元素,当时只是想到,...

2020-04-17 17:57:49 297

原创 Week9 - 程序设计思维与实践 - C 签到题(二分答案)

题意SDUQD 旁边的滨海公园有 xxx 条长凳。第 iii 个长凳上坐着 aia_iai​ 个人。这时候又有 yyy 个人将来到公园,他们将选择坐在某些公园中的长凳上,那么当这 yyy 个人坐下后,记 kkk = 所有椅子上的人数的最大值,那么 kkk 可能的最大值 mxmxmx 和最小值 mnmnmn 分别是多少。Input第一行包含一个整数 x(1<=x<=100)x (1...

2020-04-17 15:16:10 136

原创 Week9 - 程序设计思维与实践 - 东东学打牌(模拟)

题面最近,东东沉迷于打牌。所以他找到 HRZ、ZJM 等人和他一起打牌。由于人数众多,东东稍微修改了亿下游戏规则:所有扑克牌只按数字来算大小,忽略花色。每张扑克牌的大小由一个值表示。A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K 分别指代 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13。每个玩家抽得 5 张扑克牌,组成一手...

2020-04-17 14:53:43 94

原创 CCF201809-3 元素选择器(字符串处理)

思路声明一个结构体 e 来存储输入的每一行信息,count 表示缩进符号的个数,label 存储标签,id 存储 id属性输入数据处理:getline 读入一行数据,然后利用 stringstream 对输入字符串进行分割,遇到标签则调用 transform 将其转换为小写(题目要求标签匹配大小写不敏感)标签选择器和 id 选择器直接遍历存储输入数据的数组进行匹配即可后代选择器:...

2020-04-17 14:24:23 125

原创 CCF201609-3 炉石传说(维护结构体数组)

题意游戏规则如下玩家会控制一些角色,每个角色有自己的生命值和攻击力。当生命值小于等于 0 时,该角色死亡。角色分为英雄和随从。玩家各控制一个英雄,游戏开始时,英雄的生命值为 30,攻击力为 0。当英雄死亡时,游戏结束,英雄未死亡的一方获胜。玩家可在游戏过程中召唤随从。棋盘上每方都有 7 个可用于放置随从的空位,从左到右一字排开,被称为战场。当随从死亡时,它将被从战场上移除。游戏开始后,...

2020-04-17 14:05:43 176

原创 最小生成树(Kruskal+Prim板子)

#include <bits/stdc++.h>using namespace std;const int maxm=400010;const int maxn=100010;int n,m,a,b,c,idx=0,f[maxn];struct Edge{ int from,to,dis; Edge(){} Edge(int ff,int tt,int dd):fro...

2020-04-11 19:48:45 232

空空如也

空空如也

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

TA关注的人

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