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 ...
随机推荐
- Laravel 中国 - 巨匠级PHP开发框架 Laravel 中国社区
http://m.baidu.com/from=844b/bd_page_type=1/ssid=0/uid=3151E6C0905477A13653132D762BB6FB/pu=sz%401320 ...
- 服务器编程入门(1)TCP/IP协议族
问题聚焦: 简单地梳理一下TCP/IP各层的功能和常用协议 详细了解ARP(数据链路层)和DNS(应用层)协议的工作原理 1 TCP/IP协议族体系结构 数据链路层: 职责:实现网卡接口的网络 ...
- SE 2014年4月3日
一 OSPF协议都支持哪些特殊区域?每种特殊区域都有什么特点. OSPF协议支持的特殊区域主要有stub区域.totally stub区域以及nssa区域,其中stub区域一般出现在末梢网络,即它的 ...
- eval、json.parse()的介绍和使用注意点
原文:eval.json.parse()的介绍和使用注意点 eval和json.parse的使用 eval:来源于官网 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScri ...
- 提供一个好用的Oracle Database 11g 下载地址
提供一个好用的Oracle Database 11g 下载地址,在windows xp 操作系统下,测试通过. http://download.oracle.com/otn/nt/oracle11g/ ...
- Luci - UCI (Unified Configuration Interface)
参考: http://wiki.openwrt.org/doc/techref/uc http://luci.subsignal.org/api/luci/modules/luci.model.uci ...
- 采用DWR、maven保存数据到数据库
一.原理: Ajax是时下比较流行的一种web界面设计新思路,其核心思想是从浏览器获取XMLHttp对象与服务器端进行交互. DWR(Direct Web Remoting)就是实现了这种Ajax技术 ...
- Javascript语言精粹之String常用方法分析
Javascript语言精粹之String常用方法分析 1. String常用方法分析 1.1 String.prototype.slice() slice(start,end)方法复制string的 ...
- Windows Phone开发(40):漫谈关键帧动画之中篇
原文:Windows Phone开发(40):漫谈关键帧动画之中篇 一.DiscreteDoubleKeyFrame 离散型关键帧动画,重点,我们理解一下"离散"的意思,其实你查一 ...
- UML 之 序列图和协作图
序列图(Sequence Diagram) 亦称为时序图或循序图,是一种UML行为图.它通过描写叙述对象之间发送消息的时间顺序显示多个对象之间的动态协作.它能够表示用例的行为顺序,当运行一个用 ...