Codefroces 366 C Dima and Salad(dp)
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)相关推荐
- 求三角形最大面积(DP)
求三角形最大面积(DP) 在OJ上奇迹般WA了:WA:70. Why? #include <iostream> #include <string.h> using namesp ...
- LeetCode 编辑距离 II(DP)
1. 题目 给你两个单词 s 和 t,请你计算出将 s 转换成 t 所使用的最少操作数. 你可以对一个单词进行如下两种操作: 删除一个字符 替换一个字符 注意: 不允许插入操作 题目保证有解 示例: ...
- LeetCode 1220. 统计元音字母序列的数目(DP)
文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串: - 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i ...
- LeetCode 265. 粉刷房子 II(DP)
文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同. 当然,因为市场上不同颜色油 ...
- LeetCode 256. 粉刷房子(DP)
文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同. 当然,因 ...
- LeetCode 1223. 掷骰子模拟(DP)
1. 题目 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始 ...
- LeetCode 1155. 掷骰子的N种方法(DP)
1. 题目 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, -, f. 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和. 如果需要掷出的总点数为 target,请你 ...
- LeetCode 1139. 最大的以 1 为边界的正方形(DP)
1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量.如果不存在,则返回 0. 示例 1: 输入:grid ...
- 程序员面试金典 - 面试题 17.23. 最大黑方阵(DP)
1. 题目 给定一个方阵,其中每个单元(像素)非黑即白. 设计一个算法,找出 4 条边皆为黑色像素的最大子方阵. 返回一个数组 [r, c, size] ,其中 r, c 分别代表子方阵左上角的行号和 ...
最新文章
- AngularJS实现产品列表(页面搜索,排序)
- (转)PJSIP入门:编译,运用PJSIP,PJMEDIA
- java itext 导出pdf文件_【Java,PDF】使用Itext实现PDF文件生成
- java 字节取位_java位 、字节 、字符的梳理
- halcon模板匹配干扰边缘消除办法(最硬核方式)
- 数据挖掘肿瘤预测_科研套路不嫌多,数据挖掘发3分
- linux网络编程之多路I/o转接服务器select
- div字体居中_div和span的使用
- 【今日CS 视觉论文速览】10 Jan 2019
- 百度 合肥地区 软件研发工程师 笔试题
- Spark算子---实战应用
- python支持强大的科学计算功能_Python可以做什么——Python语言的一个简要导引
- linux-SSH远程服务的管理操作,查看虚拟机信息
- RecyclerView 实现多种布局(上半部Gridview样式,下半部Listview样式)以及多种数据类型实现不同布局
- [含论文+源码等]基于java+ssh+mysql实现的共享自行车租赁|出租管理系统
- itunes备份是整个手机备份吗_如何使用iTunes备份手机资料
- C#开发多语言翻译软件
- Mysql中查找附近人的查询语句
- 北航基物1101英文波尔共振实验
- linux cp批量复制,【linux】cp 批量复制文件
热门文章
- b站python直播批量发送弹幕_Python实现自动发送B站直播弹幕软件
- PHP使用PHPExcel读取excel表格
- 微凉日子,菠菜鸡丝面
- YJX基础44 __declspec(naked)
- 吴恩达出任Woebot董事长,再度出手医疗领域帮人们治疗抑郁症
- 明白这六个职场生存法则,老板会对你刮目相看
- 中文puppy linux7.5,Puppy Linux 7.5发布,支持UEFI启动的
- 百度AI开放平台在线体验及API接口调用(python)
- javascript之活灵活现的Array
- 研发人员绩效评价常见误区