==动态规划==
文章平均质量分 78
你的微笑依然那样灿烂
这个作者很懒,什么都没留下…
展开
-
0/1背包模板
# include # include # include # define max(x,y) x>y?x:y; int v[1001];//价值 int w[1001];//重量 int dp[1001][1001]; int main() { int n,m; while(scanf("%d%d",&m,&n)!=EOF)原创 2017-02-22 14:38:35 · 351 阅读 · 0 评论 -
hdu 5573贪心构造
题意:给权值n和步数k, 有一颗完全二叉树,第一个节点是1,他的左儿子就是i x 2,右儿子是i x 2+1 然后让你找到一个路径,使得通过加减恰好向下走k步之后,权值和为n 思路:贪心构造,观察一下会发现,叶子结点所在的一层的前两个叶子,往根部走,可以凑出来1~2*n-1所有的数,一列全是奇数,另一列全是偶数,不会存在找不到的情况。 怎么构造呢? 先找到叶子结点所在原创 2017-06-23 19:57:01 · 343 阅读 · 0 评论 -
K - Known Notation ZOJ - 3829 贪心
题意:给两种操作: (1)在表达式中填1; (2)交换任意两个元素; 要求用最少的操作使字符串构成逆波兰表达式。 思路:贪心。 (1)先让numof(*)==numof(1)-1; (2)从前往后扫,如果遇到*,numof(*)++; else numof(1)++; if numof(*)>=numof(1) 需要把后边的数字交换到前边的*, 即numof(*)--; n原创 2017-07-13 20:38:46 · 311 阅读 · 0 评论 -
K - K.Bro Sorting HDU - 5122 贪心
K - K.Bro Sorting HDU - 5122 题目大意:给一个1~n的一种排列,每次随机选一个数,如果下一个数比他小,则交换,一直进行上述过程直到下一个数比他大。最少经过多少次这样的循环能将其变成升序? 大致思路: 想要这样的循环次数最少必定是 每次选最大的不符合位置的数,将其交换至正确的位置。 从后面扫一遍数组,如果当前的位置的数不符合其位置,原创 2017-06-28 14:08:38 · 265 阅读 · 0 评论 -
动态规划---01背包与记忆化搜索
动态规划是一种高效的算法。在数学和计算机科学中,是一种将复杂问题的分成多个简单的小问题思想 ---- 分而治之。因此我们使用动态规划的时候,原问题必须是重叠的子问题。运用动态规划设计的算法比一般朴素算法高效很多,因为动态规划不会重复计算已经计算过的子问题。因为动态规划又可以称为“记忆化搜索”。 01背包是介绍动态规划最经典的例子,同时也是最简单的一个。我们先看看01背包的是转载 2017-08-08 10:38:12 · 452 阅读 · 0 评论 -
导弹拦截问题系列(dp)
导弹问题1 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000 的正整数),转载 2017-09-24 10:38:08 · 906 阅读 · 0 评论 -
【动态规划】矩阵连乘问题
问题描述:给定n个矩阵:A1,A2,...,An,其中Ai与Ai+1是可乘的,i=1,2...,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。输入数据为矩阵个数和每个矩阵规模,输出结果为计算矩阵连乘积的计算次序和最少数乘次数。 问题解析:由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一转载 2017-09-24 21:13:34 · 1330 阅读 · 0 评论 -
51nod 1007 正整数分组(背包/dp)
1007 正整数分组 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 将一堆正整数分为2组,要求2组的和相差最小。 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的。 Input 第1行:一个数N,N为正整原创 2017-09-16 23:21:01 · 313 阅读 · 0 评论 -
2017多校联合第四场/HDU 6068 Classic Quotation(kmp+dp)
Description 给出一个长度为n的字符串S和一个长度为m的字符串T,有q次查询,每次查询给出一个区间[L,R],求对所有1 Input 第一行一整数T表示用例组数,每组用例首先输入三个整数n,m,q分别表示S串串长和T串串长以及查询次数,之后输入串S和串T,两个串均由小写字母构成,最后q行每行输入两个整数L,R表示一次查询 (1 Output 对于每次查询,输出查询结果转载 2017-08-31 19:54:39 · 293 阅读 · 0 评论 -
H - Happy Matt Friends HDU - 5119 (dp+位运算)
H - Happy Matt Friends HDU - 5119 题意:给定n个数,从中分别取出0个,1个,2个...n个,并把他们异或起来,求大于m个总的取法。 思路:背包,第i个数,取和不取,两种状态,所以状态转移方程为dp[i][j] = dp[i-1][j] + dp[i-1][j^a[i]]; 代码: #include #include #includ原创 2017-06-30 16:29:10 · 357 阅读 · 0 评论 -
hdu4571最短路+记忆化搜索
题目大意:n个城市,m条路,总时间t,起始城市s,终点城市e,接下来给出各个城市的浏览时间,各个城市浏览后的满意程度。然后是m条路的信息。要求一个浏览顺序,使得总的满意程度最大,然后经过一个城市可以选择不去浏览,当前浏览城市的满意度一定要比前一个浏览城市的满意度高,并且最终要回到城市e 解题思路:因为经过一个城市可以不浏览,所以先用Floyd处理一下各个城市之间的最短路径,题目有个坑点就原创 2017-06-02 20:43:56 · 303 阅读 · 0 评论 -
最长公共子序列LCS模板
#include #include #include using namespace std; char s1[1000],s2[1000]; int len1,len2,dp[1000][1000],mark[1000][1000];//如果数据太大,dp数组可以考虑滚动数组 void LCS() { int i,j; mem原创 2017-02-22 14:41:11 · 444 阅读 · 0 评论 -
最长递增子序列
一般情况: [cpp] view plain copy #include #include #include using namespace std; int a[1005],dp[1005],n; int LIS() { int i,j,ans,m; dp[1] =原创 2017-02-22 14:45:07 · 260 阅读 · 0 评论 -
hdu4815(01背包)
链接:点击打开链接 题意:给出N道题,和一个概率P,然后给出每道题对应的得分a[i],两个人来答题,一个人是每道题答对的概率为0.5,问另一个人至少要答多少分才能保证有P的概率不会失败 代码: [cpp] view plain copy long long v[45],dp[40005]; int main(){ dou原创 2017-04-10 18:52:01 · 286 阅读 · 0 评论 -
hdu 1009 FatMouse' Trade(贪心)
Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean. The warehouse has N rooms. The i-th room con原创 2017-04-18 16:57:37 · 672 阅读 · 0 评论 -
Ball HDU - 4811 (找规律,求公式)
Jenny likes balls. He has some balls and he wants to arrange them in a row on the table. Each of those balls can be one of three possible colors: red, yellow, or blue. More precisely, Jenny has R re原创 2017-04-16 20:10:32 · 696 阅读 · 0 评论 -
hdu 4803 Poor Warehouse Keeper(贪心)
hdu 4803 Poor Warehouse Keeper(贪心) Jenny is a warehouse keeper. He writes down the entry records everyday. The record is shown on a screen, as follow: There are only two buttons on the scre原创 2017-04-16 20:00:34 · 524 阅读 · 0 评论 -
hdu 4915 Parenthese sequence (贪心+模拟)
题目大意: 一个序列中有左括号和右括号,还有问号,问号可以任意转换成左右括号。 问这个序列有多少种情况的转变使得这个序列变成合法的括号匹配序列。 思路分析: 首先我们分析一下,如何使得一个序列是合法的括号匹配序列。 我们很容易想到的是用栈模拟匹配过程。 当遇到左括号就进栈,当遇到右括号就让栈顶的左括号出栈。 那么在模拟的过程中,造成这个序列的不合法的原因只原创 2017-04-07 12:52:15 · 414 阅读 · 0 评论 -
poj 3617 Best Cow Line(贪心)
poj 3617 Best Cow Line (贪心) 题目链接:http://poj.org/problem?id=3617 题目意思:给出一条长度为n的字符串S,目标是要构造一条字典序尽量小,长度为n的字符串T。构造的规则是,如果S的头部的字母 S的尾部的字母,那么将S的尾部的字母加入到T中,删除S的尾部的字母。 这个题目的关键是如何处理 S 的头部的字母(假设用原创 2017-04-07 12:23:59 · 309 阅读 · 0 评论 -
poj 3624 01背包模板题
Charm Bracelet Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 41414 Accepted: 17991 Description Bessie has gone to the mall's jewelry store and spies a ch原创 2017-09-29 10:22:57 · 361 阅读 · 0 评论