cf-366C-Dima and Salad
把问题重新定义为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相关推荐
- 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 - 366C Dima and Salad (01背包)
题意:n件东西,有属性a和属性b.要选取若干件东西,使得\(\frac{\sum a_j}{\sum b_j} = k\).在这个条件下,问\(\sum a_j\)最大是多少. 分析:可以将其转化为0 ...
- codeforces 366C Dima and Salad (01背包)
题意: 给出n个水果,每个水果都有两种性质ai,bi,要保证要保证这个的前提下,ai的和要最大,求出这样最大的ai和. 题解: 01背包,背包写错了,一维老是出错,汗!二维背包过之.这里要装换下,吧a ...
- Codefroces 366 C Dima and Salad(dp)
Dima and Salad 题意:一共有n种水果,每种水果都有一个ai, bi,现求一个最大的ai总和,使得ai之和/对应的bi之和的值等于K. 题解:将bi转换成偏移量,只要偏移到起点位置,就代表 ...
- [codeforces366C]Dima and Salad
time limit per test : 1 second memory limit per test : 256 megabytes Dima, Inna and Seryozha have ga ...
- cf366C Dima and Salad (dp)
是一个01分数规划的形式,只不过已经帮你二分好了. 把b乘过去,再减回来,找和等于0的a的最大值就行了 1 #include<bits/stdc++.h> 2 #define pa pai ...
- cf D. Dima and Hares
http://codeforces.com/contest/358/problem/D 题意:ai代表相邻的两个野兔都没有吃食物情况下的快乐系数,bi代表的是在相邻的两个野兔中有一个吃到食物的快乐系数 ...
- Dima and Salad(dp+思维转化)
思路 题目要求选出来的物品满足 sum( a[i] )=ksum( b[i] ),移动到同一边 ,sum( a[i] )-ksum( b[i] )==0.令 c[i]=a[i]-k*b[i],题目转化 ...
- CF 400D Dima and Bacteria
最短路问题.先求是否和谐,即内部成员之间可0权连接.并查集解决.然后弗洛伊德算法解决.注意点从0开始,在读入点时记得减1.第一个最短路.注意最外层循环不可以内置,必须遵循此顺序. #include & ...
最新文章
- Python当前进程信息 (os包)
- 胸闷的原因有哪些? 相关解决偏方
- python 简单的server请求
- 数据结构实验之图论九:最小生成树_初高中数学竞赛训练----图论初步2
- 【Python】Jupyter Notebook 配置路径
- 云小课 | 华为云KYON:网段零修改上云,简单又好用
- 基于SSM的作业调度平台-java作业调度平台
- AngularJS的基础元素应用
- 102个快递编码的对照表
- Topaz Video Enhance AI 1.9 视频增强软件
- msdos gpt
- c++合理利用adl来重载概念
- 几何造型问题(转载)
- android高德地图自定义地图,(android地图开发) 高德地图自定义对话框
- java存储protobuf_java中利用mongodb存储protobuf
- Texworks中文论文编辑排版优秀
- Opengl中的三维数学二(点和向量的简单运算)
- 华为Ascend昇腾CANN详细教程(二)
- 医院信息系统集成服务平台建设方案
- warning ..\package.json: No license field
热门文章
- 【苹果家庭推iMessage】单击“组发送SMS”功用
- 阿根廷探戈预热“环球春晚”(图)_网易新闻中心
- 网站无法复制图片到word中解决办法
- 统计学习 势函数算法
- Ubuntu16.04 安装g2o
- sql 高亮美化工具
- Description Based Text Classification with Reinforcement Learning
- linux kernel shedule 总结
- MCE | 磁珠 VS 琼脂糖珠
- MATLAB 求逆矩阵并用分数表示