- 博客(84)
- 收藏
- 关注
原创 李白打酒加强版
已经最后一次遇到的是花则求出 f[ n ][m - 1][ 1]即酒倒数第二次还剩一升的情况即可。每次打完酒,酒的数量必须的偶数,酒最多有m斗。
2025-04-11 08:32:55
219
2
原创 AcWing 843. n-皇后问题
但实际可行的路径可能远小于2^(n²)。因为放置皇后需要满足不冲突的条件,并且在放置之后,同一行、列、对角线就不能再放置了。例如这题,对于n×n的棋盘,总共有n²个格子。每个格子有两个选择(放或不放)3. 确定递归树的深度和每层的节点数目,从而推导出总的时间复杂度。2. 计算每个节点的有效分支数目,考虑剪枝条件的影响。1. 确定递归树的结构,每个节点的分支数目。②根据题目要求提炼出条件:每行只能放一个。不考虑dfs结构情况下为 2^(n²)①枚举每个格子,两种可能,放或者不放。
2025-04-10 11:23:04
547
原创 lanqiao OJ 102 青蛙跳杯子
queue<string> q 保存状态,unordered_map 保存步数。将两个字符串看成是两种状态,求状态转移的最小步数。
2025-04-09 20:07:10
227
原创 lanqiao OJ 89 路径之谜
最好是每次走到一个格子就直接减一次箭数,不然最后统计的时候不仅没法剪枝还时间复杂度高。剪枝:每个格子上的箭数小于零就剪掉。
2025-04-09 10:54:54
189
原创 lanqiao OJ 1388 寒假作业
剪枝就好了啊,这道题又不是非得全部枚举了12个数才能check。= 6227020800 tmd六十多亿肯定超时啊。每次枚举三个数如果不满足条件直接就return呗。
2025-04-08 17:30:56
89
原创 lanqiao OJ 644 方格分割
因此从3,3这个点开始dfs,每次遍历到边界为一条线,这条线关于中心中心对称的一条线连起来就可以得到两个中心对称的图形。本质是关于格子中心点中心对称。
2025-04-08 16:31:53
179
原创 lanqiao OJ 803 方格取数
另,记忆化搜索的解法我觉得更好一点,但是还不会写。在第一行第一列,第n行第n列的边界情况要考虑到。使用k记录这个格子从哪个方向过来的。
2025-04-08 11:54:36
207
原创 lanqiao OJ 1032 画廊
这题动态规划的思路还挺好找,就是情况太多了太难处理了,使用两个动态规划数组分别保存结果,因为结果会有两种的可能。
2025-04-07 17:00:50
408
原创 lanqiao.最优包含
这题和编辑距离是相同的类型,但是要求的操作数即修改的操作,因为保证了字符串s 长度大于 t所以不需要增加字符,只需要进行删除和修改,最后的操作数减去删除的数量即题目要求的操作数。
2025-04-07 14:47:24
217
原创 蓝桥云课21国赛1.123
用公式 n * (n + 1) / 2, 利用二分找到第一个使得 n * (n + 1 ) 大于a的n,a -= (n - 1) * n,得 a 在当前块中的值,再判断b是否和a在同一个块中,计算a到b的和,如果不在就计算a到 n * (n + 1) / 2的值和b * ( b +1) / 2的值。注意找b的位置的时候,b有两种可能,①和a在同一段块内,②在不同块内。需要注意的是b的位置可能和a之间还会多的块,需要加上这些块内的值。发现第一块为1个数,第二块2个数,递推下去。发现数字的下标和前n项和有关。
2025-04-06 11:40:17
206
原创 AcWing 5438. 密接牛追踪2
在天数为 r 的情况下,最小的个数为 Ci / (2 * r + 1),即被长度为2 * r + 1的区间覆盖的次数,上取整的方法 a / b (上取整) = (a + b - 1) / b (下取整)求出最大天数的方法即枚举每段连通1区间,求出 Ci 并计算 (Ci - 1)/ 2 (一般情况),如果是有牛在边界上,则 r 为(Ci - 1)。设经过的天数为 r,每个连通的1的数量为Ci,发现一头牛经过 r 天可以感染 2 * r + 1头牛,因此可以将问题转化为区间覆盖问题。
2025-04-05 15:15:13
171
原创 AcWing 5437. 拐杖糖盛宴
另时间复杂度分析:假设第一头牛的高度为1,每颗糖的高度都是1e9,那么第一头牛每次乘二,可知2 ^ 30 = 10 ^ 9。30次后所有糖都会被第一只牛吃掉,因此所有牛的数量n最多枚举30次,时间复杂度为 O(30 * n)模拟的时候一定要考虑全面,这题模拟奶牛吃糖的过程中,分为,如果当前奶牛比糖的底高和低,奶牛的高度又比糖高和低。
2025-04-05 15:07:18
234
原创 AcWing 6131. 农夫约翰最喜欢的操作
然后数组中的每个数都是 0 ~ m - 1 之间的数,问题转化为由0 ~ m - 1构成的一个环中,每个数w[ i ] 经过加减的步数res变成x的最小值。由同余,可知 (w[ i ] + res ) 同余于 x (mod m) ,即 (w[ i ] + res ) = x (mod m)问题①即枚举破坏成链的位置,方法可以是在原数组w[ i ] 的基础上复制一遍加到w[ n ]的后面。问题再次转化为在一段长度为n的链上,求每个点到一个变量x的距离的最小值。⑤枚举每段长度为n的区间上,res的值取min。
2025-04-05 11:13:06
284
原创 AcWing 6135. 奶牛体检
0 ~ 1表示的是奇数和偶数,比如说0 2 4 6 8 和1 3 5 7 9 这样每次加二也可以枚举所有的区间数。将l ~ r之间的数翻转,求l ~ r 的所有可能,统计l ~ r 之间满足条件的数的数量,每次从i为中心往两边拓展两个数,统计这两个数的影响,可以省去一重循环(统计符合要求的数量)
2025-04-04 20:23:55
181
原创 AcWing 6118. 蛋糕游戏
已知蛋糕的数量为偶数个,b每次只能吃左右边界上的蛋糕,a每次操作将两个蛋糕变成一个,发现都会使蛋糕的数量减一,且a先操作将蛋糕数量从偶数变成奇数,b将奇数变为偶数,直到最后一次只有一个蛋糕一定是a先吃掉。那对于b来说,b一定存在一种选法是的b吃掉的蛋糕大小大于 Sum - Smin,,因为如果a重叠的蛋糕被b给吃掉了,则在b本来的最大方案中原来就要吃掉的蛋糕被吃了,还多吃了a给帮忙的。因此,将a吃掉的蛋糕的总大小的最小值称为Smin,则b吃掉的蛋糕最多为Sum - Smin。
2025-04-04 20:13:47
253
原创 AcWing 6122. 农夫约翰的奶酪块
划定x、y、z轴三个方向,因为需要插入的砖块是1 * 1 * N 的,对于x、y这个平面上,只需要只用一个二维数组a[x][y]记录下来被删去的奶酪块的数量,且每次删除操作是从x,y到x + 1,y + 1。模拟——三维空间表示。
2025-04-04 19:48:16
233
原创 多重背包问题
1, 2 可以表示出 1 ~ 3 的任何一个数的,因此1, 2, 4 可以表示出1 ~ 7 中的任何一个数(相当于在1 ~ 3 的基础上加 4)同理1, 2, 4, 8 可以表示出1 ~ 15中的任何一个数,递推可得 1 + 2 + 4 + ... + 2 ^ k 可以表示出 1 ~ 2 ^ (k + 1) - 1 中的任何一个数,如果此时2 ^ (k + 1) - 1 < s[ i ] < 2^ (k + 2) - 1,c即为s[ i ] - 2 ^ (k + 1) - 1。
2025-04-01 21:55:14
946
原创 完全背包问题
观察代码发现每次枚举物品的时候只用到了第i件物品,而和之前的物品方案是没有关系的,所以同样可以省去一维数组,又从0-1背包的优化分析中可知,j每次都会用到 j - v[i] 也就是比 j 小的数,因此在完全背包中,我刚好要使用的 j 就是当前第 i 层 j 而不是上一层没有更新过的,因此 j 就可以从小到大循环。完全背包与0-1背包不同的地方在于每个物品都有无限件可以选择,因此分析的方式自然也是不一样的。另,完全背包的表示方法很特殊,它的属性同样可以是bool类型。
2025-04-01 20:15:49
253
原创 蓝桥23省赛——接龙数列
可以发现类似于最长上升子序列问题,因此分析方法也是一样的,但是不同于最长上升子序列的区别是这题只会用到每个数的最高位和最低位,因此使用g[i] 存储以i结尾的数当前的接龙子数列长度,就可以省去一维循环。还有一个存储的技巧是使用l[i] 和 r[i] 存储每个数的最高位和最低位,就可以省去计算最高位的麻烦。算法:dp + 优化。
2025-04-01 17:12:53
249
原创 蓝桥23省赛——飞机降落
对n架飞机的前后顺序枚举全排列,令每一架飞机降落时间都在前一架飞机降落完成之后立即降落(需要当前飞机已经到达),已经就不用考虑顺序的问题,模拟一遍降落过程即可。算法:dfs暴力枚举。
2025-04-01 17:03:51
206
原创 蓝桥23省赛-冶炼金属
右边界其实也就是下一段区间的左边界再减一(因为V是整数),右边界下一个点二分出来的答案 L 有两种可能,一是实数,二是整数,不管怎样,右边界都是 L下取整减一。4.如果更新方式写的是r == mid,不用做任何改变,如果更新方式写的是 l == mid, 需要在计算mid时加1。因为对于 A / V 来说相对于V是单调的,可以找到左边界的判断条件:A / V <= B。2.找一个判断条件,使得该判断条件具有二段性,且答案一定是该二段性的分界点。1.找一个区间[l, r],使得答案一定在区间内。
2025-04-01 16:57:57
286
原创 lanqiao.日期统计(23省赛B组)
比较的时候有个技巧,将年月日八位数存入一个数组,每次取出一个数进行比较,用cnt计数。模拟2023年的所有天数,每个天数只会统计一次。
2025-04-01 16:44:16
199
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅