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(硬币的总类数*硬币的总类数的做法),实在无法参透。。

哎,我太菜了。。。

现把我写的代码附上:

Code
#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(动态规划)相关推荐

  1. java实现动态规划算法解决存钱罐问题(piggy bank)

    一.实验目的 练习使用动态规划算法解决实际问题(使用Java语言实现) 二.实验内容 [问题描述] 给定一个空存钱罐的重量和这个存钱罐最多能装进去的重量,现在需要在不打破这个存钱罐的情况下猜测里面最少 ...

  2. piggy bank 完全背包

    题目描述 Before ACM can do anything, a budget must be prepared and the necessary financial support obtai ...

  3. 循环 直到 python_如果您在Python中存在慢循环,则可以对其进行修复……直到无法解决为止...

    循环 直到 python by Maxim Mamaev 马克西姆·马马耶夫(Maxim Mamaev) Let's take a computational problem as an exampl ...

  4. 独家 | 人工神经网络中发现了人类大脑拥有的多模态神经元(附链接)

    作者:Gabriel Goh, Chelsea Voss, Daniela Amodei, Shan Carter, Michael Petrov, Justin Jay Wang, Nick Cam ...

  5. 一步步学习如何安装并使用SAP HANA Express Edition

    使用Jerry这篇文章在Google Cloud platform上的Kubernetes集群部署HANA Express里介绍的方法在Google Cloud Platform的Kubernetes ...

  6. TensorFlow神经网络(九)VGG net论文阅读笔记

    [注]内容来自MOOC人工智能实践TensorFlow笔记课程第8讲 来源:2015 ICLR 用于图像分类的文章: Very Deep Convolutional Networks for Larg ...

  7. 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. 在使 ...

  8. imagenet数据集类别标签和对应的英文中文对照表

    预测结果输出one-hot类型,最大概率的下标即为对于类别号   0: 'tench, Tinca tinca',                             丁鲷(鱼) 1: 'gold ...

  9. 这段时间做的简单dp题目(部分)

    这些时间vj上做的部分题目 HDU5115 题意:第一行t,t组测试数据,每组数据第一行输入n表示n匹狼,第二行给出一个序列表示每匹狼的伤害,第三行给出每匹狼能给周围狼的伤害增幅,求怎样打可以得到最小 ...

  10. Bootstrap 4 snippets 代码段

    Trigger Description b4-$ Bootstrap master template Alert Trigger Description b4-alert-additional-con ...

最新文章

  1. distribution counting—a sorting method from aocp
  2. 大对象简介+大对象的4种类型+lob类型的优点+lob的组成
  3. sklearn的简单使用
  4. intern()方法的使用
  5. 几行代码创建属于你自己的SQL数据库
  6. Linux下PostgreSQL的安装和配置
  7. Python稳基修炼的经典案例9(计算机二级、初学者必会turtle库例题)
  8. 快速幂或者矩阵快速幂
  9. 截取url的host_js如何准确获取当前页面url网址信息
  10. php session不可用,php session 使用与安全
  11. 【高并发解决方案】高并发解决方案汇总
  12. Mysql主从同步及主从同步延迟解决方案
  13. 两节串联锂电池充电管理芯片,IC的充放电方案
  14. st58服务器装系统,安装系统 - 微擎 - 公众平台自助开源引擎
  15. teams快捷键_每个Microsoft Teams键盘快捷键及其使用方法
  16. 不准用组函数(Max),取得最高薪水
  17. 微信小程序:电商发展蓝图解析
  18. ATTCK红日靶场二
  19. 写一封信给N年前的自己
  20. 【双连通分量】 FZU 2181 快来买肉松饼

热门文章

  1. 第十六届全国大学生智能汽车竞赛总决赛 AI视觉组线上赛图片显示软件发布及线上赛注意事项
  2. 双车组三轮图像处理总结:18cm三轮摄像头图像处理
  3. 如何实现远程控制你的电脑? 网穿软件
  4. 无线信标功能调试-2021-3-9-输出功率恒定限制
  5. AI机器学习实战の电磁智能车篇
  6. mysql数据库支持的锁粒度包括_1. Mysql的并发(锁策略、锁粒度、事务)
  7. otf和ctf的意义_光学信息技术原理及应用 OTF与CTF的比较与计算.ppt
  8. 笔记本电脑连接服务器的显示器不亮,电脑显示器不亮怎么回事 电脑显示器不亮解决办法【图文】...
  9. android 切换 preferencefragment,Android PreferenceActivity与PreferenceFragment详解及简单实例_Android_脚本之家...
  10. linux硬盘写0,linux – kworker消耗90%的IO和零磁盘写入