摘要: 有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大白兔 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 有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大白兔 阅读(8) 评论(0) 推荐(0) 编辑
摘要: Shaass拥有n本书。他想为他的所有书制作一个书架,并想让书架的长宽尽量小。 第i本书的厚度是t[i],且这本书的纸张宽度是w[i]。书的厚度是1或2,所有书都有同样的高度(即书架的高是均匀的) Shaass以以下的方式摆放这些书籍。 * 1.他选择了一些书并竖直摆放它们。 * 2.他将剩余的书籍 阅读全文
posted @ 2023-08-23 21:11 失控D大白兔 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 一共有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大白兔 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 对于从 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大白兔 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 小明可以同时做计算两道不同的题目 习题集包含n道题目,没到题目耗时nums[i],求最少需要时间 ###1. 动态规划 题目等价于将数组划分为两个和最接近的数组,求两数组和的最大值 ``` int maxval(vector &nums){ //尝试划分为两个最接近的数组,同时返回两数组和的最大值 阅读全文
posted @ 2023-08-23 14:42 失控D大白兔 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 选取和不超过 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大白兔 阅读(6) 评论(0) 推荐(0) 编辑