把问题重新定义为c=a-b*k;

寻找一系列c为0的时候a最大的值。

因为c可正可负。

所以把c正的01背包一次。

把c负的01背包一次。

当二者相等的时候,把a相加,取最大值。

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
#define INF 99999999
int n,k,i,j;
int num[101];
int dp1[100001];
int dp2[100001];
int as[1001];
int bs[1001];
int main()
{int a,b;while(~scanf("%d%d",&n,&k)){for(i=0;i<=100000;i++)dp1[i]=dp2[i]=-INF;dp1[0]=dp2[0]=0;for(i=1;i<=n;i++)scanf("%d",&as[i]);for(j=1;j<=n;j++)scanf("%d",&bs[j]);for(i=1;i<=n;i++){a=as[i];b=bs[i];num[i]=a-b*k;if(num[i]<0){num[i]=-num[i];for(j=100000;j>=num[i];j--){dp2[j]=max(dp2[j],dp2[j-num[i]]+a);}}else{for(j=100000;j>=num[i];j--){dp1[j]=max(dp1[j],dp1[j-num[i]]+a);}}}int maxn;maxn=-1;for(i=10000;i>=0;i--){maxn=max(maxn,dp1[i]+dp2[i]);}if(maxn==0)maxn=-1;cout<<maxn<<endl;}return 0;
}

cf-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. [codeforces366C]Dima and Salad

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

  7. cf366C Dima and Salad (dp)

    是一个01分数规划的形式,只不过已经帮你二分好了. 把b乘过去,再减回来,找和等于0的a的最大值就行了 1 #include<bits/stdc++.h> 2 #define pa pai ...

  8. cf D. Dima and Hares

    http://codeforces.com/contest/358/problem/D 题意:ai代表相邻的两个野兔都没有吃食物情况下的快乐系数,bi代表的是在相邻的两个野兔中有一个吃到食物的快乐系数 ...

  9. Dima and Salad(dp+思维转化)

    思路 题目要求选出来的物品满足 sum( a[i] )=ksum( b[i] ),移动到同一边 ,sum( a[i] )-ksum( b[i] )==0.令 c[i]=a[i]-k*b[i],题目转化 ...

  10. CF 400D Dima and Bacteria

    最短路问题.先求是否和谐,即内部成员之间可0权连接.并查集解决.然后弗洛伊德算法解决.注意点从0开始,在读入点时记得减1.第一个最短路.注意最外层循环不可以内置,必须遵循此顺序. #include & ...

最新文章

  1. Python当前进程信息 (os包)
  2. 胸闷的原因有哪些? 相关解决偏方
  3. python 简单的server请求
  4. 数据结构实验之图论九:最小生成树_初高中数学竞赛训练----图论初步2
  5. 【Python】Jupyter Notebook 配置路径
  6. 云小课 | 华为云KYON:网段零修改上云,简单又好用
  7. 基于SSM的作业调度平台-java作业调度平台
  8. AngularJS的基础元素应用
  9. 102个快递编码的对照表
  10. Topaz Video Enhance AI 1.9 视频增强软件
  11. msdos gpt
  12. c++合理利用adl来重载概念
  13. 几何造型问题(转载)
  14. android高德地图自定义地图,(android地图开发) 高德地图自定义对话框
  15. java存储protobuf_java中利用mongodb存储protobuf
  16. Texworks中文论文编辑排版优秀
  17. Opengl中的三维数学二(点和向量的简单运算)
  18. 华为Ascend昇腾CANN详细教程(二)
  19. 医院信息系统集成服务平台建设方案
  20. warning ..\package.json: No license field

热门文章

  1. 【苹果家庭推iMessage】单击“组发送SMS”功用
  2. 阿根廷探戈预热“环球春晚”(图)_网易新闻中心
  3. 网站无法复制图片到word中解决办法
  4. 统计学习 势函数算法
  5. Ubuntu16.04 安装g2o
  6. sql 高亮美化工具
  7. Description Based Text Classification with Reinforcement Learning
  8. linux kernel shedule 总结
  9. MCE | 磁珠 VS 琼脂糖珠
  10. MATLAB 求逆矩阵并用分数表示