摘要: 题意:给出存钱罐空和满的时候的重量,然后给出n种钱币,计算存钱罐满的时候存钱罐内最少有多少枚钱币 分析:完全背包问题,恰好装满,只要把dp[0]设为0,其他的设为INF(表示一个不可能达到的数,注意取得数不要再+-中超过精度) 这样就能保证值不为INF的都能找到一条从0到i的路径 #include< 阅读全文
posted @ 2017-03-15 15:23 N维解析几何 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 题意:给n个数,输出最大上升子序列的和 分析:类似最长上升子序列,dp[i]表示选i的时候最大的上升子序列和 那么 dp[i]=a[i]; for(int j=0;j<i;j++) if(a[j]<a[i]&&dp[j]+a[i]>dp[i]) dp[i]=dp[j]+a[i]; 复杂度O(n^2) 阅读全文
posted @ 2017-03-15 15:14 N维解析几何 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 题意:小明有n门课,每门课都给出了名字 截止时间 做完需要时间 如果到期没有做完,那么每天每门课要扣除一分,只有昨晚一门课才能去做另一门课 输出扣除分的最小值,并且输出序号字典序最小的那组做作业顺序 分析:只有15门课,可以想到用二进制表示每门课是否做完,那么接下来枚举每个状态就好了 输出方案的话, 阅读全文
posted @ 2017-03-15 14:59 N维解析几何 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 题意:给出多种a*b*c的箱子,每种箱子有多个每个箱子底面如果长和宽均小于另一个箱子的低面,那么这个箱子那么可以放在那个箱子上面 请输出箱子能够排列的最大的高度 分析:一种箱子最多有6种有效状态,那么把每个箱子拆分为6个箱子,(a,b,c)分别表示长宽高 那么比较一个箱子是否能放在另一个箱子提供了方便,如果一个箱子底面积小于另一个,那么必然不能放在下面,按照箱子底面积排序 dp[i]表示选第i个箱... 阅读全文
posted @ 2017-03-15 13:53 N维解析几何 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 题意:给n(n为奇数)个数,接下来给出n个数,并且其中一个数出现大于等于(n+1)/2次,请输出那个数 分析:数不多,可以map记录每个数的个数,然后迭代器寻找就可以了 也可以充分利用数大于一半的条件 #include<bits/stdc++.h> using namespace std; cons 阅读全文
posted @ 2017-03-15 13:38 N维解析几何 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 题意:最大子序列和加强版,恰好有m个子序列,输出这m个子序列的最大和 分析:先想一下最大子序列和,用dp[i]表示选第i个数的最大和,那么max(dp[i])0<i<=n就是答案 恰好分为m个,那么增加一维表示选第i个并且恰好分为j块的最大和,那么可以轻松得到状态转移方程 dp[i][j]=max( 阅读全文
posted @ 2017-03-15 13:23 N维解析几何 阅读(119) 评论(0) 推荐(0) 编辑