自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 问答 (8)
  • 收藏
  • 关注

原创 【2022第十三届蓝桥杯】c/c++ 大学c组 解题报告

大家好,我是小单同学,欢迎交流指正~ 今天上午蓝桥杯圆满落幕,准备了几个月的比赛也终于打完了。今年填空题变成了两道,根据同学们反映今年难度上升很大,小单也感觉今年难度较大hh,空了两道题。现在给大家分享一下本菜鸡的解题报告,供大家交流。仅供参考哈。目录​大家好,我是小单同学,欢迎交流指正~​🎁试题 A: 排列字母【问题描述】 小蓝要把一个字符串中的字母按其在字母表中的顺序排列。 例如,LANQIAO 排列后为 AAILNOQ。 又如,GOODGOODSTUDYDAYDAY...

2022-04-09 18:44:29 17123 87

原创 Trie与可持久化Trie

Trie,也称为字典树或前缀树,是一种用于高效存储和检索字符串的树形数据结构。它的主要特点是利用字符串的公共前缀来减少存储空间和提高查询效率。下面是对 Trie 的常见操作的介绍:插入(Insertion):将一个字符串插入到 Trie 中。从根节点开始,逐个字符检查字符串,并根据字符是否存在于当前节点的子节点中进行相应的操作。如果字符不存在,则创建一个新的节点并将其链接到当前节点的子节点上。删除(Deletion):从 Trie 中删除一个字符串。与插入操作类似,逐个字符检查字符串并找到对应的节点。

2023-05-21 15:03:29 888 1

原创 线段树 push_down 操作

查询操作用于查询一个区间内的某个统计信息,更新操作用于将一个位置的数值进行修改,并相应地更新该位置所在的区间的统计信息。push_down操作将待更新的信息从父节点传递到子节点,在更新时可以直接访问子节点,避免了递归更新的开销。线段树的建立过程是递归的,从根节点开始,每个节点代表一个区间,左右儿子分别代表区间的左半部分和右半部分,直到叶子节点代表的区间长度为1。需要注意的是,下推操作必须保证子节点的值与待更新信息已经合并,否则可能会导致错误的查询结果。左右儿子节点将其待更新信息与自己的待更新信息合并。

2023-03-29 09:24:21 487 1

原创 单调队列优化DP + 双指针 + 贪心 + STL:multiset 综合应用

f(i):表示所有以i结尾合法划分方案的集合属性:最小划分代价以最后一个分割序列的元素个数做划分,假设最后一个分割序列的元素个数是k那么有;注:amax表示最后一个分割序列中最大的数。

2023-03-14 16:17:30 462

原创 “spfa判断正负环“以及“对偶操作建图“的应用

总共有n个点,因为如果cnt[j] >= n有大于等于n条边时,则证明有n + 1个点,根据抽屉原理说明这条路径有一个点被经过了两次,则成环。因为是在dist数组更新时cnt[]才更新所以说明这个一定是负权环才会导致dist[]变小。可以用这个方法在求最短路的过程中判断负环。注:N为点的数量,M为边的数量。求正环则转换成最长路即可。

2023-03-12 17:40:07 193

原创 acwing.342 道路与航线

该算法主要有两个步骤,首先是将原图分成若干个“块”,每个块中的点可以通过第一类边直接到达。然后对每个块运行Dijkstra算法,每次将块内的点中距离起点最近的点取出,更新其相邻点的距离。注意到相邻点可能在不同的块中,因此对于每个块,需要维护一个堆,堆中存放该块中未确定最短路径的点。接着,使用拓扑排序对所有的块进行遍历,每次从入度为0的块开始,将该块中所有点的最短路径求出来,更新相邻块的入度,若入度为0,则将其加入拓扑排序的队列中,等待遍历。最终得到每个点到起点的最短路径。

2023-03-07 17:37:34 68

原创 简单几步教你搞定LIS,LCS,LICS问题

LIS,LCS,LICS都是dp中的基础模型,今天在复习最长公共上升子序列问题时将这三类问题简单总结了一下描述的是给定两个数列,求两数列中的最长公共子序列长度。状态定义:f (i, j) 为以数列a的前i个数以及数列b的前j个数组成的最长公共子序列长度转移方程:f(i, j) = f(i - 1,j - 1) + 1 (i, j > 0,a[i] == b[j])f(i, j) = max(f (i - 1, j),f(i, j - 1) ) (i, j > 0, a[i] != b[j] );描述的是给定

2022-06-14 10:42:59 371

原创 数组模拟单链表求树的直径

来源:第四届蓝桥杯省赛C++A组,第四届蓝桥杯省赛JAVA A组根据题意描述:如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。说明此题是一个无环图,也就是一棵树。给我们一棵树,需要我们求的是最大花费——树的直径1,先以任意点为起点找到一个距离它最远的点u2,以点u为起点找到一个最远距离即为树的直径本题n为1e5,故采用邻接表来存储图的信息。代码:...

2022-06-12 05:45:12 106

原创 三维bfs——地牢大师

你现在被困在一个三维地牢中,需要找到最快脱离的出路!地牢由若干个单位立方体组成,其中部分不含岩石障碍可以直接通过,部分包含岩石障碍无法通过。向北,向南,向东,向西,向上或向下移动一个单元距离均需要一分钟。你不能沿对角线移动,迷宫边界都是坚硬的岩石,你不能走出边界范围。请问,你有可能逃脱吗?如果可以,需要多长时间?输入格式输入包含多组测试数据。每组数据第一行包含三个整数 L,R,C分别表示地牢层数,以及每一层地牢的行数和列数。接下来是 L个 R 行 C 列的字符矩阵,用来表示每一层地牢的具体状况。每个字符用来

2022-06-07 23:17:12 297

原创 图论:单元最短路&状态压缩&双端队列bfs

貌似语法题和分享文更能获取流量~写图论题像被限流了一样QAQ不管了来一波费曼学习法,兄弟们!请听我细细道来这道神奇的题目。🎁题目: 拯救大兵瑞恩1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩。瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图。迷宫的外形是一个长方形,其南北方向被划分为N行,东西方向被划分为M列, 于是整个迷宫被划分为N×M个单元。每一个单元的位置可用一个有序数对 (单元的行号, 单元的...

2022-05-26 02:04:49 227

原创 图论:单源最短路的建图方式(二分 + dijkstra/spfa/双端队列bfs)

最近考试周,一周多没写题解了。最近两天题都刷不成~ε=(´ο`*)))唉。今天抽时间做了几道题,这道题我觉得学习价值很大,囊括了很多的知识点,并且本题的建图方式也值得学习。分享给大家~🎁题目:通信线路在郊区有N座通信基站,P条双向电缆,第i条电缆连接基站 Ai和 Bi。特别地,1号基站是通信公司的总站,N号基站位于一座农场中。现在,农场主希望对通信线路进行升级,其中升级第i条电缆需要花费Li。电话公司正在举行优惠活动。农产主可以指定一条从1号基...

2022-05-24 21:30:42 193

原创 小单刷题笔记之——bfs最小步数模型

🎁题目: 魔板Rubik 先生在发明了风靡全球的魔方之后,又发明了它的二维版本——魔板。这是一张有88个大小相同的格子的魔板:1 2 3 48 7 6 5我们知道魔板的每一个方格都有一种颜色。这8种颜色用前8个正整数来表示。可以用颜色的序列来表示一种魔板状态,规定从魔板的左上角开始,沿顺时针方向依次取出整数,构成一个颜色序列。对于上图的魔板状态,我们用序列(1,2,3,4,5,6,7,8)来表示,这是基本状态。这里提供三种基本操作,分别用大...

2022-05-14 19:42:03 189

原创 棋盘分割(区间DP)

将一个8×8 的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n−1) 次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行)原棋盘上每一格有一个分值,一块矩形棋盘的总分为其所含各格分值之和。现在需要把棋盘按上述规则分割成nn块矩形棋盘,并使各矩形棋盘总分的均方差最小。均方差,其中平均值,xi为第i块矩形棋盘的总分。请编程对给出的棋盘及n,求出均方差的最小值。输入格式...

2022-05-07 16:16:50 393

原创 小单刷题笔记之——区间DP

🎁题目: 凸多边形的划分给定一个具有N个顶点的凸多边形,将顶点从1至N标号,每个顶点的权值都是一个正整数。将这个凸多边形划分成N−2个互不相交的三角形,对于每个三角形,其三个顶点的权值相乘都可得到一个权值乘积,试求所有三角形的顶点权值乘积之和至少为多少。输入格式第一行包含整数N,表示顶点数量。第二行包含N个整数,依次为顶点1至顶点N的权值。输出格式输出仅一行,为所有三角形的顶点权值乘积之和的最小值。数据范围N≤50,数据保证所有顶点的权值都...

2022-05-06 21:50:31 233

原创 基于连通性状态压缩的DP问题——状态压缩DP

🎁题目: 炮兵阵地司令部的将军们打算在N×M的网格地图上部署他们的炮兵部队。一个N×M 的地图由NN行M列组成,地图的每一格可能是山地(用H表示),也可能是平原(用P表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从...

2022-05-05 22:36:51 250

原创 蓝桥杯成绩公布——大一零基础如何三个月混到省一?

自己决定要走的路,无论如何,都要坚持下去~成长过程中的挫折令你越挫越勇,倒了就再站起来!加油,代码人!

2022-05-01 20:00:16 5495 11

原创 linux shell 部分语法及练习

#! /bin/bash# ********** homework_0 *********homework 1 create 0dir0=/home/acs/homework/lesson_1/homework_0for i in a b cdo mkdir ${dir0}/dir_${i}done#*********** homework_1 ******homework 1 create 1dir1=/home/acs/homework/lesson_1/homewor.

2022-04-20 02:21:15 805

原创 小单刷题笔记之数列区间最大值(线段树)

大家好,我是小单同学,欢迎交流指正~今天学习了一种新的数据结构——线段树。用法很广泛的一种数据结构,也能解决很多种问题。🎁题目: 数列区间最大值输入一串数字,给你M个询问,每次询问就给你两个数字X,Y,要求你说出XX到YY这段区间内的最大数。输入格式第一行两个整数N,M表示数字的个数和要询问的次数;接下来一行为N个数;接下来M行,每行都有两个整数X,Y输出格式输出共M行,每行输出一个数。数据范围1≤N≤1051≤M≤1...

2022-04-18 13:50:14 1120

原创 线段树模板

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int N = 100010;int n,m;int w[N];//记录一下权重struct node { int l,r;//左右区间 int sum;//总和 }tr[N*4];void push_up(int u)//利用它的两个儿子来算.

2022-04-18 11:52:08 176

原创 剑指offer35——复杂链表的复制

大家好,我是小单同学,欢迎交流指正~请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。🎁题目: 复杂链表的复制方法1:构建一个拼接链表,每次new一个新的复制节点放到原链表对应节点的后面,为什么要这么做呢?因为这样每一个节点都是前一个节点的复制品,那么我们调整random指针的时候,只需要将random指针调整到对应节点的下一个位置即可。...

2022-04-17 16:24:12 407

原创 计算机网络学习笔记

Web 与 HTTPWorld Wide WEbweb page 包含多个 objectsopjects :HTML JPEG 视频文件 动态脚本等对象的寻址(addressing)URL(Uniform Resoure Locator):统一资源定位器遵循HTTP协议(HyperText Transfer Protocol)C/S 结构客户 :请求 ,接受,展示Web对象服务器 :响应客户的请求,发送对象http使用TCP传输服务服务器在80端口等待客户请求浏览器发起到服

2022-04-16 18:31:35 893

原创 小单刷题笔记之马拉松(DP/前缀和)

大家好,我是小单同学,欢迎交流指正~🎁题目: 马拉松农夫约翰对他的奶牛们的健康状况并不满意,于是给他的奶牛们报名了各种健身活动。他最喜欢的奶牛贝茜被报名参加了一个跑步班。在那里,她有希望在一场马拉松比赛中穿越约翰农场所在的城市的市中心。马拉松线路由N个检查点(编号1∼N)指定。检查点1是起点,检查点N是终点,贝茜要按顺序经过每个检查点。但是贝茜十分懒惰,所以她决定跳过其中一个检查点,以缩短她的整个行程。但是,她不能跳过检查点1和检查点N,因...

2022-04-14 21:03:53 379 1

原创 小单刷题笔记之双指针

大家好,我是小单同学,欢迎交流指正~🎁题目: 钻石收藏家奶牛贝茜非常喜欢闪闪发光的东西,她会在业余时间开采钻石。她收藏了 N 颗大小不等的钻石,她想将其中的一些摆放在牛棚的展示柜当中。为了使展示柜中的钻石尺寸大小相似,她不会将两颗尺寸大小相差超过 K 的钻石同时放在柜子中(刚好相差 K,则没有问题)。给定 K,请帮助贝茜计算在展示柜中最多可以摆放多少颗钻石。输入格式第一行包含两个整数 N,K接下来 N 行,每行包含一个整数,表示一颗钻石的尺寸。输出格式输出...

2022-04-12 20:02:54 469 2

原创 【蓝桥杯】交换瓶子(临阵磨枪,不快也光 一看就懂的简单图论)

加油~后天就是蓝桥杯省赛啦,预祝备考蓝桥杯的同学们都取得理想的成绩!

2022-04-07 17:04:28 640 4

原创 差分模板

#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N=1e5+10;int a[N],b[N];int n,m;void insert(int l,int r,int c){ b[l]+=c; b[r+1]-=c;//差分数组 插入函数 可以实现构造差分数组和区间修改的功能}int main(){ scanf(.

2022-04-06 21:45:13 509 1

原创 小单刷题笔记之数星星(树状数组)

天空中有一些星星,这些星星都在不同的位置,每个星星有个坐标。如果一个星星的左下方(包含正左和正下)有k颗星星,就说这颗星星是k级的。例如,上图中星星5是3级的(1,2,4在它左下),星星2,4是1级的。例图中有1个0级,2个1级,1个2级,1个3级的星星。给定星星的位置,输出各级星星的数目。换句话说,给定N个点,定义每个点的等级是在该点左下方(含正左、正下)的点的数目,试统计每个等级有多少个点。输入格式第一行一个整数N,表示...

2022-04-06 13:00:29 244

原创 树状数组模板

#include<iostream>#include<cstdio>using namespace std;int n,m;const int N=1e5+5;int s[N],tr[N];int lowbit(int x){ return x&-x;}void add(int a,int b){ for(int i=a;i<=n;i+=lowbit(i))tr[i]+=b;}int query(int a){ int re.

2022-04-05 21:14:53 336

原创 小单刷题笔记之航班时间(模拟)

小 h前往美国参加了蓝桥杯国际赛。小 h的女朋友发现小 h上午十点出发,上午十二点到达美国,于是感叹到“现在飞机飞得真快,两小时就能到美国了”。小 h对超音速飞行感到十分恐惧。仔细观察后发现飞机的起降时间都是当地时间。由于北京和美国东部有 12小时时差,故飞机总共需要 14小时的飞行时间。不久后小 h的女朋友去中东交换。小 h并不知道中东与北京的时差。但是小 h得到了女朋友来回航班的起降时间。小 h想知道女朋友的航班飞行时间是多少。对于一个可能跨时区的航班,给定来回程的起降时间。假设飞机来回飞行时间相同

2022-04-05 15:05:02 105 1

原创 小单刷题笔记之日期问题(模拟)

问题描述小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日 至 2059 年 12 月 31 日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。比如 02/03/04,可能是 2002 年 03 月 04 日、2004 年 02 月 03 日 或 2004 年 03 月 02 日。给出

2022-04-05 00:06:47 206

原创 小单刷题笔记之回文日期(蓝桥真题)

2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 yyyymmdd 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。有人表示 20200202 是“千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年 12 月 2 日。也有人表示 20200202 并不仅仅是一个回文日期,还是一个 ABABBABA 型的回文日期。对此小

2022-04-04 17:22:38 254

原创 小单刷题笔记之递增三元组(前缀和/二分)

今天你刷算法题了吗?

2022-04-04 14:32:25 1443

原创 小单刷题笔记之地宫取宝(DP)

#include<iostream>#include<algorithm>using namespace std;const int N=55;int f[N][N][15][15],w[N][N];//f[i][j][c][k]表示到i,j价值是k,拿了c件int n,m,k;const int mod=1e9+7;int main(){ scanf("%d%d%d",&n,&m,&k); for(int i=.

2022-04-03 15:29:23 558 1

原创 前缀和模板

子矩阵的和#include<iostream>#include<algorithm>#include<cstdio>using namespace std;const int N=1010;int a[N][N],s[N][N];int n,m,q;int main(){ cin>>n>>m>>q; for(int i=1;i<=n;i++){ for(int j=1;j<

2022-04-02 15:38:41 70

原创 小单刷题笔记之四平方和二分解法(空间换时间)

#include<iostream>#include<algorithm>#include<cmath>using namespace std;int n,m;const int N=2500010;struct Sum{ int s,c,d; bool operator <(const Sum&t)const{ if(s!=t.s)return s<t.s; if(c!=t.c)retur.

2022-04-02 14:01:40 179

原创 小单学习笔记之整数二分避坑指南

给定一个按照升序排列的长度为nn的整数数组,以及qq个查询。对于每个查询,返回一个元素kk的起始位置和终止位置(位置从00开始计数)。如果数组中不存在该元素,则返回-1 -1。输入格式第一行包含整数nn和qq,表示数组长度和询问个数。第二行包含nn个整数(均在1∼100001∼10000范围内),表示完整数组。接下来qq行,每行包含一个整数kk,表示一个询问元素。输出格式共qq行,每行包含两个整数,表示所求元素的起始位置和终止位置。...

2022-04-01 20:24:22 94

原创 小单刷题笔记之多重背包问题(二进制优化)

for(auto node:nodes){ for(int j=m;j>=node.v;j--){ f[j]=max(f[j],f[j-node.v]+node.w); } }总结:这道题数据规模较大,思路是转换成01背包问题去做,所以可以把每种物品拆分s份即可。一个一个拆的话会超时,用到二进制方法。知识点1:像这道题,假设s是9的话,他就可以用log(9)向上取整个数来表示0-9的所有数字。向上取整应该是,4...

2022-03-30 16:18:27 195

原创 小单刷题笔记之最长不含重复字符的子字符串

从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。class Solution {public: int lengthOfLongestSubstring(string s) { int res=0,tmp=0,i; int len=s.size(); unordered_map<char,int> hash;//无序map 内部实现了一个哈希表 for(int j=0;j<len;j+

2022-03-29 16:12:43 314

原创 小单刷题笔记之画廊(DP)

昨天做的一道蓝桥杯国赛真题,一开始没想到DP的状态转移,暴力debug了一晚上,跑了30分,今天研究了一下DP解法,从他给的样例入手先画个图。测试样例应该就是这么走的,有可能走斜线,有可能走直线,因为两边的画是错开放的,所以从左到右一定是斜线。根据勾股定理可以写个函数来求。那状态怎么定义呢?dp[i][j]表示左边i个画完成右边j个画完成的最短距离,但是就拿dp[1][1]来说,左右各完成一个,他此时有可能在左边,也有可能在右边,我们没办法确认他在左边还是右边,缺一种状态,所以多加一种状态,...

2022-03-27 16:08:24 554

原创 小单刷题笔记之打印螺旋矩阵

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。class Solution {public: vector<vector<int>> generateMatrix(int n) { int tar=n*n; vector<vector<int>> mat(n,vector<int>(n)); i.

2022-03-24 14:15:56 151

原创 小单刷题笔记之邻接链表与割点

抗日战争时期,冀中平原的地道战曾发挥重要作用。  地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。  我们来定义一个危险系数DF(x,y):  对于两个站点x和y (x != y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x,y的关键点。相应的,对于任意一对站点x和y,危险系数DF(x,y)就表示为这两点之间的关键点个数。  本题的任务是:已知网络结构,求两站点之间的危险系数。  输入数据第一行包含2

2022-03-23 22:41:56 90

空空如也

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

TA关注的人

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