codeforces 366C
来源:互联网 发布:仓库拣货路线优化 编辑:程序博客网 时间:2024/05/19 13:29
题意:给出n,k 然后给出n个水果对应的taste和calories 要求选出一些水果 满足 ,在满足这个的情况下求的最大值、
思路:令bi=ai-k×bi,就是sigma(b[i])=0,sigma(a[i])最大。
把b[i]当体积,a[i]当价值,这样就形成了一个01背包、
然后设置一个偏移量就好、
#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>#include<queue>#include<map>using namespace std;const int maxn = 50000;int n,m,k;int dp[maxn<<2];int a[111],b[111]; int main(){int n,k;scanf("%d%d",&n,&k);for(int i=0; i<n; ++i)scanf("%d", a+i);for(int i=0; i<n; ++i){scanf("%d", b+i);b[i] = a[i]-k*b[i];}memset(dp, -1, sizeof(dp));dp[maxn/2] = 0;for(int i=0; i<n; ++i){if(b[i]>=0){for(int j=maxn; j>=b[i]; --j)if(~dp[j-b[i]])dp[j] = max(dp[j], dp[j-b[i]]+a[i]);}else{for(int j=0; j<=maxn+b[i]; ++j)if(~dp[j-b[i]])dp[j] = max(dp[j], dp[j-b[i]]+a[i]);}}int ans = dp[maxn/2];if(ans==0)ans = -1;printf("%d\n", ans);}
和这题类似的还有poj的2184
0 0
- codeforces 366C
- codeforces 366C
- Codeforces 366C
- CodeForces 366C Dima and Salad
- Codeforces 366C Dima and Salad 【dp】
- codeforces 366 C Dima and Salad dp
- CodeForces 366C Dima and Salad
- Codeforces Round #366 (Div. 2) C. Thor
- Codeforces Round #366 (Div. 2) C. Thor
- Codeforces Round #366 (Div. 2) C list
- Codeforces Round #366 (Div. 2)C
- Codeforces Round #366 (Div. 2)-C. Thor
- Codeforces Round #366 (Div. 2) C.Thor
- Codeforces-340-C(c++)
- Codeforces-507-C(c++)
- CodeForces 731C C
- CodeForces-612C C
- codeforces 366C C. Dima and Salad(dp)
- Map集合及其子类
- SSRF详解
- HDU - 1128 Self Numbers
- 动态、静态语言,强、弱类型语言
- Struts2 in action 笔记1
- codeforces 366C
- 2016中国大学生程序设计竞赛(长春) Ugly Problem
- JavaScript学习笔记(1)
- 软件工程专业
- sql中drop、truncate和delete的区别
- Git Windows Redmine服务端配置
- [写给女生的C语言][01]Hello World!
- Linux 下 Shell 命令的分类及用法
- Linear Algebra - Lesson 3. 乘法和逆矩阵