- 2024-11-20滑动窗口最大值——栈与队列
第一版代码:classSolution{private:classMyQueue{//单调队列(从大到小)public:deque<int>que;//使用deque来实现单调队列//每次弹出的时候,比较当前要弹出的数值是否等于队列出口元素的数值,如果相等则弹出。//同时pop之前判断队列当
- 2024-11-15SS241115C. 排序(sort)
SS241115C.排序(sort)题意给你一个长度为\(n\)的序列\(a\),每次操作对\([1,\frac{n}{2}],[\frac{n}{2}+1,n]\)进行归并排序。有\(q\)次询问,给出\(t,x\),问进行\(t\)次操作后\(a_x\)的值。思路考虑一次操作发生了什么。假设\(x<y\),那么\(x\)和它后面的一坨都会排
- 2024-11-11代码随想录算法训练营第十一天 | 150. 逆波兰表达式求值+ 239. 滑动窗口最大值+347.前 K 个高频元素
今天接着补上周末的栈与队列的part2,下午继续完成今天的任务。150.逆波兰表达式求值 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。注意:有效的算符为 '+'、'-'、'*' 和 '/' 。每个
- 2024-11-09104.力扣(leetcode)二叉树的最大深度(JAVA)
一、目标给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。二、代码分析总代码:/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeN
- 2024-11-08洛谷题单指南-二叉堆与树状数组-P2827 [NOIP2016 提高组] 蚯蚓
原题链接:https://www.luogu.com.cn/problem/P2827题意解读:初始n个数,每次取最大值x,根据u/v分成两部分:x*u/v,x-x*u/v,然后其余数都增加q,整个过程重复m次。输出有两类数据:第t,2t,3t...次取出的最大值;最后剩余的数第t,2t,3t...个,从大到小输出。解题思路:直观上,通过模拟法可以实
- 2024-11-03代码随想录算法训练营第十一天|leetcode150. 逆波兰表达式求值、leetcode239. 滑动窗口最大值、leetcode347.前 K 个高频元素
1leetcode150.逆波兰表达式求值题目链接:150.逆波兰表达式求值-力扣(LeetCode)文章链接:代码随想录视频链接:栈的最后表演!|LeetCode:150.逆波兰表达式求值哔哩哔哩bilibili自己的思路:这是一道有思路,但是思路并不多的题目,就是我会觉得是先将数据进行添加,然后对于符号通过
- 2024-11-03算法-图论-拓扑排序
1.拓扑排序(卡码网117)fromcollectionsimportdeque,defaultdictdefmain():num_node,num_edge=map(int,input().split())inDegrees=[0for_inrange(num_node)]edges=defaultdict(list)for_inrange(num_edge):source,target=
- 2024-10-28代码随想录算法训练营第十一天|leetcode150. 逆波兰表达式求值、leetcode239. 滑动窗口最大值、leetcode347.前 K 个高频元素
1leetcode150.逆波兰表达式求值题目链接:150.逆波兰表达式求值-力扣(LeetCode)文章链接:代码随想录视频链接:栈的最后表演!|LeetCode:150.逆波兰表达式求值_哔哩哔哩_bilibili自己的思路:这是一道有思路,但是思路并不多的题目,就是我会觉得是先将数据进行添加,然后对于符号通过倒
- 2024-10-25[Ynoi2015] 盼君勿忘 题解
CSP前学习珂学,祝自己\(while(1)\rp++\)。考虑求解出每种数对答案的贡献。设\(t=r-l+1,k_x=\sum\limits_{i=l}^r[a_i=x]\),由容斥得贡献为\(x(2^t-2^{t-k_x})\)。求解\(k_x\),考虑莫队,时间复杂度为\(O(n\sqrtn)\),这也是本题的复杂度上限。由于\(p\)会变,所以不能用莫
- 2024-10-24CF35C. Fire Again 题解 bfs求最短路
题目链接:https://codeforces.com/problemset/problem/35/C视频讲解:https://www.bilibili.com/video/BV1tZ1FYPELp/?p=4以每个着火的点为起点求最短路,然后输出任意一个距离值最大的点即可。需要注意的是:本题是文件输入输出。示例程序:#include<bits/stdc++.h>usingnamespace
- 2024-10-21Codeforces Round 980 (Div. 2)
A-ProfitableInterestRatevoidsolve(){ cin>>n>>m; if(n>=m)cout<<n<<'\n'; else { intc=m-n; if(c>=n)cout<<"0\n"; elsecout<<n-c<<'\n'; } return;}B-Buyin
- 2024-10-20Leetcode 1926. 迷宫中离入口最近的出口
1.题目基本信息1.1.题目描述给你一个mxn的迷宫矩阵maze(下标从0开始),矩阵中有空格子(用‘.’表示)和墙(用‘+’表示)。同时给你迷宫的入口entrance,用entrance=[entrancerow,entrancecol]表示你一开始所在格子的行和列。每一步操作,你可以往上,下,左或者右移动一
- 2024-10-19Leetcode 1129. 颜色交替的最短路径
1.题目基本信息1.1.题目描述给定一个整数n,即有向图中的节点数,其中节点标记为0到n–1。图中的每条边为红色或者蓝色,并且可能存在自环或平行边。给定两个数组redEdges和blueEdges,其中:redEdges[i]=[a_i,b_i]表示图中存在一条从节点a_i到节点b_i的红色有向边,bl
- 2024-10-10代码随想录算法训练营day11|150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K 个高频元素
学习资料:https://programmercarl.com/0150.逆波兰表达式求值.html#算法公开课栈、队列、堆学习记录:150.逆波兰表达式求值(中序表达式转换为后序表达式,用栈实现;遇到符号就从栈中取前两个元素进行运算,再放回去)点击查看代码fromoperatorimportadd,sub,muldefdiv(x,y):
- 2024-10-10算法训练营第十天|232.用栈实现队列 ,225. 用队列实现栈,20. 有效的括号,1047. 删除字符串中的所有相邻重复项
前置知识栈和队列都是以deque为缺省底部结构,实际上可以自己指定vector,deque,list都可以栈和队列都被归类为containeradapter(容器适配器)使用栈实现队列的操作:push(x)--将一个元素放入队列的尾部。pop()--从队列首部移除元素。peek()--返回队列首部的元素。empty()
- 2024-10-10Leetcode 864. 获取所有钥匙的最短路径
1.题目基本信息1.1.题目描述给定一个二维网格grid,其中:‘.’代表一个空房间‘#’代表一堵墙‘@’是起点小写字母代表钥匙大写字母代表锁我们从起点开始出发,一次移动是指向四个基本方向之一行走一个单位空间。我们不能在网格外面行走,也无法穿过一堵墙。如果途经一个
- 2024-10-03多校A层冲刺NOIP2024模拟赛【衡中】
多校A层冲刺NOIP2024模拟赛01构造字符串咕咕咕寻宝咕咕咕点击查看代码#include<bits/stdc++.h>usingnamespacestd;constintmaxn=50009;intn,m,k,q,tot,cnt,vis[32767];inta[4]={1,-1,0,0};intb[4]={0,0,-1,1};map<int,short>mp[maxn];queue<pair<int,int>>
- 2024-09-27【21 ZR联赛集训 day10】身经百战
【21ZR联赛集训day10】身经百战显然每个怪物是独立的。我们考虑对操作建带权边,答案就是求最短路。但是点数太多,于是我们可以对怪物血量和所有\(a_i,b_i\)离散化一下,因为我们只需要考虑这些点,注意\(1\)也要离散化,因为我们需要考虑\(1\)。一个小优化,如果\(a_i>b_i\)且
- 2024-09-27【21 ZR联赛集训 day10】不知道高到哪里去了
【21ZR联赛集训day10】不知道高到哪里去了二分答案。设敌人的速度是\(1\),二分我的速度\(v\),我可以从\(C\)走到\(T\)当对于每个我到达的点\(u\),敌人无法比我先到达,即敌人到达\(u\)最短用时比我大。先求敌人到每个结点的最短路,然后对于二分的一个\(v\),从\(C\)开始搜
- 2024-09-27P3195 [HNOI2008] 玩具装箱
P3195[HNOI2008]玩具装箱\(dp_i\)表示前\(i\)个玩具的最小代价。\(s_i=\sum_{j\lei}c_i+1\)。设\(L'=L+1\)。\(dp_i=\min_{j<i}\{dp_j+(s_i-s_j-L')^2\}\)\(dp_i-s_i'^2+2s_iL'=\min_{j<i}\{dp_j+(s_j'+L)^2-2s_is_j\}\)\(b=y
- 2024-09-25【C++】队列
示意图什么是队列队列(queue)是一种具有先进入队列的元素一定先出队列性质的表。由于该性质,队列通常也被称为先进先出(firstinfirstout)表,简称FIFO表。就像排队一样,最先到的人也就最先买到单,优先离开队伍头文件与声明头文件#include<queue>声明定义queue<G>qu
- 2024-09-23多线程之手撕生产者-消费者
要点维护一个资源(在生产者-消费者中即流水线的位置)池,实现put()/get()两个函数。由于对信号量的操作是互斥的,要引入条件变量和信号量。实现资源池类Pool,成员变量:mtx:mutexcv:condition_variableque:queuecapacity:int实现资源池类Pool,成员函数:Tget():获取
- 2024-09-22单词接龙-双向广搜
单词接龙题目链接LeetCode单词接龙题意概述字典\(wordList\)中从单词\(beginWord\)到\(endWord\)的转换序列是一个按下述规格形成的序列\(beginWord->s_1->s_2->...->s_k:\)每一对相邻的单词只差一个字母。对于\(1<=i<=k\)时,每个\(si\)都在\(w
- 2024-09-22BFS 马的遍历————洛谷p1443
马的遍历题目描述有一个\(n\timesm\)的棋盘,在某个点\((x,y)\)上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。输入格式输入只有一行四个整数,分别为\(n,m,x,y\)。输出格式一个\(n\timesm\)的矩阵,代表马到达某个点最少要走几步(不能到达则输出\(-
- 2024-09-21BFS 颜色填涂———洛谷p1162
填涂颜色题目描述由数字\(0\)组成的方阵中,有一任意形状的由数字\(1\)构成的闭合圈。现要求把闭合圈内的所有空间都填写成\(2\)。例如:\(6\times6\)的方阵(\(n=6\)),涂色前和涂色后的方阵如下:如果从某个\(0\)出发,只向上下左右\(4\)个方向移动且仅经过其他\(0\)的情况下