牛客937992666号
牛客937992666号
全部文章
分类
题解(20)
归档
标签
去牛客网
登录
/
注册
牛客937992666号的博客
全部文章
(共21篇)
题解 | #小红蹦跳蹦跳#
定义dp[i][0/1]表示跳到第i个阶梯并且最后一次跳跃了偶数/奇数个楼梯 分析dp[i][0]: 最后一次跳跃了偶数个楼梯, 那么最后一次跳跃了2, 4, 6, ...个楼梯, 即上一次是在第i - 2, i - 4, i - 6....阶梯, 又因为跳跃的阶梯是奇偶交替的, 所以跳到第i...
2025-12-18
0
15
题解 | #最长不下降子序列#
传统的dp方法的时间复杂度是O(n2) 可以用O(n logn)时间复杂度求得最长长度,但仅是序列长度不是序列本身 总代码: #include<bits/stdc++.h> using namespace std; #define endl...
2025-12-18
0
25
题解 | #汉诺塔#
很经典的递归题目 void dg(char a, char b, char c, int n) a, b, c分别表示这三个杆子,n表示目前圆盘的个数 然后步骤: 目的:将a上面n个圆盘移动到c上面 ...
2025-12-18
0
17
题解 | #自动管理停车场桩位系统#
操作一:返回栈顶元素 操作二:将value加入push到栈顶 操作三:将栈顶元素删除 操作四:返回栈里面最小的一个元素 操作一,二,三是栈stack的基本操作; 如果用O(1)的时间复杂度直接返回栈里面最小的元素呢? 用第二个栈来维护第一个栈里面的最小元素:sta...
2025-12-18
0
19
题解 | #表达式求值#
递归题目,求表达式的值 求当前字符串s表达式的值,实现需要用栈依次存储数字: 如果当前state是‘+',求push(num) 如果是'-', 就push(-num) 如果是'*',就将栈顶的元素乘以num即可 一开始的时候state定义为'+',相当于0 + ...
2025-12-18
0
18
题解 | #the world#
如果你总是只通过86.67%的数据,那么需要注意(x1,y1) = (x2,y2)的情况,因为这种情况下这个格子无论如何也不能到达 很显然是一道BFS问题 有k个幽灵奇数秒在(x1,y1),偶数秒在(x2,y2),能不能从(1,1)走到(n,m)且求最少时间 那么对时间存储格子就...
2025-12-18
0
22
题解 | #Sequence Covering#
题目意思很简洁明了: 总成本不超过 k的情况下,通过若干次操作,能够得到的字典序最大的序列是什么。 那么一个贪心的想法是将较大的数字尽可能的替换到前面来: 比如[1,1,1,4,1,5],我们希望将所有元素替换为5,变为[5,5,5,5,5,5],但是有k的限制条件 如果k = 0...
2025-12-16
1
22
题解 | #猪猪养成计划1#
题目的意思是在[1,n]区间中执行两种操作: 操作一:给定区间[l,r],依次标记该区间的所有数,如果数字已经在之前的被标记了,则不重复标记 操作二:给定[1,n]中的一个数x,直接输出x是第几个被标记的;如果没有被标记过,直接输出0 显然最直接的操作是遍历[l,r]依次标记,但是...
2025-12-16
0
13
题解 | Block Array
题目的意思是给定一个数组,求有多少个子数组满足子数组可以恰好分为若干个"块" 用len[i]表示从i到前面有多少个连续的数等于a[i],例如a[] = {1,1,2,2,2,1},那么len[] = {1,2,1,2,3,1} 显然初始化len[] = {1,1,1,1,1,1},从i&...
2025-12-16
0
26
题解 | x_to_y_2
两种操作:x =以及选择一个整数z,令x = x | z,求最小的操作次数让x = y 从二进制上考虑,那么第一个操作就是x的二进制整体向右移动一位,第二个操作就是增加到某一个数。 如果x的二进制某一位置为1,而y二进制对应的位置为0,那么x只能通过进行操作一将该位置的1抹除掉,所以首先...
2025-12-16
0
22
首页
上一页
1
2
3
下一页
末页