pku1384---Piggy-Bank(动态规划)
320K | 188MS | GCC | 778B | 2009-02-15 21:37:37 |
之前想用背包(搜索)做,一直做不出来,不知道是不是考虑的不全面。(wa)
后来用搜索全部解来找最小值来做,出现time limited
无奈,只好去网上寻求帮助:看了一个人对这道题的做法的一句话:
用a[i]表示重量为i的最小价值,对于每一个价值为v[j],重量为w[j]的硬币,用a[i]+v[j]去刷新a[i+w[j]]。
也就是说用动态规划来做了。。O(硬币的总类数*包总重量)
在pku的discuss上还发现有O(硬币的总类数*硬币的总类数的做法),实在无法参透。。
哎,我太菜了。。。
现把我写的代码附上:
#include<stdio.h>
#include<stdlib.h>
struct coin{
int p;
int w;
};
struct coin a[502];
int t,weight,n,ans,flag,dp[10002];
void input()
{
int i;
scanf("%d %d",&i,&weight);
weight-=i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d %d",&a[i].p,&a[i].w);
for(i=0;i<=weight;i++)
dp[i]=-1;
}
void process()
{
int i,j;
dp[0]=0;
for(i=1;i<=weight;i++){
for(j=0;j<n;j++){
if(i<a[j].w)
continue;
if(dp[i-a[j].w]!=-1&&(dp[i]==-1||dp[i-a[j].w]+a[j].p<dp[i]))
dp[i]=dp[i-a[j].w]+a[j].p;
}
}
if(dp[weight]==-1)
printf("This is impossible.\n");
else
printf("The minimum amount of money in the piggy-bank is %d.\n",dp[weight]);
}
int main()
{
scanf("%d",&t);
while(t--){
input();
process();
}
return 0;
}
转载于:https://www.cnblogs.com/pandy/archive/2009/02/15/1391112.html
pku1384---Piggy-Bank(动态规划)相关推荐
- java实现动态规划算法解决存钱罐问题(piggy bank)
一.实验目的 练习使用动态规划算法解决实际问题(使用Java语言实现) 二.实验内容 [问题描述] 给定一个空存钱罐的重量和这个存钱罐最多能装进去的重量,现在需要在不打破这个存钱罐的情况下猜测里面最少 ...
- piggy bank 完全背包
题目描述 Before ACM can do anything, a budget must be prepared and the necessary financial support obtai ...
- 循环 直到 python_如果您在Python中存在慢循环,则可以对其进行修复……直到无法解决为止...
循环 直到 python by Maxim Mamaev 马克西姆·马马耶夫(Maxim Mamaev) Let's take a computational problem as an exampl ...
- 独家 | 人工神经网络中发现了人类大脑拥有的多模态神经元(附链接)
作者:Gabriel Goh, Chelsea Voss, Daniela Amodei, Shan Carter, Michael Petrov, Justin Jay Wang, Nick Cam ...
- 一步步学习如何安装并使用SAP HANA Express Edition
使用Jerry这篇文章在Google Cloud platform上的Kubernetes集群部署HANA Express里介绍的方法在Google Cloud Platform的Kubernetes ...
- TensorFlow神经网络(九)VGG net论文阅读笔记
[注]内容来自MOOC人工智能实践TensorFlow笔记课程第8讲 来源:2015 ICLR 用于图像分类的文章: Very Deep Convolutional Networks for Larg ...
- ValueError: You are trying to load a weight file containing 0 layers into a model with 16 layers.
ValueError: You are trying to load a weight file containing 0 layers into a model with 16 layers. 在使 ...
- imagenet数据集类别标签和对应的英文中文对照表
预测结果输出one-hot类型,最大概率的下标即为对于类别号 0: 'tench, Tinca tinca', 丁鲷(鱼) 1: 'gold ...
- 这段时间做的简单dp题目(部分)
这些时间vj上做的部分题目 HDU5115 题意:第一行t,t组测试数据,每组数据第一行输入n表示n匹狼,第二行给出一个序列表示每匹狼的伤害,第三行给出每匹狼能给周围狼的伤害增幅,求怎样打可以得到最小 ...
- Bootstrap 4 snippets 代码段
Trigger Description b4-$ Bootstrap master template Alert Trigger Description b4-alert-additional-con ...
最新文章
- distribution counting—a sorting method from aocp
- 大对象简介+大对象的4种类型+lob类型的优点+lob的组成
- sklearn的简单使用
- intern()方法的使用
- 几行代码创建属于你自己的SQL数据库
- Linux下PostgreSQL的安装和配置
- Python稳基修炼的经典案例9(计算机二级、初学者必会turtle库例题)
- 快速幂或者矩阵快速幂
- 截取url的host_js如何准确获取当前页面url网址信息
- php session不可用,php session 使用与安全
- 【高并发解决方案】高并发解决方案汇总
- Mysql主从同步及主从同步延迟解决方案
- 两节串联锂电池充电管理芯片,IC的充放电方案
- st58服务器装系统,安装系统 - 微擎 - 公众平台自助开源引擎
- teams快捷键_每个Microsoft Teams键盘快捷键及其使用方法
- 不准用组函数(Max),取得最高薪水
- 微信小程序:电商发展蓝图解析
- ATTCK红日靶场二
- 写一封信给N年前的自己
- 【双连通分量】 FZU 2181 快来买肉松饼
热门文章
- 第十六届全国大学生智能汽车竞赛总决赛 AI视觉组线上赛图片显示软件发布及线上赛注意事项
- 双车组三轮图像处理总结:18cm三轮摄像头图像处理
- 如何实现远程控制你的电脑? 网穿软件
- 无线信标功能调试-2021-3-9-输出功率恒定限制
- AI机器学习实战の电磁智能车篇
- mysql数据库支持的锁粒度包括_1. Mysql的并发(锁策略、锁粒度、事务)
- otf和ctf的意义_光学信息技术原理及应用 OTF与CTF的比较与计算.ppt
- 笔记本电脑连接服务器的显示器不亮,电脑显示器不亮怎么回事 电脑显示器不亮解决办法【图文】...
- android 切换 preferencefragment,Android PreferenceActivity与PreferenceFragment详解及简单实例_Android_脚本之家...
- linux硬盘写0,linux – kworker消耗90%的IO和零磁盘写入