12 2024 档案

摘要:思路 尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。 背包问题: dp定义:dp[i]表示在容量为i的背包最多可放下重量为dp[i]的石头 递推公式:dp[i]=max(dp[i],dp[i-stones[i]]+stones[i]),要么不选当前的石头(沿用遍历 阅读全文
posted @ 2024-12-30 11:06 NeroMegumi 阅读(19) 评论(0) 推荐(0) 编辑
摘要:思路 难点 我只想到了:“找一个子集,每个数取或不取求其和,看是否和另一个子集的和相等 ” 但是实际上既然是两个子集相等,那么只要和等于 sum/2 即可了! 取或不取用01背包,但是不知道怎么用。 只有确定了如下四点,才能把01背包问题套到本题上来。 背包的体积为sum / 2 背包要放入的商品( 阅读全文
posted @ 2024-12-29 11:26 NeroMegumi 阅读(14) 评论(0) 推荐(0) 编辑
摘要:暴力:每一件物品其实只有两个状态,取或者不取,所以可以使用回溯法搜索出所有的情况,那么时间复杂度就是O(2^n),这里的n表示物品数量。 所以暴力的解法是指数级别的时间复杂度。进而才需要动态规划的解法来进行优化! 二维dp数组01背包 确定dp数组及下标含义 dp[i][j]表示前i件物品恰放入一个 阅读全文
posted @ 2024-12-29 11:02 NeroMegumi 阅读(52) 评论(0) 推荐(0) 编辑
摘要:解题思路 本题通过递归 和 二叉搜索树特性解决。 当n=1时,结果是1。如果n>1时,因为根节点值不同对应的二叉搜索树肯定不同,所以我们考虑根为i(2≤i≤n)的情况。 由二叉搜索树特性,根左边一定有i-1个元素,右边一定有n-i个元素。 设f(i)函数返回i个不同元素节点组成的二叉搜索树的个数。所 阅读全文
posted @ 2024-12-28 10:20 NeroMegumi 阅读(6) 评论(0) 推荐(0) 编辑
摘要:动态规划题目应该如何debug,灵魂三问: 这道题目我举例推导状态转移公式了么? 我打印dp数组的日志了么? 打印出来了dp数组和我想的一样么? 阅读全文
posted @ 2024-12-26 11:49 NeroMegumi 阅读(5) 评论(0) 推荐(0) 编辑
摘要:思路 这道题目首先要想,如何放置,才能让摄像头最小的呢? 从题目中示例,其实可以得到启发,我们发现题目示例中的摄像头都没有放在叶子节点上! 这是很重要的一个线索,摄像头可以覆盖上中下三层,如果把摄像头放在叶子节点上,就浪费的一层的覆盖。 所以把摄像头放在叶子节点的父节点位置,才能充分利用摄像头的覆盖 阅读全文
posted @ 2024-12-26 10:58 NeroMegumi 阅读(7) 评论(0) 推荐(0) 编辑
摘要:思路 显然本题要对数字按位处理,转化为字符串更好处理。 既然要尽可能的大,那么这个数从高位开始要尽可能地保持不变。 那么我们找到从高到低第一个满足 str[i]>str[i+1] 的位置,然后把 str[i]−- ,再把后面的位置都变成 9 即可 但是由于减小了 str[i] 以后,可能不满足 st 阅读全文
posted @ 2024-12-25 09:21 NeroMegumi 阅读(13) 评论(0) 推荐(0) 编辑
摘要:代码 class Solution { public: static bool cmp(vector<int>& a,vector<int>& b){ if(a[0] == b[0])return a[1]<b[1];//如果身高相同,k更小的在前面 return a[0] > b[0];//身高不 阅读全文
posted @ 2024-12-23 10:41 NeroMegumi 阅读(16) 评论(0) 推荐(0) 编辑
摘要:思路 一开始受到“摆动序列”的影响画图,有想过从左往右遍历,if当前孩子大于左孩子就比左孩子大1,else if大于右孩子就比右孩子大1 这样能保证“相邻两个孩子评分更高的孩子会获得更多的糖果。”但是不能保证每个人至少有1个糖果。 于是又想从右向左遍历,对于糖果数小于1个的做处理,此时发现很难通过一 阅读全文
posted @ 2024-12-17 11:08 NeroMegumi 阅读(9) 评论(0) 推荐(0) 编辑
摘要:思路 第一想法是排序后先把负数取反消耗k,但是这样有个问题:k还剩余,并且所有元素都为正数的时候,不好找最小值去消耗k 故采用绝对值逆序排序,这样就算全是正数了,它也是单调递减的,最小值就是size()-1位置的元素 static bool cmp(int a,int b){ return abs( 阅读全文
posted @ 2024-12-16 11:19 NeroMegumi 阅读(7) 评论(0) 推荐(0) 编辑
摘要:思路 和跳跃游戏I相比,这里要求最小跳跃数。 核心就是什么时候跳跃数+1 记录两个变量 当前能跳跃最远距离 curDis 下一步能跳跃的最远距离 nextDis 只有当移动下标走到curDis了,跳跃数才+1,并且更新curDis。 同时若此时更新的curDis已经大于等于 n-1 了那么就直接re 阅读全文
posted @ 2024-12-16 10:35 NeroMegumi 阅读(15) 评论(0) 推荐(0) 编辑
摘要:思路 每次递归都遍历第0到n-1列,判断当前位置是否合法——确保不会和之前的皇后同列、同斜线(同行已经通过递归避免了) 那么核心就是 怎么判断是否合法 怎么返回答案 2反而比较重要,因为我一开始就设了个vector<int> queen,表示第i个皇后在第queen[i]列。但这在本题不好用,之后还 阅读全文
posted @ 2024-12-14 10:30 NeroMegumi 阅读(11) 评论(0) 推荐(0) 编辑
摘要:思路 回溯——超时代码 把选机票当成走迷宫问题,选择一次机票就进入下一个地点,然后标记此次路径已使用。直接使用回溯模板。 vector<string> result; vector<string> path; void backTracking(vector<vector<string>>& tic 阅读全文
posted @ 2024-12-12 11:44 NeroMegumi 阅读(12) 评论(0) 推荐(0) 编辑
摘要:前两天Vscode还好好的,今天刷力扣想在本地调试发现关于std命名空间的所有代码都报错,识别不了 显示未定义 undefined reference to std::ostream::operator<<(std::ostream& (*)(std::ostream&))'或者 undefined 阅读全文
posted @ 2024-12-11 11:52 NeroMegumi 阅读(531) 评论(0) 推荐(0) 编辑
摘要:本文是教程笔记,教程原链接:【【Unity动画系统详解 四】八分钟理解并掌握Avatar和人形动画复用【Unity开发入门教程12】】 https://www.bilibili.com/video/BV1GL4y1B7s1/?share_source=copy_web&vd_source=fc9b8 阅读全文
posted @ 2024-12-05 18:48 NeroMegumi 阅读(144) 评论(0) 推荐(0) 编辑
摘要:这道题目最气的一点是,OJ评测输出为空,我想本地调试看看怎么回事,直接让豆包帮忙处理成可以直接运行的样子,没想到豆包帮我debug好了回文串判断方式,导致本地调试没问题。后面才意识到OJ上的回文串处理部分和本地的不一样。 思路 代码 class Solution { public: vector<s 阅读全文
posted @ 2024-12-05 09:47 NeroMegumi 阅读(7) 评论(0) 推荐(0) 编辑
摘要:这道题稍微有点难,我是突然想到要不试试把数组排序,画图发现只要出现candidates[i] == candidates[i-1]时(i>start)就可以剪枝,如下图 思路 首先这种去重的问题,用哈希表一般比较麻烦。可以从将数组先排序等变得好处理的角度去思考。 区别 这道题目和39.组合总和如下区 阅读全文
posted @ 2024-12-04 11:08 NeroMegumi 阅读(5) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示