Dima and Salad

题意:一共有n种水果,每种水果都有一个ai, bi,现求一个最大的ai总和,使得ai之和/对应的bi之和的值等于K。

题解:将bi转换成偏移量,只要偏移到起点位置,就代表左右偏移抵消了,就满足题意了,注意一点的是这个跑法和01背包的恰好消耗是一样的初始化方法,将起点设为0,其他位置设为-INF,这样状态只能从起点转移出去,然后再从外面存在的点转移出去。

代码:

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 const int INF = 0x3f3f3f3f;
 5 const int N = 1e5+5;
 6 int a[N], b[N], ans[N];
 7 int main()
 8 {
 9     ios::sync_with_stdio(false);
10     cin.tie(0);
11     cout.tie(0);
12     int n, k;
13     cin >> n >> k;
14     for(int i = 1; i <= n; i++)
15         cin >> a[i];
16     for(int i = 1; i <= n; i++)
17     {
18         cin >> b[i];
19         b[i] = a[i] - b[i]*k;
20     }
21     memset(ans, -INF, sizeof(ans));
22     ans[25000] = 0;
23     for(int i = 1; i <= n; i++)
24     {
25         if(b[i] >= 0)
26         {
27             for(int j = 50000; j >= b[i]; j--)
28                 ans[j] = max(ans[j-b[i]]+a[i], ans[j]);
29         }
30         else
31             for(int j = 0; j <= 50000-b[i]; j++)
32                 ans[j] = max(ans[j], ans[j-b[i]]+a[i]);
33     }
34     if(ans[25000] == 0) cout << -1 << endl;
35     else cout << ans[25000] << endl;
36     return 0;
37 }

转载于:https://www.cnblogs.com/MingSD/p/8426708.html

Codefroces 366 C Dima and Salad(dp)相关推荐

  1. 求三角形最大面积(DP)

    求三角形最大面积(DP) 在OJ上奇迹般WA了:WA:70. Why? #include <iostream> #include <string.h> using namesp ...

  2. LeetCode 编辑距离 II(DP)

    1. 题目 给你两个单词 s 和 t,请你计算出将 s 转换成 t 所使用的最少操作数. 你可以对一个单词进行如下两种操作: 删除一个字符 替换一个字符 注意: 不允许插入操作 题目保证有解 示例: ...

  3. LeetCode 1220. 统计元音字母序列的数目(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串: - 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i ...

  4. LeetCode 265. 粉刷房子 II(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同. 当然,因为市场上不同颜色油 ...

  5. LeetCode 256. 粉刷房子(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同. 当然,因 ...

  6. LeetCode 1223. 掷骰子模拟(DP)

    1. 题目 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始 ...

  7. LeetCode 1155. 掷骰子的N种方法(DP)

    1. 题目 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, -, f. 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和. 如果需要掷出的总点数为 target,请你 ...

  8. LeetCode 1139. 最大的以 1 为边界的正方形(DP)

    1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量.如果不存在,则返回 0. 示例 1: 输入:grid ...

  9. 程序员面试金典 - 面试题 17.23. 最大黑方阵(DP)

    1. 题目 给定一个方阵,其中每个单元(像素)非黑即白. 设计一个算法,找出 4 条边皆为黑色像素的最大子方阵. 返回一个数组 [r, c, size] ,其中 r, c 分别代表子方阵左上角的行号和 ...

最新文章

  1. python中s和t_Python中关于序列化的讨论,以及dump、dumps和load、loads区别的对比
  2. mysql命令实践_MySQL:常用命令行
  3. MySQL子查询作为列_mysql 列子查询
  4. mysql基础,索引
  5. 机器学习的训练数据(Training Dataset)、测试数据(Testing Dataset)和验证数据(Validation Dataset)
  6. 2017年3月份前端资源分享
  7. SVN记录转excel文件的小程序
  8. 使用QXDM Log 來分析LTE環境資訊
  9. mac应用音量控制软件:Sound Control for Mac
  10. 冰点还原精灵授权问题解答
  11. 坐标轴范围及刻度的自适应算法
  12. python判断素数的函数_python判断素数的方法
  13. 微信缓存文件要这样处理,分分钟多出几个G!
  14. 软考数据库考试有题库吗_网络工程师真的像大家说的那么容易考吗?
  15. 身份证核验、实名认证接口助力实名制
  16. Map接口以及那些实现类
  17. Django项目后端实现注册功能---短信验证码(容联云)。
  18. java安卓天气结课作业_安卓天气预报毕设和毕业论文
  19. idw matlab 程序_matlab小波变换程序
  20. LintCode领扣算法问题答案:150. 买卖股票的最佳时机 II

热门文章

  1. PyTorch中的topk方法以及分类Top-K准确率的实现
  2. C++实现德州扑克游戏(和电脑一起玩)
  3. Python爬虫实战一之爬取糗事百科段子
  4. ../Libraries/core_cm3.c(445): error: non-ASM statement in naked function is not supported
  5. elementui select选择器获取选中拿到当前对象
  6. centos 7 显示远程窗口到本地
  7. springboot使用poi实现Excel模板的下载功能
  8. leetcode 561
  9. [BZOJ 3730] 震波
  10. ExtJS6图表简单demo(折线图,散点图,柱状图)