Codeforces 366C Dima and Salad
2016-06-28 11:50
471 查看
http://codeforces.com/problemset/problem/366/C
题意:在一个冰箱里有n种水果,并且这些水果每一种都有一个美味度和一个卡路里的属性, 小明要从这些水果中选出来一些做一个水果沙拉, 并且要求他的水果沙拉的美味度之和是卡路里和的k倍,问小明是否可以做出这么一个水果沙拉,若不能输出-1,否则输出符合要求的最大的美味值之和。
思路:考虑这样DP:f[i][j]:做到第i个水果,平衡度为j,平衡度的表示:Σa[i]-K*Σb[i],这样就可以dp
f[i][j]=max(f[i-1][j],f[i-1][j-a[i]+K*b[i]])
题意:在一个冰箱里有n种水果,并且这些水果每一种都有一个美味度和一个卡路里的属性, 小明要从这些水果中选出来一些做一个水果沙拉, 并且要求他的水果沙拉的美味度之和是卡路里和的k倍,问小明是否可以做出这么一个水果沙拉,若不能输出-1,否则输出符合要求的最大的美味值之和。
思路:考虑这样DP:f[i][j]:做到第i个水果,平衡度为j,平衡度的表示:Σa[i]-K*Σb[i],这样就可以dp
f[i][j]=max(f[i-1][j],f[i-1][j-a[i]+K*b[i]])
#include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<iostream> int f[105][100005],a[1005],b[1005],g[1005][1005]; int n,K; int read(){ int t=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();} while ('0'<=ch&&ch<='9'){t=t*10+ch-'0';ch=getchar();} return t*f; } int main(){ n=read();K=read(); for (int i=1;i<=n;i++) a[i]=read(); for (int i=1;i<=n;i++) b[i]=read(); for (int i=0;i<=n;i++) for (int j=0;j<=500000;j++) f[i][j]=-99999999; f[0][20000]=0; int cnt=0; for (int i=1;i<=n;i++){ cnt++; for (int j=-10000;j<=10000;j++){ f[i][j+20000]=std::max(f[i][j+20000],std::max(f[i-1][j+20000],f[i-1][j-a[i]+K*b[i]+20000]+a[i])); } } int ans=-1; if (f [20000]) ans=f [20000]; printf("%d\n",ans); return 0; }
相关文章推荐
- JavaScript 数据验证类
- HTML前端——CSS样式
- Windows 2012R2安装KB2919355失败
- CABasicAnimation 基本用法
- Android ScrollView滚动 + ListView无滚动条加载全部内容
- Java 权限框架 Shiro 实战二:与spring集成、filter机制,shirofilter
- google面试题之摆动排序
- Swift基础之实现时间线列表效果(例如订单详情页面的效果)
- leetcode 1 Two Sum C++
- iOS:关于关闭UITextfield键盘的一点研究
- 微信开发模板--easywechat
- iOS实现时间线列表效果(例如订单详情页面的效果)
- mybatis 打印sql log配置
- 做软件架构该如何入门
- 使 Amazon EBS 卷可用
- [C++]在Visual Studio 2010中使用Google Test - 配置
- mysql中char,varchar与text类型的区别和选用
- 使用Eclipse开发java web环境搭建
- UVa11292 The Dragon of Loowater(sort排序直接比较)
- ISO制作U盘安装Ubuntu系统