- 博客(43)
- 收藏
- 关注
原创 01背包问题合集 蓝桥OJ
用二维数组dp判断最大价值,i表示物品数量,j表示物品体积,如果 j > V 则无需继续, j >= w 物品还能再增加,同样价值也增加,否则继承之前的价值,在之间找Max,最大价值。3.当j>=c时, dp[i][j] = max(dp[i-1][j-c]+d , max(dp[i-1][j]+e, dp[i-1][j-a]+b))2.当j >= a and j < c时, dp[i][j] = max(dp[i-1][j]+e, dp[i-1][j-a]+b)跟 盗墓分赃 一模一样。
2024-04-09 20:27:24 276 1
原创 蓝桥OJ 3500阶乘求和(找规律)
但是可以发现算到将近40的阶乘时,后9位的答案就已经可以确定了。做这道题两个循环到202320232023肯定会超时间。这个上面不是最终答案,只是测试代码。最终答案直接输出后9位就ok。
2024-03-30 10:20:33 116
原创 蓝桥OJ 6003递归函数 (快速幂)
如果指数为奇数,收集current底数后,指数除以2,底数翻倍,继续循环。如果指数为偶数,直接指数除以2,底数翻倍,继续循环。通过这道题学习了快速幂思想。
2024-03-30 09:22:34 135 1
原创 蓝桥OJ3514 子串简写 (暴力+二分)
从字符串开头遍历,如果遇到c1就进入子遍历,遇到长度大于等于k且以c2结尾的子串就使cnt++;遍历完之后再从外遍历找c1。学习了b站Turing_Sheep的思路。这种方法的弊端在于:外遍历。
2024-03-29 17:03:52 328
原创 **蓝桥OJ 178全球变暖 DFS
将每一座岛屿用一个颜色scc代替, 用dx[]和dy[]判断他的上下左右是否需要标记颜色,如果已经标记过颜色或者是海洋就跳过.后面的淹没,实际上就是哪个块上下左右有陆地,那么就不会被淹没,我用一个tag标记,如果上下左右一旦有海洋,tag就变为false.如果tag为true的话,就用一个vis数组判断是否为同一块岛屿,如果岛屿前面没有出现过就ans++,此ans代表没有被完全淹没的岛屿,题目问完全淹没的岛屿有多少,即scc-ans为答案。
2024-03-02 18:46:22 485
原创 蓝桥OJ 182小朋友崇拜圈 DFS
rec记录最小时间戳,避免走到已计算过的环中去,比如7->4(7的时间戳是8,4的时间戳是4,但次数最小时间戳是6,所以不构成一个环)由于此题目不止一个起点,所以我们遍历i去dfs,表示从i点出发,每次能达到的最大环的大小。输入的n个数,表示第i个小朋友最喜欢的小朋友。此处用到dfn时间戳。
2024-03-02 09:46:02 475
原创 蓝桥OJ 3223出列 位运算思想
综上,我们可以知道第i次出列,即踢出以i个0结尾的数,或者说以(1<<(i-1))结尾的数。第一次出列:踢出1,3,5,7 其二进制为1,11,101,111 可以发现其末尾都为1。第二次出列:踢出2,6 其二进制为10,110 可以发现其以10结尾。最后只剩下(1<<k(最后一次,此处为2)))
2024-02-29 18:26:31 197
原创 蓝桥OJ 3695聪明的小羊肖恩
思路:这道题利用二分和不等式的性质。1<i<j<=n且L<=a[i] + a[j] <= R ==> L - a[i] <= a[j] <= R - a[i]。遍历找出大于等于L - a[i] 和 大于 R - a[i] 的区间,区间长度即为当前i对应的下标对数。所有对数累加即为满足条件的下标对数量。
2024-01-31 16:42:40 347
原创 数字逻辑与计算机组成(袁春风版)复习笔记第一章
1、3、软硬件界面:指令集体系结构(ISA)有时简称,甚至简称"4、机器语言由构成,能被。5、ISA是一种规约,规定了6、现代计算机系统层次:应用程序、语言处理系统、操作系统、指令集体系结构、计算机硬件1、1945年,在共同讨论的基础上,冯诺依曼以"关于的报告草案"为题,起草了长达101页的总结报告,发表了全新的"1946年第一台电子计算机诞生。主要的逻辑元件(用来处理电信号的最小逻辑单元)为设计""计算机,被称为,为1951年完成,此计算机并不是第一台存储程序计算机,
2023-12-08 19:24:29 1221
原创 鸡哥的购物挑战(c++)
将数组从小到大排序,从后往前遍历两两相加,如果大于0,就累加到ans上,如果小于0,就break。有个大问题就是没注意题目中价格也能取负数的,当然这个我现在也没想明白的。
2023-11-30 14:25:12 481 4
原创 小蓝的礼物(c++)
如果前i-1个物品的价格+第i个优惠后的价格>k(现有的钱),说明不能买第i件物品,输出i-1即可。需要注意的是如果小蓝全部都可以买,加上第i个也不能超过k,那么让它直接输出n即可。先用一个前缀和数组把前面的物品的价格加起来。优惠券肯定是使用在所能买的最贵商品上的。
2023-11-29 21:54:03 420 1
原创 最大的卡牌价值(c++)
首先定义一个d数组,用来算b-a的差值,如果>0则说明翻转过来会使价值变大,我们可以先把s数组也就是正面的价值求出,再从大到小排序d数组,取前面k组>0的元素相加到ans上。那么存在k如果>n的情况下,我们遍历数组可能会溢出。
2023-11-29 12:38:09 626 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人