uva--165(邮资问题,dp)
题意:
某国家发行k种不同面值的邮票,而且规定每张信封上最多仅仅能贴h张邮票。
公式n(h,k)表示用从k中面值的邮票中选择h张邮票,能够组成面额为连续的1。2。3,……n。 n是能达到的最大面值之和。
快被坑死了。回溯法是能够的,能够利用回溯法推断能拼出的数值,可是利用动态规划的思想能够提高效率,dp[i]表示拼出i须要的最少数量邮票,tmp数组一開始定义成全局了,无限TLE,貌似由于出不了wa就超时了…………
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<map>
#include<cstring>
#include<vector>
#include<algorithm>
#define INF 0X3f3f3f3f
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std; typedef long long ll;
typedef unsigned long long llu;
const int maxd=1000+50;
int stamp[15] ,maxval[15],ans[15],dp[maxd];
int h,k; void solve(int cur)
{ if(cur==k)
{
if(maxval[k-1]>ans[k])
{
memcpy(ans,stamp,sizeof(stamp));
ans[k]=maxval[k-1];
}
return;
}
int tmp[maxd];
memcpy(tmp,dp,sizeof(dp));
for(int i=stamp[cur-1]+1; i<=maxval[cur-1]+1; ++i)
{
stamp[cur]=i; for(int j=1; j<=stamp[cur]*h; ++j)
{
for(int k=1; k<=h; ++k)
{
int num=k*stamp[cur];
if(j>=num && dp[j-num]>=0)
{
if(dp[j]<0 && dp[j-num]+k<=h) dp[j]=dp[j-num]+k;
else if(dp[j-num]+k<dp[j]) dp[j]=dp[j-num]+k;
} }
int cnt=maxval[cur-1];
while(dp[cnt]>0) ++cnt;
maxval[cur]=cnt-1;
}
solve(cur+1);
memcpy(dp,tmp,sizeof(tmp));
}
} int main()
{
freopen("1.txt","r",stdin);
while(scanf("%d%d",&h,&k)==2 && (h+k))
{ ans[k]=0;
stamp[0]=1,maxval[0]=h;
mem(dp,-1);
for(int i=0; i<=h; ++i)
dp[i]=i;
solve(1);
for(int i=0; i<k; ++i)
printf("%3d",ans[i]);
printf(" ->%3d\n",ans[k]);
}
return 0;
}
uva--165(邮资问题,dp)的更多相关文章
- UVA.674 Coin Change (DP 完全背包)
UVA.674 Coin Change (DP) 题意分析 有5种硬币, 面值分别为1.5.10.25.50,现在给出金额,问可以用多少种方式组成该面值. 每种硬币的数量是无限的.典型完全背包. 状态 ...
- uva 10817(数位dp)
uva 10817(数位dp) 某校有m个教师和n个求职者,需讲授s个课程(1<=s<=8, 1<=m<=20, 1<=n<=100).已知每人的工资c(10000 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- uva 10453 - Make Palindrome(dp)
题目链接:10453 - Make Palindrome 题目大意:给出一个字符串,通过插入字符使得原字符串变成一个回文串,要求插入的字符个数最小,并且输出最后生成的回文串. 解题思路:和uva 10 ...
- uva 10671 - Grid Speed(dp)
题目链接:uva 10671 - Grid Speed 题目大意:给出N,表示在一个N*N的网格中,每段路长L,如今给出h,v的限制速度,以及起始位置sx,sy,终止位置ex,ey,时间范围st,et ...
- uva 1331 - Minimax Triangulation(dp)
option=com_onlinejudge&Itemid=8&page=show_problem&category=514&problem=4077&mosm ...
- UVa 11825 - Hackers' Crackdown DP, 枚举子集substa = (substa - 1)&sta 难度: 2
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- uva 10721 - Bar Codes(dp)
题目链接:uva 10721 - Bar Codes 题目大意:给出n,k和m,用k个1~m的数组成n,问有几种组成方法. 解题思路:简单dp,cnt[i][j]表示用i个数组成j, cnt[i][j ...
- UVA 10328 - Coin Toss dp+大数
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_proble ...
- uva 104 Arbitrage (DP + floyd)
uva 104 Arbitrage Description Download as PDF Background The use of computers in the finance industr ...
随机推荐
- 【iOS开发】 常遇到的Crash和Bug处理
一,Unknown type name .... 如果是报这个错误,多半是你的对象类型没有被识别,检查是不是没有引用对应的库或者头文件在你的文件头部分,还有可能是循环引用导致的,循环引用的解决方法就是 ...
- Android 启动过程的底层实现
转载请标明出处: http://blog.csdn.net/yujun411522/article/details/46367787 本文出自:[yujun411522的博客] 3.1 androi ...
- ZTESoft 持续集成 编年史 之 持续集成建设---自主研发(总括)
最终选择了自主研发,考虑到我们团队对java以及flex知识的储备,展示层使用夸浏览器的flex开发,后端业务层使用java. 一.方案: BEC + ZCIPAgent + ZCIPServer + ...
- 收藏的一段关于java大数运算的代码
收藏的一段关于java大数运算的代码: package study_02.number; import java.math.BigDecimal; import java.math.BigIntege ...
- Java http数据MD5、AES、DES加密
一,数据加密 1.提供了,md5,Hex,Sha等不可逆算法加密 2.AES加密,此加密方式瘦平台影响较重,所以只适合同类平台加密解密 3.DES自定义加密,跨平台,兼容性好 1.org.apache ...
- c++ cin>>详解
参考地址:http://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html 程序的输入都建有一个缓冲区,即输入缓冲区.一次输入过程是这样的,当 ...
- js正则匹配html内容
1.得到网页上的链接地址: string matchString = @"<a[^>]+href=\s*(?:'(?<href>[^']+)'|"" ...
- java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory
Myeclipse 8.6使用tomcat7时间.执行javaweb如报告了以下错误项: java.lang.NoClassDefFoundError: org/apache/juli/logging ...
- 设计模式C++达到 3.抽象工厂
简单工厂模式和工厂模式 要求 同类型的产品子类有共同的方法.这限制了产品子类的扩展.抽象工厂能client它提供了一个接口,它是client而不必指定产品的详细信息.创建多个产品系列产品对象.在归为一 ...
- Ubuntu下安装vmware 9.0 + 注册码
先附上一些注册码到时使用: NA0UF-DUH00-QZHM0-MU17K-CC824 4F469-F024Q-CZ8R9-DL1N0-13C6W HF261-0HL40-FZX21-F9AQ2-0C ...