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

摘要:Shaass拥有n本书。他想为他的所有书制作一个书架,并想让书架的长宽尽量小。 第i本书的厚度是t[i],且这本书的纸张宽度是w[i]。书的厚度是1或2,所有书都有同样的高度(即书架的高是均匀的) Shaass以以下的方式摆放这些书籍。 * 1.他选择了一些书并竖直摆放它们。 * 2.他将剩余的书籍 阅读全文
posted @ 2023-08-23 21:11 失控D大白兔
摘要:一共有n个文件,每个文件大小为c[i],价值为w[i] U盘大小为S,传输端口大小为L,求最小的传输端口L使得U盘总文件价值不小于p ###1. 二分 + 动态规划 端口只是限制了可选的文件,去掉这个限制后,原问题是0-1背包问题 ``` void maxval(int n,int p,int S, 阅读全文
posted @ 2023-08-23 15:51 失控D大白兔
摘要:对于从 1∼n 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的 求可以划分的方案数 ###1. 动态规划 ``` long long maxval(int n){ int sum = (1+n)*n/2; if(sum%2==1) return 0; vector dp(sum+ 阅读全文
posted @ 2023-08-23 15:08 失控D大白兔
摘要:小明可以同时做计算两道不同的题目 习题集包含n道题目,没到题目耗时nums[i],求最少需要时间 ###1. 动态规划 题目等价于将数组划分为两个和最接近的数组,求两数组和的最大值 ``` int maxval(vector &nums){ //尝试划分为两个最接近的数组,同时返回两数组和的最大值 阅读全文
posted @ 2023-08-23 14:42 失控D大白兔
摘要:选取和不超过 S 的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。 ###1. 动态规划 + 筛预处理 ``` vector prime(10e3+1,1);//约数和,即价值 int init = []() {//筛预处理 for(int i=2;i dp(V+1); long lo 阅读全文
posted @ 2023-08-23 00:59 失控D大白兔
摘要:有x个药物和n个敌人 战胜第i敌人可以获得win[i]的经验值,失败可以获得lose[i]经验值,要想战胜第i个敌人,需要使用c[i]个药物 求可以获得的最大经验值 ###1. 动态规划 有点类似分组背包,失败需要0个药物,战胜或输给同一个敌人不能同时发生,属于同一组 但该题战胜敌人可能使用0个药物 阅读全文
posted @ 2023-08-22 23:50 失控D大白兔
摘要:东海未填平的区域还需要至少体积为 v 的木石才可以填平,而西山上的木石还剩下 n 块,每块的体积和把它衔到东海需要的体力分别为 k 和 m。 精卫已经填海填了这么长时间了,她也很累了,她还剩下的体力为 c。 如果精卫能把东海填平,则输出她把东海填平后剩下的最大的体力,否则输出 Impossible 阅读全文
posted @ 2023-08-22 16:31 失控D大白兔
摘要:餐馆菜品种类不少,有N种,第i中卖c[i]元,且每种只有一样 小A要把V元全部花光,问有多少种点菜方式 ###1. 动态规划 dp[j] = dp[j] + dp[j-c[i]] ``` int maxval(int V,vector&c){ int n = c.size(); vector dp( 阅读全文
posted @ 2023-08-22 15:50 失控D大白兔
摘要:有一个箱子容量为 V,同时有 n 个物品,每个物品有一个体积。 现在从 n 个物品中,任取若干个装入箱内(也可以不取),使箱子的剩余空间最小。输出这个最小值。 ###1. 动态规划 使用动态规划计算可达性即可 ``` int maxval(int V,vector&c){ int n = c.siz 阅读全文
posted @ 2023-08-22 15:31 失控D大白兔
摘要:医师把辰辰带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间, 每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” ###1. 动态规划(0-1背包) 每个药草是唯一的 阅读全文
posted @ 2023-08-22 15:14 失控D大白兔
摘要:Every k-th, l-th, m-th, n-th dragon will be damaged, How many dragons suffered damage , if the princess counted a total of D dragons? 1. Straightforwa 阅读全文
posted @ 2023-08-11 11:44 失控D大白兔
摘要:给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,其中每个节点 至多 有一条出边。 图用一个大小为 n 下标从 0 开始的数组 edges 表示,节点 i 到节点 edges[i] 之间有一条有向边。 如果节点 i 没有出边,那么 edges[i] == -1 。 1. 深度优先搜 阅读全文
posted @ 2023-06-09 02:41 失控D大白兔
摘要:1. 图中的最短环 广度优先搜索 class Solution { public: int findShortestCycle(int n, vector<vector<int>> &edges) { vector<vector<int>> g(n);//二维矩阵存储 for (auto &e: e 阅读全文
posted @ 2023-04-12 01:33 失控D大白兔
摘要:``` 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数独部分空格内已填入了数字,空白格用 '.' 表示。 ``` 阅读全文
posted @ 2022-05-13 13:31 失控D大白兔
摘要:n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上并且使皇后彼此之间不能相互攻击。 **要求**:任何两个皇后不同行,不同列也不在同一条斜线上, 给你一个整数n,返回所有不同的n皇后问题的解决方案。 每一种解法包含一个不同的n皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和 阅读全文
posted @ 2022-05-10 10:41 失控D大白兔
摘要:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 一. 动态规划 经典动态规划类型题目,这种问题关键在于如何将问题规模缩小并且找到边界 即找到状态转移方程和边界条件 很显然跳第n阶的方法,会等于n-2阶和n-1阶之和 即状态转移方 阅读全文
posted @ 2022-05-09 20:42 失控D大白兔