codeforces-214(Div. 2)-C. Dima and Salad

题意:有不同的沙拉,对应不同的颜值和卡路里,现在要求取出总颜值尽可能高的沙拉,同时要满足

                       

解法:首先要把除法变成乘法,就是每次把读进来的b[ i ] 乘以 K;

   因为对于a [ i ] - b[ i ] * k有两种不同的可能(大于0和小于0),可以放在一个以25000为中心的,大小为50000的dp数组里;

   

  比如对于样例1:

  input

  3 2
  10 8 1
  2 7 1
  output
  18
这里我们缩小一下数据

我一开始不理解,为什么dp[j - b[i]]为什么只能在非-1的情况下更新dp[j];后来画了图就明白了;
下面ac代码:
//learnt and created at 2018/2/7
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int n,k;
int a[],b[];
int dp[],mid = ;
int main(){
scanf("%d%d",&n,&k);
for(int i=; i<=n; i++)
{
scanf("%d",&a[i]);
}
for(int i=; i<=n; i++)
{
scanf("%d",&b[i]);
b[i] = a[i] - b[i]*k;
}
memset(dp,-,sizeof(dp));        //把dp数组初始化为-1;只把dp[25000]=0;
dp[mid]=;
for(int i=; i<=n; i++)
{
if(b[i]>=)
{
for(int j=; j>=b[i]; j--)
{
if(dp[j-b[i]] !=-)
dp[j] = max(dp[j-b[i]]+a[i],dp[j]);
}
}
else
{
for(int j=; j<=+b[i]; j++)
{
if(dp[j-b[i]]!=-)
dp[j] =max(dp[j-b[i]]+a[i],dp[j]);
}
}
}
if(dp[mid]==)puts("-1");
else printf("%d\n",dp[mid]); return ;
}
  
  

codeforces-214(Div. 2)-C. Dima and Salad+DP恰好背包花费的更多相关文章

  1. Codeforces Round #214 (Div. 2) C. Dima and Salad (背包变形)

    C. Dima and Salad time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  2. Codeforces Round #214 (Div. 2) C. Dima and Salad 背包

    C. Dima and Salad   Dima, Inna and Seryozha have gathered in a room. That's right, someone's got to ...

  3. codeforces #260 DIV 2 C题Boredom(DP)

    题目地址:http://codeforces.com/contest/456/problem/C 脑残了. .DP仅仅DP到了n. . 应该DP到10w+的. . 代码例如以下: #include & ...

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

    http://codeforces.com/contest/366/problem/C 题意:给出n个水果的两种属性a属性和b属性,然后挑选苹果,选择的苹果必须要满足这样一个条件:,现在给出n,k,要 ...

  5. cf366C Dima and Salad (dp)

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

  6. CodeForces-366C Dima and Salad 对01背包的理解 多个背包问题

    题目链接:https://cn.vjudge.net/problem/CodeForces-366C 题意 给出n个水果和一个常数k,其中每个水果都有两种性质ai, bi(美味度,卡路里量). 要保证 ...

  7. Codeforces Round #214 (Div. 2) c题(dp)

    C. Dima and Salad time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  8. CF#214 C. Dima and Salad 01背包变形

    C. Dima and Salad 题意 有n种水果,第i个水果有一个美味度ai和能量值bi,现在要选择部分水果做沙拉,假如此时选择了m个水果,要保证\(\frac{\sum_{i=1}^ma_i}{ ...

  9. Codeforces #344 Div.2

    Codeforces #344 Div.2 Interview 题目描述:求两个序列的子序列或操作的和的最大值 solution 签到题 时间复杂度:\(O(n^2)\) Print Check 题目 ...

随机推荐

  1. Android native进程间通信实例-binder结合共享内存

    在android源码的驱动目录下,一般会有共享内存的相关实现源码,目录是:kernel\drivers\staging\android\ashmem.c.但是本篇文章不是讲解android共享内存的功 ...

  2. JS 中获得根目录

    /*** * 获得根目录 * @returns */ function getRootPath() { var strFullPath = window.document.location.href; ...

  3. Docker系列开篇之Virtual Machine VS Container(一)

    前言 本节开始我们正式进入Docker系列,网上关于Docker相关文章如数家珍,写博客至今,我也一直在朝着如何写出通俗易懂且不枯燥的文章这个目标前进,喃喃自语的同时也希望看到文章的童鞋能明白我在讲什 ...

  4. The philosophy of ranking

    In the book Decision Quality, one will be trained to have three decision making system; one of them ...

  5. Vue系列:Vue Router 路由梳理

    Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模块化的.基于组件的路由配置 路由参数. ...

  6. C#之BackgroundWorker从简单入门到深入精通的用法总结

    需求分析 经常用到的耗时操作,例如: 1.文件下载和上载(包括点对点应用程序传输文件,从网络下载文件.图像等)2.数据库事务(从数据库读到大量的数据到WinForm界面中的DataGridview里呈 ...

  7. Hibernate中Criteria的完整用法2

    Criteria的完整用法 QBE (Query By Example) Criteria cri = session.createCriteria(Student.class); cri.add(E ...

  8. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(1)

    材料说明: 文档<NVM-Express-1_4-2019.06.10-Ratified.pdf>来自于NVMe网站:https://nvmexpress.org/ 笔记目的是学习NVMe ...

  9. odoo模板中的t-标签用法

    在OpenERP中,通过QWeb来对模板进行渲染后加载到浏览器中,而模板中有许多的标签来定制各种需求变化,在这里记录学习过程中碰到的标签定义,以方便查询. 模板中的标签统一都是以"t-&qu ...

  10. 更新!ArcMap和ArcGIS Pro加载百度影像地图

    上一篇文章写了ArcMap和ArcGIS Pro中加载百度地图 的方法 一次没有把百度影像加载的功能开发出来,趁这几天有空整理了下 加载方法按照上次那篇文章操作. 百度影像wmts加载地址:http: ...