洛谷P1860——新魔法药水】的更多相关文章

洛谷题目链接 动态规划: 这个题目调了我好久....结果循环变量写错了... 而且题目有个坑!!!只能用开始给你的$v$元买入东西 回归正题: 我们定义状态$ans[i][j]$表示第$i$个物品用了至多$j$次魔法的最小花费,但是我们发现这样子的话不好与合成关系联系在一起,那么我们再定义一个数组$f[i][j]$表示某一个合成关系中,前$i$个物品中用至多$j$次魔法合成的最小花费 那么最后就普通$dp$就行了 #include<iostream> #include<cstdio>…
传送门:QAQQAQ 题意:商店里有N种药水,每种药水都有一个售价和回收价.小S攒了V元钱,还会M种魔法,可以把一些药水合成另一种药水.他一天可以使用K次魔法,问他一天最多赚多少钱? N<=60 M<=240 V<=1000 k<=30 思路:这是一道比较有技术含量的DP题. 我们定义$dp[i][j]$为消耗了$i$个金币(金币不能回收),使用了$j$次魔法能得到的最多钱(最后求答案时注意要$dp[i][j]-i$) 在直接转移的过程中,我们无法知道使用的金币都花在了哪些药品上,…
洛谷P1242 新汉诺塔 最开始的思路是贪心地将盘子从大到小依次从初始位置移动到目标位置. 方法和基本的汉诺塔问题的方法一样,对于盘子 \(i\) ,将盘子 \(1\to i-1\) 放置到中间柱子上,即 \(6 - from - to\) 号柱子.基本递归实现. 但是贪心的优先将大盘移动到指定位置存在一些特殊情况处理错误. 例如如下数据,最优的方案并不是把大盘一步移到位,而是先移到了一根空柱上. 3 1 3 0 2 2 1 2 2 1 0 1 3 move 3 from A to B move…
P1305 新二叉树 题目描述 输入一串完全二叉树,用遍历前序打出. 输入输出格式 输入格式: 第一行为二叉树的节点数n. 后面n行,每一个字母为节点,后两个字母分别为其左右儿子. 空节点用*表示 输出格式: 前序排列的完全二叉树 输入输出样例 输入样例#1: 6 abc bdi cj* d** i** j** 输出样例#1: abdicj /*递归搜索解决二叉树问题*/ #include<iostream> #include<string> using namespace std…
题目大意 具体题面及输入格式戳我! 商店里有\(N\)种药水,每种药水都有一个售价和回收价. 小\(S\) 攒了\(V\)元钱,还会\(M\)种魔法,可以把一些药水合成另一种药水. 他在第一天可以购买药水.使用最多\(K\)次魔法,然后第二天在把手头上的药水出售. 现在小\(S\)希望知道两天之内他最多能够赚多少钱? 样例输入: \(4\ \ 2\ \ 6\ \ 3\) \(1\ \ 0\) \(1\ \ 0\) \(5\ \ 3\) \(20\ \ 15\) \(3\ \ 2\ \ 1\ \…
题目描述 输入一串完全二叉树,用遍历前序打出. 输入输出格式 输入格式: 第一行为二叉树的节点数n. 后面n行,每一个字母为节点,后两个字母分别为其左右儿子. 空节点用*表示 输出格式: 前序排列的完全二叉树 输入输出样例 输入样例#1: 6 abc bdi cj* d** i** j** 输出样例#1: abdicj 代码 #include<iostream> #include<cstring> #include<algorithm> #include<cstd…
传送门啦 首先要将第n个盘子从x到y,那么就要把比n小的盘子全部移到6-x-y,然后将n移到y 仔细想想:6代表的是3根初始柱,3根目标柱. 6-(x+y) 便是我们的中转柱了,因为到这个位置是最优的. 感觉题目有锅啊. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 55;…
题目描述 设有n个大小不等的中空圆盘,按从小到大的顺序从1到n编号.将这n个圆盘任意的迭套在三根立柱上,立柱的编号分别为A.B.C,这个状态称为初始状态. 现在要求找到一种步数最少的移动方案,使得从初始状态转变为目标状态. 移动时有如下要求: ·一次只能移一个盘: ·不允许把大盘移到小盘上面. 输入输出格式 输入格式: 文件第一行是状态中圆盘总数: 第二到第四行分别是初始状态中A.B.C柱上圆盘的个数和从上到下每个圆盘的编号: 第五到第七行分别是目标状态中A.B.C柱上圆盘的个数和从上到下每个圆…
题目描述 商店里有N种药水,每种药水都有一个售价和回收价.小S攒了V元钱,还会M种魔法,可以把一些药水合成另一种药水.他一天可以使用K次魔法,问他一天最多赚多少钱? 输入输出格式 输入格式: 第一行四个数N.M.V.K 接下来N行,每行两个数,表示药水的售价和回收价. 接下来M行,每行若干个数,第一个数表示魔法的成品,第二个数是原料的种数,接下来为各种原料的编号 输出格式: 一个数,表示小S的最大利润 好棒的一道$dp$,瞎撸一节课竟然搞出来了.. 其实本质就是一个一维背包和一个二维费用背包套在…
线性基 +博弈论 先手必胜当且仅当先手取完之后留下的序列无论如何组合,异或和都不为 0 也就是剩下的整数线性无关,所以我们对所有整数排序,由高往低的贪心的插入线性基, 无法插入的就有先手取出,容易发现,先手必胜 #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #include <cstdlib>…