博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Stamps and Envelope Size
阅读量:5320 次
发布时间:2019-06-14

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

题意:

容量为s的信封,给n组邮票的面值,求哪一组能组成的连续的面值的最大值最大,若有多组答案,输出面值数量最小的一组,若数量相等,输出最大面值最小的一组,若最大面值相等,输出第二大面值最小的一组,依次类推。

分析:

可以从小到大枚举面值直到不能组成,dp[i][j]是否能组成面值为i,用邮票数量为j dp[i][j]|=dp[i-v[k]][j-1],记忆化搜索即可

#include #include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef pair
PII;typedef long long ll;#define lson l,m,rt<<1#define pi acos(-1.0)#define rson m+1,r,rt<<11#define All 1,N,1#define read freopen("in.txt", "r", stdin)const ll INFll = 0x3f3f3f3f3f3f3f3fLL;const int INF= 0x7ffffff;const int mod = 1000000007;struct node{ int v1[15],len,d;}e[15];bool cmp(node x,node y){ if(x.d!=y.d)return x.d>y.d; else if(x.len!=y.len)return x.len
=0;--k) if(x.v1[k]!=y.v1[k]) return x.v1[k]
=val[id][i]&&dfs(v-val[id][i],num-1,id)) return dp[v][num]=1; } return dp[v][num]=0;}int main(){ while(~scanf("%d",&s)&&s){ scanf("%d",&n); for(int i=0;i

 

;

转载于:https://www.cnblogs.com/zsf123/p/4888469.html

你可能感兴趣的文章
python--闭包函数、装饰器
查看>>
【坑】linux目录软连接的相关操作--很容易误操作
查看>>
Phpstorm中使用SFTP
查看>>
stm32中字节对齐问题(__align(n),__packed用法)
查看>>
like tp
查看>>
分布式系统事务一致性解决方案
查看>>
开启一个项目如何上传到git
查看>>
ie文本框内容不居中问题
查看>>
利用grub2制作多启动U盘
查看>>
MQTT的学习研究(十三) IBM MQTTV3 简单发布订阅实例
查看>>
使用 github Pages 服务建立个人独立博客全过程
查看>>
posix多线程有感--线程高级编程(线程属性函数总结)(代码)
查看>>
spring-使用MyEcilpse创建demo
查看>>
JavaScript -- 数据存储
查看>>
DCDC(4.5V to 23V -3.3V)
查看>>
kettle导数到user_用于left join_20160928
查看>>
activity 保存数据
查看>>
scrapy-加蘑菇代理
查看>>
typescript深copy和浅copy
查看>>
linux下的静态库与动态库详解
查看>>