CodeForces 261A Maxim and Discounts [想法/贪心题]
来源:互联网 发布:重庆招聘软件开发 编辑:程序博客网 时间:2024/06/05 00:41
题意:超市打折,有M种方案,对于每种方案给出一个Qi,你要选出Qi个推车里的商品,放到一个篮子中,然后可以从推车剩余的两种里选出0-2个东西免费,要保证免费的物品比篮子中最便宜的便宜。现在要购买N个商品,每个商品的价格为Ai,问在可以使用无限次推车、折扣的前提下,最小花费。
范围:N,M 小于10W,Ai小于1W
解法:现在有一个贪心策略,就是一直使用Min{Qi}的折扣策略,每次都买Qi+2个商品,一直到最后一次一次性买完,可知最贵的几个肯定要花钱(因为不能优惠),所以让第Qi+1,Qi+2贵的去免费,所以要先对Ai排序,然后再模拟购买过程即可。至于为什么要一直用Min{Qi}的折扣策略,是因为这样可以让优惠的物品尽量多,且物品序列在排序后的物品序列中,尽量靠前,很明显这是对的。
代码:
#include<stdio.h>#include<string.h>#include<algorithm>#include<math.h>#include<iostream>#include<stdlib.h>#include<set>#include<map>#include<queue>#include<vector>#include<bitset>#pragma comment(linker, "/STACK:1024000000,1024000000")template <class T>bool scanff(T &ret){ //Faster Input char c; int sgn; T bit=0.1; if(c=getchar(),c==EOF) return 0; while(c!='-'&&c!='.'&&(c<'0'||c>'9')) c=getchar(); sgn=(c=='-')?-1:1; ret=(c=='-')?0:(c-'0'); while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0'); if(c==' '||c=='\n'){ ret*=sgn; return 1; } while(c=getchar(),c>='0'&&c<='9') ret+=(c-'0')*bit,bit/=10; ret*=sgn; return 1;}#define inf 1073741823#define llinf 4611686018427387903LL#define PI acos(-1.0)#define lth (th<<1)#define rth (th<<1|1)#define rep(i,a,b) for(int i=int(a);i<=int(b);i++)#define drep(i,a,b) for(int i=int(a);i>=int(b);i--)#define gson(i,root) for(int i=ptx[root];~i;i=ed[i].next)#define tdata int testnum;scanff(testnum);for(int cas=1;cas<=testnum;cas++)#define mem(x,val) memset(x,val,sizeof(x))#define mkp(a,b) make_pair(a,b)#define findx(x) lower_bound(b+1,b+1+bn,x)-b#define pb(x) push_back(x)using namespace std;typedef long long ll;typedef pair<int,int> pii;int q[100100];int a[100100];int n,m;int main(){ scanff(m); int len=inf; rep(i,1,m)scanff(q[i]),len=min(len,q[i]); scanff(n); int cot=0; rep(i,1,n)scanff(a[i]); sort(a+1,a+1+n); int ans=0; drep(i,n,1){ cot++; if(cot<=len){ ans+=a[i]; //printf("add %d\n",i); } else { cot=0; i--; } } printf("%d\n",ans); return 0;}
0 0
- CodeForces 261A Maxim and Discounts [想法/贪心题]
- CodeForces 261A Maxim and Discounts(贪心)
- CF 262 C. Maxim and Discounts 贪心(水)
- Codeforces 731 B. Coupons and Discounts【贪心】
- CodeForces 721D. Maxim and Array(贪心,思维题)
- Codeforces 721D Maxim and Array[贪心]
- codeforces 721D Maxim and Array(贪心)
- 【贪心】Coupons and Discounts
- CodeForces 731B-Coupons and Discounts(贪心 模拟)
- codeforces 721D. Maxim and Array(贪心)
- Codeforces Round #374 (Div. 2)D. Maxim and Array(贪心)
- Codeforces Round 374 (Div 2)D Maxim and Array 【贪心】
- Codeforces Round #374 (Div. 2) D. Maxim and Array 贪心
- Codeforces Round #374 (Div. 2) D. Maxim and Array 贪心
- codeforces 261E Maxim and Calculator
- codeforces 261E Maxim and Calculator
- codeforces 731BCoupons and Discounts
- Codeforces B. Coupons and Discounts
- Java中如何遍历Map对象的4种方法
- python多线程机制
- UVa 10891 Game of Sum(博弈区间DP)
- 传奇屏幕截图
- 美图2016校招java编程
- CodeForces 261A Maxim and Discounts [想法/贪心题]
- Cannot reload AVD List : Value '280dpi' is not facet-valid with ......---Android studio调试错误
- 机器学习理解(三)
- 后端服务器如何简单的避免重复提交?
- mysql 添加用户访问权限
- iOS开启个人热点的纵向适配
- 编码器工作原理,光电编码器的工作原理分析
- 关于RadioButton setCheck方法的问题
- Yii2使用Redis - 从安装redis到使用