CF1282 B 背包
题意:
有n个商品,每个商品价值为 ai 现在有一个活动优惠,买一个物品可以选择k - 1个价值小于等于该它的物品免费获得(要么一个也不选,要么一定要选k - 1个),求p个硬币一共能买多少物品。在该题中k <= n。
思路:
因为要尽量多,所以送的能拿一定拿,而且要拿贵的。对价格排个序
定义dp[i]表示买前i个用的最少的钱
dp方程式:i>=k时:dp[i]=min(dp[i-1)+a[i],dp[i-k]+a[i]) i<k时 dp[i]=dp[i-1)+a[i];
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#include <queue>
#include <iostream>using namespace std;
typedef long long ll;
const int maxn = 1e6+10;
const ll mod = 1e9+7;
int a[maxn];
int dp[maxn];
int main() {int T;scanf("%d",&T);while(T--){int n,p,k;scanf("%d%d%d",&n,&p,&k);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}sort(a+1,a+1+n);int ans=0;for(int i=1;i<=n;i++){dp[i]=dp[i-1]+a[i];if(i>=k)dp[i]=min(dp[i-k]+a[i],dp[i]);if(dp[i]<=p)ans=max(ans,i);}printf("%d\n",ans);}return 0;
}
/***/
CF1282 B 背包相关推荐
- HDU 1248 寒冰王座(全然背包:入门题)
HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...
- 单调队列多重背包时间复杂度O(vn)
版权声明:本文为博主原创文章,未经博主允许不得转载. 多重背包问题: 有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件.怎样装才能使背包内的物品总价值最大? 网 ...
- 浅说——九讲背包之01背包
所谓九讲,也就是: 0/1背包 0/1背包降维 完全背包 多重背包(二进制优化) 混合背包 二维费用背包 分组背包 有依赖的背包 背包的方案总数\背包的具体方案路径 0/1背包: [问题描述](经典) ...
- codevs——2894 Txx考试(背包)
时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description Txx是一个成绩很差的人,考试便成了他的噩梦.于是他常在考试时睡觉以打发时间.今 ...
- Codeforces Round #104 (Div. 2) E DP(01背包模型) +组和+除法取模求逆元
题意: 规定只包含4或7的数为幸运数字,给定n个数的序列,求他的子序列,使得该子序列的长度为k并且满足该子序列中不存在相同的两个幸运数字.问一共寻在多少种可能.(只要该数的下标不同则认为是不同的序列) ...
- HDU-1203 I NEED A OFFER!-0、1背包及空间优化
I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 0-1背包使用一维dp数组时为何v要从大到小枚举
样例数据 5 8 3 5 1 2 2 4 5 2 1 3 如若不然,也就是让v按照从小到大的顺序枚举,就会出现 注意高亮的那一行,第一件物品的重量只有3,怎么会得到6呢? 代码如下 #include& ...
- poj 2063完全背包
题意:给出总资金和投资年份 ,n个股票 给出股票价格和其一年的利润.问如何选择能获得最大利润. 思路:股票可以重复选择,完全背包问题,完全背包也是从01背包衍生而行的,其主要区别在于中间那层循环的次序 ...
- codechef ANUCBC(背包)
题目链接: https://www.codechef.com/problems/ANUCBC 按模数进行背包 取模不要直接取,分开写,不然会T #include<cstdio> #incl ...
- HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
传送门 Description 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格 ...
最新文章
- 时间换算_只愿与一人十指紧扣_新浪博客
- PowerDesigner设计的数据库 ORA-0092
- php 输出 cvs,php将数组转换成cvs格式并输出的简单示例
- android gc 回调,android - 使用Picasso通过Bitmap获取回调
- python工程师薪资-不止 20K,Python 工程师的薪资再度飙升!
- 1.单一职责原则(Single Responsibility Principle)
- Sql Server 常用日期格式
- XHTML学习笔记 Part2:核心元素
- 标准C++类std::string的内存共享和Copy-On-Write(写时拷贝)
- [渝粤教育] 江西科技师范大学 旅行社经营管理 参考 资料
- python第七章_python 第七章 模块
- 磊哥最近面试了好多人,聊聊我的感受!(附面试知识点)
- 文档下载:《两万字深度介绍分布式系统原理》.pdf
- 推行法定数字货币,现有支付宝/微信等支付系统,会否被数字货币支付系统替代并超越?
- python装饰器测试_python 装饰器
- 计算机中的PS颜色填充快捷键,ps颜色填充快捷键【解决技巧】
- CoreOS Linux available in China
- jmeter分布式报错,Error in rconfigure() method java.rmi.ConnectException: Connection refused to ho st
- 80后的回忆·少年篇
- 用python输出1~50带圈的序号(①~㊿)