_MZT_
_MZT_
全部文章
题解
归档
标签
去牛客网
登录
/
注册
_MZT_的博客
全部文章
/ 题解
(共9篇)
题解 | #借教室#
本题要找第几个安排是无法完成的,可以反着想,设前k个订单是符合要求的,因此把前k个订单的l,r加到一个空数组中,则这个数组前k个数的每个值都应该小于等于每天的空教室数量,每次从l加到r,会超时,所以联想一下,从l到r每个数都加上一个数,这正是差分。要找到这个k,可以用二分算法,因为若前k个订单满足,...
C++
二分查找
2024-11-14
1
65
题解 | #伤害最大化#
本题感觉是思维题,但是无法对每个时刻的技能释放进行精准判断,而且数据量最大到18,所以可以用dfs来积累最大伤害,dfs函数变量包含多个,dfs变量的确立要综合考虑题中各个条件,本题中,重要条件有时刻,总伤害,总怒气值,由于技能冷却两个时刻,所以变量要包括上个操作所放技能和上上个操作所放技能,由于技...
C++
深度优先搜索
2024-11-11
1
47
题解 | #排序危机#
本题虽然说给定了l1,r1,l2,r2,让从两个区间各选一个数,使加和的数位和最大,这个题等价于从l=l1+l2到r=r1+r2选择一个数使其数位和最大。最大的数取决于r值,让r的后面几位是九就是这个题的思路。例如,r=14783,如果后四位是9,则为9999,后三位为九,则为13999,后两位为九...
C++
2024-11-11
2
82
题解 | #小红打怪#
本题求几轮的攻击可以将所有怪兽消灭,明显是二分算法来求解,对于每个mid值,分三步来分析,可将所有攻击分为min次小红的攻击,mid次队友一的攻击,mid次队友二的攻击,先分析小红的攻击,每次攻击小红都使每个怪血量减一,所以mid轮攻击之后,每个怪的血量减少mid,然后分析队友二:每次都是让相邻的两...
C++
二分查找
2024-11-09
5
126
题解 | #小红开宝箱#
本题大致题意是,给出打击柱子数量即打击次数,然后给出每次打击中可能的目标对象,然后确定一个合理的打击序列,这让我们想到了基于二分图匹配的匈牙利算法:确定一个元素的匹配值,如果匹配值已经有其他元素占领,那么让占领此匹配值的元素换一个匹配值,最终达到一个合理的匹配。代码如下: #include<b...
C++
图
2024-11-09
2
63
题解 | #小苯的蓄水池(hard)#
本题数据量较大,用并查集把移走挡板后联通的几个池子合并成一个连通块,求某个池子的蓄水量,只需向上找其祖宗的值和池子总数即可。(每个连通块中,编号大的池子为编号小的节点的父亲) #include<bits/stdc++.h> using namespace std; #define int...
C++
并查集
2024-11-06
5
100
题解 | #老子的全排列呢#
模板题,注意存图的时候要用char数组,而且判断能否移动时一定不要忘了g[x][y]=='E'这个条件 #include<bits/stdc++.h> using namespace std; const int N=510; char g[N][N]; int n,m; int d[N...
C++
广度优先搜索
2024-07-13
1
132
题解 | #小红的子数组判断排列#
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int cnt[N],a[N]; bool once(int num[],int k) { for(int p=1;p<=k;p+...
双指针
数组
2024-05-20
3
318
题解 | #小红的子数组排列判断#
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int cnt[N],a[N]; int main() { int n,k; cin>>n>>k; for(int i=0;i<...
双指针
数组
2024-05-19
4
596