题意:n件东西,有属性a和属性b。要选取若干件东西,使得\(\frac{\sum a_j}{\sum b_j} = k\)。在这个条件下,问\(\sum a_j\)最大是多少。
分析:可以将其转化为0-1背包,令\(c[i] = a[i] - k*b[i]\) 等价于物品的重量,\(a_i\)为物品的价值。因为\(c[i]\)可能小于0,所以用\(dp1[i]\)表示重量为正i时的最大收益,\(dp2[i]\)表示负i时的最大收益。最后求\(dp1[i]+dp2[i]\)的最大值就是答案,注意不存在答案的情况。

#include<bits/stdc++.h>
using namespace std;
#define eps 1e-7
const int maxn = 1e5+5;
typedef long long LL;
int dp1[maxn], dp2[maxn];
int a[maxn], b[maxn];
const int INF = 0x3f3f3f3f;
int c[maxn];
int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);freopen("out.txt","w",stdout);#endifint n,k;scanf("%d %d",&n , &k);memset(dp1,-INF,sizeof(dp1));memset(dp2,-INF,sizeof(dp2));for(int i=1;i<=n;++i) scanf("%d",&a[i]);dp1[0] = dp2[0] = 0;for(int i=1;i<=n;++i){scanf("%d",&b[i]);c[i] = a[i] - k* b[i];}for(int i=1;i<=n;++i){if(c[i]>=0){for(int j=10000;j>=c[i];--j){dp1[j] = max(dp1[j], dp1[j-c[i]]+a[i]);}}else{c[i] = -c[i];for(int j=10000;j>=c[i];--j){dp2[j] = max(dp2[j],dp2[j-c[i]]+a[i]);}}}   int ans=-1;for(int i=0;i<=10000;++i){if(dp1[i]==0 && dp2[i]==0 ) continue;ans = max(ans,dp1[i]+dp2[i]);}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/xiuwenli/p/9824187.html

CodeForces - 366C Dima and Salad (01背包)相关推荐

  1. codeforces 366C Dima and Salad (01背包)

    题意: 给出n个水果,每个水果都有两种性质ai,bi,要保证要保证这个的前提下,ai的和要最大,求出这样最大的ai和. 题解: 01背包,背包写错了,一维老是出错,汗!二维背包过之.这里要装换下,吧a ...

  2. CodeForces - 366C Dima and Salad

    Dima and Salad 题 意 :有n个物品,价值为val[i],重量为cost[i],问最后背包中物品价值和比重量和为k的最大价值. 数据范围: 1<=n<=100 1<=k ...

  3. CodeForces 366C Dima and Salad (背包dp)

    题意:给出n件物品,每件物品都有a.b两个值,从中取几件使得其中a值总和最大,并且a的和等于k倍的b的和. The first line of the input contains two integ ...

  4. codeforces 688 E. The Values You Can Make(01背包+思维)

    题目链接:http://codeforces.com/contest/688/problem/E 题解:设dp[s1][s2]表示s1状态下出现s2是否合理.那么s1显然可以更具01背包来得到状态.首 ...

  5. Codeforces Round #383 (Div. 2) D. Arpa's weak amphitheater and Mehrdad's valuable Hoses —— DP(01背包)

    题目链接:http://codeforces.com/contest/742/problem/D D. Arpa's weak amphitheater and Mehrdad's valuable ...

  6. Codeforces Round #104 (Div. 2) E DP(01背包模型) +组和+除法取模求逆元

    题意: 规定只包含4或7的数为幸运数字,给定n个数的序列,求他的子序列,使得该子序列的长度为k并且满足该子序列中不存在相同的两个幸运数字.问一共寻在多少种可能.(只要该数的下标不同则认为是不同的序列) ...

  7. Codeforces 336C 0-1背包

    题意:每个水果有两个值,一个美味度 a,一个卡路里 b,从中挑选一些,要求 sum(aj) / sum(bj) = k,使得 sum(a) 最大. 分析:没有那个条件就是一个01背包,可以转换,对公式 ...

  8. 【Codeforces 741 B. Arpa's weak amphitheater and Mehrdad's 】+ 并查集 + 01背包

    B. Arpa's weak amphitheater and Mehrdad's valuable Hoses time limit per test 1 second memory limit p ...

  9. Codefroces 366 C Dima and Salad(dp)

    Dima and Salad 题意:一共有n种水果,每种水果都有一个ai, bi,现求一个最大的ai总和,使得ai之和/对应的bi之和的值等于K. 题解:将bi转换成偏移量,只要偏移到起点位置,就代表 ...

最新文章

  1. php 面向对象学习
  2. SQL Server-聚焦使用视图若干限制/建议、视图查询性能问题,你懵逼了?(二十五)...
  3. taro 重新加载小程序_taro-music一款开源网易云音乐小程序
  4. oracle:集合查询
  5. SAP-采购订单交货成本抓取方法
  6. 诡异的防火墙故障,能PING通,但访问ORACLE不稳定
  7. 记录对String.format(Formatter().format())方法的总结
  8. 推荐您使用 Markdown 来编辑文章
  9. 《Attention Is All You Need》
  10. Windows Insider 最新重大升级
  11. 利用云终端减少硬件冗余 提高机房整体管理效率
  12. obs 推流编码在哪设置_直播工具OBS推流配置操作指引
  13. Revit二次开发——轴网
  14. AVFoundation照片/视频捕捉功能 小视频/直播
  15. Shadow Defender影子卫士
  16. 客户至上 | 国产BI领跑者,思迈特软件完成C轮融资
  17. USACO-Section3.2 Feed Ratios【克莱默法则】
  18. 多线程抢票_多线程抢票系统浅析
  19. 《设计模式之禅》-原型模式
  20. 米的换算单位和公式_小学数学单位换算公式大全.doc

热门文章

  1. 教你一招|Python实现无向图最短路径
  2. 解决“Could not find @openzeppelin/contracts/token/ERC20/ERC20Detailed.sol“问题
  3. 利用Python统计微信联系人男女比例以及简单的地区分布
  4. linux awk sed strace,docker 中进行strace的三种方式
  5. 工业数字化转型 — 工业机器人
  6. 有些框架自动重写html标签,充分利用HTML标签元素 – 简单的xtyle前端框架
  7. 钓鱼篇-利用RLO隐藏exe文件捆绑office免杀-远程模板加载上线CS
  8. mac清理磁盘空间_Mac磁盘清理-如何释放Mac上的空间
  9. 剖析Mozilla代码之七武器
  10. 如何使用unity制作萌萌的live2d桌宠