CF261A Maxim and Discounts -- 贪心
Description
在商场中,有m种的折扣,当你买的东西到qi个的时候,可以使用该种类型的折扣,对要买的东西进行免费,东西可以免费最至多2个。
免费的条件是,你所选择进行免费的东西,不能超过已经在购物车的中最便宜的商品。
问买所有的物品,使用这些打折规则,使得付的钱最少。
Solution
读题可发现:
- 每种优惠类型可以使用无数次 => 明示贪心(每次都用要求最少的那种)
- 所选择进行免费的东西,不能超过已经在购物车的中最便宜的商品(狡猾 精明的商人)=> 所以最好就是从大到小依次买,能优惠时直接跳两个
(我不知道怎么脑子抽风了,想到从大到小的顺序以后还在顺序做…浪费了半个多小时)
代码如下:
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cmath>
#include <queue>
#include <map>
#include <set>
#define il inline
#define re register
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;
int n, q;
int discount[maxn], a[maxn];
ll ans = 0;
il bool cmp(int x, int y) {return x > y;
}
int main() {scanf("%d", &q);for(re int i = 1; i <= q; ++i) scanf("%d", &discount[i]);sort(discount+1, discount+q+1);scanf("%d", &n);for(re int i = 1; i <= n; ++i)scanf("%d", &a[i]);sort(a+1, a+n+1, cmp);int cnt = 0, tmp = discount[1];for(re int i = 1; i <= n; ++i) {if(cnt == tmp) {cnt = 0;i += 2;}cnt++;ans += a[i];}printf("%lld\n", ans);return 0;
}
CF261A Maxim and Discounts -- 贪心相关推荐
- Maxim and Discounts(贪心)
Maxim and Discounts 描述 Maxim always goes to the supermarket on Sundays. Today the supermarket has a ...
- Codeforces 161 B. Discounts (贪心)
题目链接:http://codeforces.com/contest/161/problem/B 题意: 有n个商品和k辆购物车,给出每个商品的价钱c和类别t(1表示凳子,2表示铅笔),如果一辆购物车 ...
- 2016区域赛前冲刺训练
UPD 2016.10.23 shift-and (2题) Codeforces 训练 现在已经完成了: 191 [Codeforces Round #377] (6/6) Div 2 A Buy a ...
- CF - 779C. Dishonest Sellers 排序+贪心
1.题目描述: C. Dishonest Sellers time limit per test 2 seconds memory limit per test 256 megabytes input ...
- 算法设计与分析第3章 贪心算法
第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...
- 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...
问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...
- Too Many Segments CF595D 贪心乱搞
传送门! 比赛的时候没有时间写了,看看了看大佬的代码,学习学习. 一开始实验室大佬说是用差分写的,但是看了代码发现打cf的人大家都是stl狂魔! 贪心思路:区间按照左端点排序,从1~2e5遍历每一个点 ...
- Roundgod and Milk Tea 贪心
这个题好像可以用一种类似与置换的贪心方法来做~ sum记为剩余奶茶,一开始sum等于奶茶和 ans记录已经喝的奶茶数 不用排序,我们就从前往后直接处理,考虑的是每一个班最多可以喝多少杯奶茶 就是从剩余 ...
- 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码
1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...
最新文章
- SQL Server 2012中的ColumnStore Index尝试
- 快速学习Android开发知识点总结(磨砺营马剑威Android)
- Redhat7 samba配置(部分)
- 瑞数(裁判文书)js的加密分析
- bigdecimal 保留两位小数_openpyxl修改单元格格式(隐藏小数、设定百分数位数)...
- python保存rtmp流_ffmpeg 推送、保存rtmp 流命令
- python进阶15变量作用域LEGB
- Self Host WebApi服务传输层SSL加密(服务器端+客户端调用)
- pdf论文中查看使用的字体
- 如何免费下载付费音乐
- 景联文科技提供步态数据采集服务、提供21000个id步态视频训练数据集
- python图形编程复选按钮和单选按钮详细说明_python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例...
- 北信源桌面终端管理系统部署与问题
- C/C++计算字符串的长度
- 测试用例的设计-面试常见问题(基础篇)
- 最强神作 Crysis深度剖析与优化指南
- 直角三角形面积Java_利用Eclipse编写第一个简单的Java程序,实现如下功能。 键盘输入:直角三角形两直角边a, b,根据勾股定理计算斜边的平方值。并输出。 例如:运行效果如下...
- ftp上传老是失败 [L] TYPE A [L] 200 Type set to A. [L] MODE Z [L] 200 MODE Z ok. [L] PASV [L] 550 Pa
- 计算机刚开始学什么时候,新手如何开始学电脑 新手学电脑从何入门
- Effective C++ 条款43