CodeForces - 366C Dima and Salad (01背包)
题意: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背包)相关推荐
- codeforces 366C Dima and Salad (01背包)
题意: 给出n个水果,每个水果都有两种性质ai,bi,要保证要保证这个的前提下,ai的和要最大,求出这样最大的ai和. 题解: 01背包,背包写错了,一维老是出错,汗!二维背包过之.这里要装换下,吧a ...
- CodeForces - 366C Dima and Salad
Dima and Salad 题 意 :有n个物品,价值为val[i],重量为cost[i],问最后背包中物品价值和比重量和为k的最大价值. 数据范围: 1<=n<=100 1<=k ...
- CodeForces 366C Dima and Salad (背包dp)
题意:给出n件物品,每件物品都有a.b两个值,从中取几件使得其中a值总和最大,并且a的和等于k倍的b的和. The first line of the input contains two integ ...
- codeforces 688 E. The Values You Can Make(01背包+思维)
题目链接:http://codeforces.com/contest/688/problem/E 题解:设dp[s1][s2]表示s1状态下出现s2是否合理.那么s1显然可以更具01背包来得到状态.首 ...
- 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 ...
- Codeforces Round #104 (Div. 2) E DP(01背包模型) +组和+除法取模求逆元
题意: 规定只包含4或7的数为幸运数字,给定n个数的序列,求他的子序列,使得该子序列的长度为k并且满足该子序列中不存在相同的两个幸运数字.问一共寻在多少种可能.(只要该数的下标不同则认为是不同的序列) ...
- Codeforces 336C 0-1背包
题意:每个水果有两个值,一个美味度 a,一个卡路里 b,从中挑选一些,要求 sum(aj) / sum(bj) = k,使得 sum(a) 最大. 分析:没有那个条件就是一个01背包,可以转换,对公式 ...
- 【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 ...
- Codefroces 366 C Dima and Salad(dp)
Dima and Salad 题意:一共有n种水果,每种水果都有一个ai, bi,现求一个最大的ai总和,使得ai之和/对应的bi之和的值等于K. 题解:将bi转换成偏移量,只要偏移到起点位置,就代表 ...
最新文章
- php 面向对象学习
- SQL Server-聚焦使用视图若干限制/建议、视图查询性能问题,你懵逼了?(二十五)...
- taro 重新加载小程序_taro-music一款开源网易云音乐小程序
- oracle:集合查询
- SAP-采购订单交货成本抓取方法
- 诡异的防火墙故障,能PING通,但访问ORACLE不稳定
- 记录对String.format(Formatter().format())方法的总结
- 推荐您使用 Markdown 来编辑文章
- 《Attention Is All You Need》
- Windows Insider 最新重大升级
- 利用云终端减少硬件冗余 提高机房整体管理效率
- obs 推流编码在哪设置_直播工具OBS推流配置操作指引
- Revit二次开发——轴网
- AVFoundation照片/视频捕捉功能 小视频/直播
- Shadow Defender影子卫士
- 客户至上 | 国产BI领跑者,思迈特软件完成C轮融资
- USACO-Section3.2 Feed Ratios【克莱默法则】
- 多线程抢票_多线程抢票系统浅析
- 《设计模式之禅》-原型模式
- 米的换算单位和公式_小学数学单位换算公式大全.doc
热门文章
- 教你一招|Python实现无向图最短路径
- 解决“Could not find @openzeppelin/contracts/token/ERC20/ERC20Detailed.sol“问题
- 利用Python统计微信联系人男女比例以及简单的地区分布
- linux awk sed strace,docker 中进行strace的三种方式
- 工业数字化转型 — 工业机器人
- 有些框架自动重写html标签,充分利用HTML标签元素 – 简单的xtyle前端框架
- 钓鱼篇-利用RLO隐藏exe文件捆绑office免杀-远程模板加载上线CS
- mac清理磁盘空间_Mac磁盘清理-如何释放Mac上的空间
- 剖析Mozilla代码之七武器
- 如何使用unity制作萌萌的live2d桌宠