题意:

有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 背包相关推荐

  1. HDU 1248 寒冰王座(全然背包:入门题)

    HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...

  2. 单调队列多重背包时间复杂度O(vn)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 多重背包问题: 有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件.怎样装才能使背包内的物品总价值最大? 网 ...

  3. 浅说——九讲背包之01背包

    所谓九讲,也就是: 0/1背包 0/1背包降维 完全背包 多重背包(二进制优化) 混合背包 二维费用背包 分组背包 有依赖的背包 背包的方案总数\背包的具体方案路径 0/1背包: [问题描述](经典) ...

  4. codevs——2894 Txx考试(背包)

    时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description Txx是一个成绩很差的人,考试便成了他的噩梦.于是他常在考试时睡觉以打发时间.今 ...

  5. Codeforces Round #104 (Div. 2) E DP(01背包模型) +组和+除法取模求逆元

    题意: 规定只包含4或7的数为幸运数字,给定n个数的序列,求他的子序列,使得该子序列的长度为k并且满足该子序列中不存在相同的两个幸运数字.问一共寻在多少种可能.(只要该数的下标不同则认为是不同的序列) ...

  6. 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) ...

  7. 0-1背包使用一维dp数组时为何v要从大到小枚举

    样例数据 5 8 3 5 1 2 2 4 5 2 1 3 如若不然,也就是让v按照从小到大的顺序枚举,就会出现 注意高亮的那一行,第一件物品的重量只有3,怎么会得到6呢? 代码如下 #include& ...

  8. poj 2063完全背包

    题意:给出总资金和投资年份 ,n个股票 给出股票价格和其一年的利润.问如何选择能获得最大利润. 思路:股票可以重复选择,完全背包问题,完全背包也是从01背包衍生而行的,其主要区别在于中间那层循环的次序 ...

  9. codechef ANUCBC(背包)

    题目链接: https://www.codechef.com/problems/ANUCBC 按模数进行背包 取模不要直接取,分开写,不然会T #include<cstdio> #incl ...

  10. HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)

    传送门 Description 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格 ...

最新文章

  1. 时间换算_只愿与一人十指紧扣_新浪博客
  2. PowerDesigner设计的数据库 ORA-0092
  3. php 输出 cvs,php将数组转换成cvs格式并输出的简单示例
  4. android gc 回调,android - 使用Picasso通过Bitmap获取回调
  5. python工程师薪资-不止 20K,Python 工程师的薪资再度飙升!
  6. 1.单一职责原则(Single Responsibility Principle)
  7. Sql Server 常用日期格式
  8. XHTML学习笔记 Part2:核心元素
  9. 标准C++类std::string的内存共享和Copy-On-Write(写时拷贝)
  10. [渝粤教育] 江西科技师范大学 旅行社经营管理 参考 资料
  11. python第七章_python 第七章 模块
  12. 磊哥最近面试了好多人,聊聊我的感受!(附面试知识点)
  13. 文档下载:《两万字深度介绍分布式系统原理》.pdf
  14. 推行法定数字货币,现有支付宝/微信等支付系统,会否被数字货币支付系统替代并超越?
  15. python装饰器测试_python 装饰器
  16. 计算机中的PS颜色填充快捷键,ps颜色填充快捷键【解决技巧】
  17. CoreOS Linux available in China
  18. jmeter分布式报错,Error in rconfigure() method java.rmi.ConnectException: Connection refused to ho st
  19. 80后的回忆·少年篇
  20. 用python输出1~50带圈的序号(①~㊿)

热门文章

  1. Kafka 入门与实践
  2. 世界上最健康的作息时间表
  3. 使用Moment.js 格式化时间为今天,昨天,明天
  4. AI智能语音电销机器人能高效取代繁杂的电话工作
  5. 如何配置我们的家用路由器
  6. matlab eval函数代替,matlab eval函数用法
  7. 合作式智能运输系统车路协同云控系统V2X设备接入技术规范
  8. COOC一款用于文献计量和知识图谱绘制的新软件
  9. Mac连接Ubuntu服务器并用屏幕共享app显示远程应用图形界面
  10. Bluetooth 5 新功能概述