博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3260 DP
阅读量:6626 次
发布时间:2019-06-25

本文共 817 字,大约阅读时间需要 2 分钟。

只需要对John的付款数做一次多重背包,对shopkeeper的找零钱数做一次完全背包即可。

最重要的是上界的处理。可以注意到,John的付款数最多为maxv*maxv+m,也就是24400元。同理,shopkeeper找钱最多的数目为maxv*maxv.

证明如下:

如果John的付款数大于了maxv*maxv+m,即付硬币的数目大于了maxv,根据鸽笼原理,至少有两个的和对maxv取模的值相等,也就是说,这部分硬币能够用更少的maxv来代替。证毕。

转自:

另:Discuss里的数据不要信。。。。。

// by SiriusRen#include 
#include
#include
using namespace std;int n,t,v[105],c[105],num[25000],f[25000],g[25000],ans=0x3ffffff;int main(){ scanf("%d%d",&n,&t); for(int i=1;i<=n;i++)scanf("%d",&v[i]); for(int i=1;i<=n;i++)scanf("%d",&c[i]); memset(f,0x3f,sizeof(f)),f[0]=0; memset(g,0x3f,sizeof(g)),g[0]=0; for(int i=1;i<=n;i++){ memset(num,0,sizeof(num)); for(int j=0;j<=24500;j++) if(f[j+v[i]]>f[j]+1&&num[j]

这里写图片描述

转载于:https://www.cnblogs.com/SiriusRen/p/6532368.html

你可能感兴趣的文章
ibatis批量新增-自增长序列
查看>>
linux系统管理之九:rpm安装包
查看>>
Linux系统中查看日志的常用命令
查看>>
java基础(二) 自增自减与贪心规则
查看>>
VMWare View的组件
查看>>
Oracle GoldenGate学习之--异构平台同步(Mysql到Oracle)
查看>>
Linux下date命令使用举例说明
查看>>
Centos6下SVN服务器(结合Apache)的搭建
查看>>
Reactor和Proactor模式
查看>>
实验:关于XPath中的13个轴
查看>>
品牌的网闸介绍
查看>>
手势滑动源码(适合新手)
查看>>
我的友情链接
查看>>
快速熟悉开源项目
查看>>
Linux Centos 6.2 装好PHP启动Apache错误libmysqlclient.so.18:
查看>>
我的开发工具包
查看>>
运维角度浅谈MySQL数据库优化
查看>>
多版本python下,安装pip
查看>>
AndroidManifest.xml文件解析
查看>>
互联网 免费的WebService接口
查看>>