随笔分类 -  算法能力全面提升综合题单

摘要:1. 牛牛喝醉 牛牛昨晚喝醉了,走路开始疯狂摇摆,方向也分不清了。假设他所在的地方是一个二维平面,开始它位于坐标为(0,0)的地方, 并且面朝北方即y轴正方向。W表示牛牛向前走,A表示牛牛把当前方向向左转90度,D表示牛牛把方向向右转90度,S表示牛牛呆在原地。 给出一个字符串表示牛牛的酒后行为方式 阅读全文
posted @ 2024-09-06 20:56 失控D大白兔
摘要:1. 小美的密码 小美准备登录美团,需要输入密码,小美忘记了密码,只记得密码可能是 n个字符串中的一个。 小美会按照密码的长度从小到大依次尝试每个字符串,对于相同长度的字符串,小美随机尝试,并且相同的密码只会尝试一次。 小美想知道,她最少需要尝试多少次才能登录成功,最多需要尝试多少次才能登录成功。 阅读全文
posted @ 2024-09-05 17:33 失控D大白兔
摘要:1. 交换树节点 给定一棵树,每个节点有一个权值。现在每次可以交换任意两个节点的权值, 请问最少多少次交换可以使得每个节点的权值等于它的编号? 保证给出的权值是一个排列,也就是说保证一定有解。 不用考虑树的关系,因为不是相邻交换 ``` int main() { int n; cin>>n; vec 阅读全文
posted @ 2024-09-05 16:16 失控D大白兔
摘要:1. 数组价值 米小游有一个长度为 n 的数组,其中第 i 个元素为 ai。现在定义数组的价值是最大的相邻数字的乘积。 例如数组为 [3,5,1,2] ,相邻元素的乘积分别是 35=15,51=5和1*2=2 ,则数组的价值是这些数字中的最大值,即 15。 现在米小游想要任选数组中的某两个相邻的元素 阅读全文
posted @ 2024-09-04 21:29 失控D大白兔
摘要:1. 更衣室 一个自动化的储物柜系统被引入更衣室,当客户访问时,系统的工作方式如下: 如果客户没有被分配储物柜,系统分配给他们一个具有最小可用编号的储物柜。如果客户已经有分配的储物柜,系统打开并释放储物柜。 之后,该储物柜可以重新分配给其他客户。锁柜从1开始编号。一天开始时,所有锁柜都是空的。 系统 阅读全文
posted @ 2024-09-04 18:46 失控D大白兔
摘要:1. 购房之旅 小强有n个朋友,每个朋友有一定数量的金币,现在他们要购买房子,一共有m个房子,每个房子有两个参数:舒适度和价格,当一个人的金币大于等于一个房子的价格时,才可以购买房子,且要满足以下条件:1.一个人至多购买一个房子。2.一个房子至多被一个人购买。现在小强想知道n个朋友购买的房子的舒适度 阅读全文
posted @ 2024-09-03 17:57 失控D大白兔
摘要:1. 找01 牛牛拥有一个长度为 n 的01 串,现在他想知道,对于每个字符,在它前面的最近的不同字符的下标是多少? 两个下标记录上一个01位置 int main(int argc, char *argv[]) { int T; cin>>T;//测试组数 while(T--){ int n; ci 阅读全文
posted @ 2024-09-03 13:26 失控D大白兔
摘要:给定一棵树,每个节点都有一个权值以及最开始是白色。 定义操作A: 选择两个有边直接相连的节点,可以将两个节点同时染红.当且仅当他们都是白色 但是这样的题目太过简单,所以我们定义一个更复杂的操作B: 在满足操作A的条件下 两个节点的权值的乘积也需要是x∗x的形式 ,现在允许执行操作若干次操作B。问这棵 阅读全文
posted @ 2023-11-05 21:32 失控D大白兔
摘要:关键在于定义状态,状态如何转移,以及记录状态 1. 打家劫舍 状态定义为当前i节点位于状态j时(偷与不偷),子树的最大价值 2. 收集所有金币可获得的最大积分 状态定义为当前i节点位于第j层时,子树的最大积分值 3. 在树上执行操作以后得到的最大分数 状态定义为当前i节点位于状态j时(健康与否),子 阅读全文
posted @ 2023-11-05 16:03 失控D大白兔
摘要:现有一个有向图,其中包含 n 个节点,节点编号从 0 到 n - 1 。此外,该图还包含了 n 条有向边。 给你一个下标从 0 开始的数组 edges ,其中 edges[i] 表示存在一条从节点 i 到节点 edges[i] 的边。 你从节点 x 开始,通过边访问其他节点,直到你在此过程中再次访问 阅读全文
posted @ 2023-10-01 16:20 失控D大白兔
摘要:给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 ###1. 动态规划 由于二叉搜索树是有序的,父节点值大于左子树,而小于右子树,所以选定根节点后会将集合划分为两部分 显然,左子树和右子树的构成同样也是个二叉搜索树个数 阅读全文
posted @ 2023-08-29 02:30 失控D大白兔
摘要:一般是要求在对数时间完成查询,或是索引链接过长,迭代步数太多 ###1. [树节点的第K个祖先](https://www.cnblogs.com/929code/p/17473917.html) ###2. [在传球游戏中最大化函数值](https://www.cnblogs.com/929code 阅读全文
posted @ 2023-08-29 00:25 失控D大白兔
摘要:小A买了一个空间跑路器,每秒钟可以跑 2^k千米(k 是任意自然数)。 当然,这个机器是用longint 存的,所以总跑路长度不能超过其范围。 小A的家到公司的路可以看做一个有向图,小A 家为点 1,公司为点 n,每条边长度均为一千米。 小A想每天能醒地尽量晚,所以让你帮他算算,他最少需要几秒才能到 阅读全文
posted @ 2023-08-29 00:25 失控D大白兔
摘要:###一. 广度优先算法 使用队列记录当前层次的状态 同时使用哈希表防止重复遍历 单向广度优先是逐渐增大范围同时判断目标是否在范围内 ``` int dir[4][2] = {{1,0},{0,-1},{-1,0},{0,1}}; int main() { string board; cin>>bo 阅读全文
posted @ 2023-08-25 02:16 失控D大白兔
摘要:爱与愁大神后院里种了n 棵樱花树,每棵都有美学值 爱与愁大神在每天上学前都会来赏花。爱与愁大神可是生物学霸,他懂得如何欣赏樱花: 一种樱花树看一遍过,一种樱花树最多看,一种樱花树可以看无数遍。 但是看每棵樱花树都有一定的时间 。爱与愁大神离去上学的时间只剩下一小会儿了。求解看哪几棵樱花树能使美学值最 阅读全文
posted @ 2023-08-24 00:52 失控D大白兔
摘要:自 01背包问世之后,小 A 对此深感兴趣。一天,小 A 去远游,却发现他的背包不同于 01 背包, 他的物品大致可分为 k 组,每组中的物品相互冲突,现在,他想知道最大的利用价值是多少。 ###1. 动态规划 分组背包 ``` int maxval(int v,vector&c,vector&w, 阅读全文
posted @ 2023-08-24 00:39 失控D大白兔
摘要:设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重≤1000),可以表示成多少种重量? ###1. 动态规划 多重背包问题,结合0-1背包求解 ``` void ZeroOnePack(int cost,vector &dp){ for(int j=1000;j>=cost;j--) 阅读全文
posted @ 2023-08-24 00:16 失控D大白兔
摘要:有n种药草,每种药草数量无限,给出采摘药草的时间和价值 同时给出总时间t,求能采摘的最大价值 ###1. 动态规划 ``` void maxval(int v,vector&c,vector&w){ int n = w.size(); long long dp[v+1]; memset(dp,0,s 阅读全文
posted @ 2023-08-23 23:23 失控D大白兔
摘要:有n种候选食物,且只有一样,分别给出对应食物的体积、质量、卡路里 飞船空间和载重都有限,分别为v和m,求能承载食物的最大卡路里 ###1. 动态规划 ``` void maxval(int v,int m,vector&weight,vector&volume,vector&w){ int n = 阅读全文
posted @ 2023-08-23 23:05 失控D大白兔