题意::n个物品,k为倍数。每个物品有两个属性(ai和bi),求在满足所取物品的a属性和是b属性和的k倍的前提下,问a属性的最大值是多少,具体看样例解释,很清楚。

思路:这个题真的是学到了, 对于公式进行变换,然后转化为一部分正数和一部分负数,然后分别求背包,,对于背包,之前一直有一个误区。正确的应该是对于dp[i[代表i体积全部装满所代表的最大价值,因为他可以从背包的转移方程中的出dp[i]=max(dp[i],dp[i-c[i]]+a[i]);这个方程中指出,目前的答案是由减去体积的地方转移来的,而01背包是倒着进行计算,所以的到满体积时的价值

代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn=105;
int n,k,a[maxn],b[maxn],c[maxn],dp[10005],pp[10006];int main()
{while(~scanf("%d%d",&n,&k)){memset(dp,-0x3f,sizeof(dp));memset(pp,-0x3f,sizeof(pp));
//        memset(c,0,sizeof(c));dp[0]=pp[0]=0;for(int i=0;i<n;i++){scanf("%d",&a[i]);}for(int i=0;i<n;i++){scanf("%d",&b[i]);}for(int i=0;i<n;i++){c[i]=a[i]-k*b[i];}for(int i=0;i<n;i++){if(c[i]>=0){for(int j=10000;j>=c[i];j--){dp[j]=max(dp[j],dp[j-c[i]]+a[i]);}}}for(int i=0;i<n;i++){if(c[i]<0){c[i]=-c[i];for(int j=10000;j>=c[i];j--){pp[j]=max(pp[j],pp[j-c[i]]+a[i]);}}}int ans=-1;for(int i=0;i<=10000;i++){if(dp[i]==0&&pp[i]==0)continue;else ans=max(ans,dp[i]+pp[i]);}printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/lalalatianlalu/p/8450528.html

CodeForces 366C Dima and Salad相关推荐

  1. CodeForces - 366C Dima and Salad

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

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

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

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

    题意:n件东西,有属性a和属性b.要选取若干件东西,使得\(\frac{\sum a_j}{\sum b_j} = k\).在这个条件下,问\(\sum a_j\)最大是多少. 分析:可以将其转化为0 ...

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

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

  5. Codefroces 366 C Dima and Salad(dp)

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

  6. CODEFORCES 272C Dima and Staircase 细节理解题+简单技巧

    传送门:http://codeforces.com/problemset/problem/272/C C. Dima and Staircase time limit per test 2 secon ...

  7. [codeforces366C]Dima and Salad

    time limit per test : 1 second memory limit per test : 256 megabytes Dima, Inna and Seryozha have ga ...

  8. codeforces 400D Dima and Bacteria 并查集+floyd

    题目链接:http://codeforces.com/problemset/problem/400/D 题目大意: 给定n个集合,m步操作,k个种类的细菌, 第二行给出k个数表示连续的xi个数属于i集 ...

  9. Codeforces - 272C Dima and Staircase(思维)

    题目链接---- Dima's got a staircase that consists of n stairs. The first stair is at height a1, the seco ...

  10. CodeForces - 272C Dima and Staircase (线段树区间更新)

    题意: 见以下样例,给出 5 个区间,每个区间的高度已知.一共 4 次操作.每次操作都是从最左边开始向下垒一个宽为 w 高为h 的木块,过程见下图. 问每次垒木块的高度是多少? Input 5 1 2 ...

最新文章

  1. pandas使用iloc函数基于dataframe数据列的索引抽取单列或者多列数据、其中多列索引需要嵌入在列表方括号[]中、或使用:符号形成起始和终止范围索引
  2. 利用DHCP,http,tftp,pxe实现批量自动化部署系统
  3. vscode代码运行时间工具_10款实用的VSCode插件提升你的编辑体验 | 第98期
  4. junit注释_通过此注释改善您的JUnit体验
  5. php加mySQL制作网络硬盘_PHP实现的简单网络硬盘
  6. Linux一定需要文件系统吗?
  7. Spring Boot使用@Async实现异步调用:ThreadPoolTaskScheduler线程池的优雅关闭
  8. 【Elasticsearch】索引 强制合并 缓存 refresh flush 等操作
  9. 【转载】 MySQL之用户资源限制
  10. [转帖]中美高速公路等车辆收费有何异同?
  11. 为什么分布式数据库中不使用uuid作为主键?
  12. 网络速度在线测试软件,在线网速测试(局域网速度测试工具)
  13. R语言和Python交互
  14. Android开发之各种好看的背景颜色
  15. 颜色模型和颜色应用---YIQ颜色模型
  16. api接口—闲鱼搜索的数据
  17. 控制反转思想的理解实例
  18. PMBOK(第六版) PMP笔记——《十三》第十三章(项目干系人管理)
  19. 用Facebook做广告和营销,你需要注意哪些问题?
  20. 使用layui框架迅速搭建后台管理页面

热门文章

  1. Adaptive vision
  2. Linux下通过虚拟网卡实现局域网 转发tcp/udp流量
  3. beamer插入图片_用Latex制作幻灯片(beamer)
  4. 蒟蒻的网络流24题解题记
  5. 互联网域名管理办法发布 域名注册必须实名
  6. Qt示例程序打开失败,出现一个感叹号图标
  7. 基于EasyX使用Wu反走样算法画线
  8. hr面试性格测试30题_HR经典面试30题
  9. 词性标记:VA,VC,VE,VV等
  10. react 控制台 Maximum call stack size exceeded 如何解决