![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
寒假集训
文章平均质量分 54
极度的坦诚就是无坚不摧
这个作者很懒,什么都没留下…
展开
-
2024/3/1 贪心
思路:从一个数组里面依次取出最大值和最小值,然后进行运算。原创 2024-03-01 21:57:19 · 175 阅读 · 0 评论 -
2024/2/29 备战蓝桥杯 6-1 二分
1.程序中不要同时出现l = mid, r = mdi这两条语句。2.如过程序中出现了l = mid,mid的值用 (l + r + 1) / 2计算。3.如果程序中出现了r = mid,mid的值用((l + r) / 2计算。大佬给的方法:两种写法:r = mid ,l = mid+1 此时写(l + r ) / 2 (答案在左边)l = mid , r=mid-1 此时写(l + r + 1) /2 (答案在右边)原创 2024-02-29 22:42:42 · 431 阅读 · 0 评论 -
2024/2/28 最小生成树 kruskal +cf div3 (929)
2.如果sum%3==2 此时不管是删去一个数还是加上1都能构成3的倍数,所以输出答案1。如果没有任何一个数%3==1,那就要加上两个1或者删去两个数,输出答案2。此时如果有一个数%3==1,那删去这个数就可以了,输出答案1。1.如果sum%3==0 此时是3的倍数,输出答案0。思路:kruskal算法,有优惠就建边。3.如果sum%3==1。思路:每个数的绝对值的和。原创 2024-02-28 21:35:38 · 237 阅读 · 0 评论 -
2024/2/27 最小生成树 kruskal 1
kruskal算法简单来说就是:n个点,权值由小到大排列,选n-1条边连起来。思路:kruskal算法,注意计算消耗的云朵的个数。思路:最小生成树的模板题,并查集+数组。思路:和上面一道题一样,注意要记得排序。原创 2024-02-27 21:44:10 · 299 阅读 · 0 评论 -
2024/2/18 图论 最短路入门 floyd 1
注意是无向边,需要建立一个双向边。思路:用floyd算法。原创 2024-02-18 23:31:08 · 527 阅读 · 0 评论 -
2024/2/18 图论 最短路入门 dijkstra 2
用dijkstra算法,在更新最短距离的时候在加一个存点的步骤,最后输出就可以了。p[i]是i的上一个点。原创 2024-02-18 17:20:38 · 700 阅读 · 0 评论 -
2024/2/17 图论 最短路入门 dijkstra 1
选2号(因为权值比1到3的小) dist[2]+1<dist[3],所以dist[3]=dist[2]+1。比如这幅图,初始情况下,把所有的dist都设置为inf(也就是无穷大)选1号,更新最近的2,3号点 dist[2]=2,dist[3]=4。选当前离起点最近(权值最小)且没有选过的点,来更新其它点的距离。开一个数组dist,dist[x]表示从起点出发,到x的距离。这两道题只有数据范围的差别,用下面的代码可以一次过。的最短路问题,就是一个顶点到其他顶点的。因为1是起点,自己到自己的距离是0。原创 2024-02-17 16:55:39 · 1275 阅读 · 0 评论 -
2024/2/13 图的基础知识 3(拓扑排序)
题目要求输出从1~n中的最长路,要从2~n遍历一边,删除其他入度为0的点所以要进两次queue。可以发现,9前面没有连着的数,即入度为0,由于数据很大,所以不能直接暴力存图,存下标就可以了。中间编译错误了好几次,编译错误的原因:数组越界或者参数传递出错。以{4,8,6,3,12,9}为例。,开两个二维数组,一个数组用来。原创 2024-02-13 20:38:32 · 237 阅读 · 0 评论 -
2024/2/12 图的基础知识 2
用二维vector存图,数组in和数组out分别存节点的入度数和出度数,再开一个f数组存路径,如果搜到了入度为0的(即食物链低端),就进入队列,每次搜索的时候节点的路径叠加,并且清空这个点的出度的边,再循环。bfs是宽搜,建立一个int类型的队列,把没有搜到过的点全部入队并标记,由于循环是在队列里面进行的,所以函数不需要传参进去,最开始1文献入队就行了。食物链,只有捕食和被捕食的关系,不存在平级的关系,所以想到了拓扑排序。dfs是深搜,搜到了没有遍历过的点就继续进入dfs,类似于递归。原创 2024-02-12 23:33:41 · 1083 阅读 · 0 评论 -
Codeforces Round 923 (Div. 3)
思路:第一个B的下标减去最后一个B的下标+1。原创 2024-02-08 23:06:40 · 333 阅读 · 1 评论 -
2024/2/7 图的基础知识 1
思路:mp[n][n]用来存邻接矩阵,二维vector用来存每个点连的点。原创 2024-02-07 23:00:01 · 1050 阅读 · 1 评论 -
2024/2/4 备战蓝桥杯 5-1 前缀和
第一个情况是取数组前面两个数,第二个情况是取数组末尾的一个元素,如果循环k次一一比较的话,那么{1,1,1,1,1,1,3},若k=3,最小值就是6,这个是贪心的思想,可是最小值应该是5(3+1+1)。如果第一个情况做 p 次的话,第二个情况就做 k-p 次。这道题用暴力会超时,先用一个数组记录二维前缀和,再来遍历。(x1,y1),(x2,y2)中的所有数之和为。思路:先对公式进行合并同类相,然后用前缀和。原创 2024-02-04 20:47:00 · 739 阅读 · 0 评论 -
2024/2/3 备战蓝桥杯 4-2 排序
特点:不知道每一行要输入的数字有多少个,一共要输入n行数字。思路:结构体排序,满足返回true,不满足返回false。原创 2024-02-03 22:18:30 · 581 阅读 · 0 评论 -
2024/2/3 牛客寒假算法基础集训营1
思路:如果鸡有的钱(m)加上满减的钱(b)大于或等于满减所需要求的钱(a)即m+b>=a。如果一直不满足这个条件的话,那么鸡排的最大值为鸡现有的钱,即m。题目要求:这道题要求计算鸡排最贵为多少。思路:计算阴阳部分的面积,如图。那么鸡排的钱就变为m+b。原创 2024-02-03 16:25:30 · 207 阅读 · 0 评论 -
2024/2/2 备战蓝桥杯 4-1 排序
思路:用map存每个数和每个数出现的次数,用set进行数组去重,最后使用迭代器遍历set容器,输出结果就可以了。原创 2024-02-02 17:29:27 · 349 阅读 · 0 评论 -
2024/2/1 备战蓝桥杯 3-3 二叉树
ceil(log(i+1)/log(2)):这个公式用于计算二叉树的深度。思路:用一个数组存每一层二叉树的权值,再比较哪一层的权值最大。这道题是输出后续遍历,后序是左右根,所以根在最后输出。先序的顺序是根左右,所以得到根之后要先输出,在递归。思路:和前面一题类似,用递归。先序遍历:根,左,右。中序遍历:左,根,右。后续遍历:左,右,根。其他在代码的注释里面。原创 2024-02-01 23:21:17 · 936 阅读 · 0 评论 -
2024/1/31 备战蓝桥杯 3-2 栈
卡特兰数(Catalan numbers)是一系列的整数,它们以比利时的数学家欧仁·查理·卡特兰命名。凸多边形划分:对于给定的n个点组成的凸多边形,计算可以将它划分成n+2个三角形的方法数。s.empty() :判断栈中是否为空(栈不空:while(!s.empty()) )栈排序问题:对于给定的1到n的整数,通过栈的进出操作生成所有可能的出栈序列的方法数。括号匹配问题:对于给定数量的左右括号,计算可以生成的正确的括号组合数。s.size() :返回栈中元素的数量。s.push(x) :把x放入栈中。原创 2024-01-31 23:19:45 · 557 阅读 · 0 评论 -
2024/1/30 备战蓝桥杯 3-1 栈
s.empty() :判断栈中是否为空(栈不空:while(!s.empty()) )std::stack<type> s :定义一个type类型的栈。遇到左括号就进栈,遇到右括号并且栈不空的时候,栈顶元素出栈。注意:题目中数据输入比较大,可以用字符串来存需要输入的数。s.top() :取出栈顶元素,但不删除。s.size() :返回栈中元素的数量。s.push(x) :把x放入栈中。思路:模拟+stl的stack。s.pop() :删除栈顶元素。思路:模拟+stl的stack。思路:模拟+stl的栈。原创 2024-01-30 22:56:24 · 1187 阅读 · 0 评论 -
2024/1/29 备战蓝桥杯 2(队列+数组)
记录字典中是否有这个英文单词可以再开一个bool数组标记一下,如果单词存在,vis[a[i]]=true;q.empty():判断队列是否为空(队列不空:while(!q.empty()) )此时英文单词进队列,队列中弹出队首元素,查询量+1。此时英文单词直接进队列,内存容量减一,查询量+1。q.size() :返回队列的元素个数。q.push(x) :把x放入队列中。q.front():取出队头元素。思路:模拟+stl的queue。q.pop() :弹出队头元素。思路:模拟+stl的队列。原创 2024-01-29 19:44:29 · 554 阅读 · 0 评论 -
2024/1/28 备战蓝桥杯 1-3
注意:仔细读题,题目中说到了ans%11==10的时候,最后一位就要改为大写的X。注意判断什么时候计数的长度应该+1,什么时候应该更新要输出的最大值。注意:输入的数字有可能很大,要用字符串来存。t它的输出应该是L_1 L_2 L_3。注意:写函数的时候不要触发关键字了。可以试试特例:l1 l2 l3。好抽象,懂了但好像没完全懂。原创 2024-01-28 23:05:46 · 887 阅读 · 0 评论 -
2024/1/27 备战蓝桥杯 1-2
(1)如果要给金币的天数-要给这么多金币的天数>=0(即k-num>=0) 那么总数要加上要给的金币数量的平方(即num*num)(2)如果要给的金币的天数小于要给这么多金币的天数(即k-num原创 2024-01-27 23:52:01 · 584 阅读 · 0 评论 -
2024/1/27 备战蓝桥杯 1-1
注意数据范围,除了考虑日期不合法外面,还要考虑月份不合法。,实现大写字母转化为小写字母。思路:输入带空格的字符串,原创 2024-01-27 16:46:55 · 721 阅读 · 1 评论 -
2024/1/24 图的基本应用
思路:这道题就是先建图,然后dfs深搜输出,bfs宽搜输出就行了。思路:这道题反向建图,然后依次遍历,输出答案就可以了。原创 2024-01-24 18:19:23 · 620 阅读 · 0 评论 -
2024/1/23 cf805div3 c +集合
思路:假如我们是有一个数组是xxxy,我们可以任意到达一个x,再到达y,但是想想发现,到达了第一个x哪怕不需要第二次回到x也是能去y的;又假设存在xyyyyyy,我们可以反复到达y,但是为了我们只需要考虑最远的一个y就好了,因为我们不知道其它的y之间有没有穿插x。思路:这道题就是找城市和州一一对应的个数,但是也有可能是一对多,就是一个州可能有多个城市,所以,用两个map,一个用来记录输入的数的位置,另一个用来记录相同的数的最远的下标。所以用map<string,int>mp来实现。原创 2024-01-23 17:02:55 · 387 阅读 · 0 评论 -
2024/1/22 集合+cf805div3 ab题
思路:这道题用map,存一下每个球数所在的位置,然后输出就行了。原创 2024-01-22 16:55:37 · 395 阅读 · 1 评论 -
2024/1/20 并查集
如果他们祖宗节点不一样才要减一,意味着这两个村庄连接需要修一条路,一样的话就表示可以联通,答案就不用相减了。思路:这道题用并查集,两个村庄之间每修一条路,需要修的路的条数就减少一条,最后输出还需要修的道路条数。最后判断输入的两个数据是否返回同一个祖宗节点,如果是,则输出YES;如果是亲戚,就合并他们(make(int x,int y))思路:这道题用并查集,首先输入数据,进行初始化。常识:有n个村庄,那么需要修的道路条数为n-1。ans--不应该在外面,要在if里面。原创 2024-01-20 17:38:13 · 398 阅读 · 0 评论 -
2024/1/19 DFS BFS
思路:这道题用bfs,因为只需要填涂以1围成的圈里面的部分,所以先搜索边界,如果是0,就改成3。思路:用bfs搜索八个方向,遇到水池就进入一次bfs,把遇到的水池全部变成平地,再进行搜索。边界搜索完了打印输出,把1和3都当作1来输出,0当作2来输出,这样就可以了。注意:在取出队头的时候一定要弹出!不然会一直在while里面循环。思路:用bfs,四个方向进行搜索,遇到0步数就+1,然后存进队列里面。这道题和洛谷上面有一道题很相似,只是数据范围变大了。这道题之前写过,今天写的时候又卡了很久。原创 2024-01-19 17:17:49 · 364 阅读 · 0 评论 -
2024/1/18 DFS BFS
所以只需要进一次bfs,用一个二维数组记录到达每个点的步数(因为要走下一个点必然会经过当前这个点)思路,还是用的bfs,建立一个结构体类型的队列,一个存当前的电梯层数,一个存当前走的步数。思路:用bfs,八个坐标,依次遍历 ,没有搜索到的点就输出-1。还要建一个bool类型的数组标记当前电梯层数是否走过。思路:这道题用dfs,枚举选和不选两种状态,取最小值。因为每次都要进一次bfs,所以时间复杂度就提高了。原创 2024-01-18 20:07:04 · 700 阅读 · 0 评论 -
2024/1/17 DFS BFS + Div 3 a,b
这道题和前面那一道是同一个类型的,搜索的方向又八个减少到了四个,思路也差不多,遇到数字细胞就进入一次bfs,,把上下左右的数字细胞全部置为零,然后ans++,最后输出答案。先进行一个判断,如果发生碰撞就输出Bad placement.然后直接结束return(注意在判断的时候不要越界,循环里面的num要及时清空,不然一直会累加)两排字符串作比较,如果不相同,那么在字符串为1对应的变量那里++(如果是第一排有1,那么a1++,如果第二排有1,那么b1++)两个变量a1,b1,用来记录出现的不相同的位置的1,原创 2024-01-17 19:45:40 · 909 阅读 · 0 评论 -
2024/1/16 DFS BFS
建立一个结构体类型的队列,里面分别存放行,列,最短路的步数(r,c,step) 初始的时候起点和0步数入队列。思路:从1开始,*10或*10+1的放入队列判断,如果符合条件则输出,不符合则继续搜索。分别搜索四个方向,如果不越界且是0那么代表可以走,入队列,步数+1。要求从起点到终点的最短路,首先读入数据。要求输出的只含有01的数字是n的倍数。原创 2024-01-16 20:28:24 · 410 阅读 · 0 评论 -
2024/1/15 DFS BFS
多组输入,首先进行一个队列清空操作,初始化数组,农夫的起点为0,起点入队。给定一个整数 n,将数字 1∼n 排成一排,将会有很多种排列方法。q.empty())取出队头元素,弹出队头元素,如果没有抓住,判断三种情况,如果能走(没有越界),步数+1,入队。开两个数组,一个存放状态(即放没放这个数),另一个存放数字。首先创建一个结构体类型的队列,对初始值进行入队操作。然后判断,如果是黑瓷砖,ans++,再判断周围的。有三种不同的走法,+1,-1,*2。如果没搜完,继续向下一层搜索。如果抓住了奶牛,输出,结束。原创 2024-01-15 20:33:50 · 589 阅读 · 0 评论