2018 CodeM 下单
[编程|1000分] 下单
时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++ 262144K,其他语言 524288K
64bit IO Format: %lld
空间限制:C/C++ 262144K,其他语言 524288K
64bit IO Format: %lld
题目描述
美团在吃喝玩乐等很多方面都给大家提供了便利。最近又增加了一项新业务:小象生鲜。这是新零售超市,你既可以在线下超市门店选购生鲜食品,也可以在手机App上下单,最快30分钟就配送到家。
新店开张免不了大优惠。我们要在小象生鲜超市里采购n个物品,每个物品价格为ai,有一些物品可以选择八折优惠(称为特价优惠)。
有m种满减优惠方式,满减优惠方式只有在所有物品都不选择特价优惠时才能使用,且最多只可以选择最多一款。
每种满减优惠描述为(bi,ci),即满bi减ci(当消费>=bi时优惠ci)。
求要买齐这n个物品(必须一单买齐),至少需要多少钱(保留两位小数)。
新店开张免不了大优惠。我们要在小象生鲜超市里采购n个物品,每个物品价格为ai,有一些物品可以选择八折优惠(称为特价优惠)。
有m种满减优惠方式,满减优惠方式只有在所有物品都不选择特价优惠时才能使用,且最多只可以选择最多一款。
每种满减优惠描述为(bi,ci),即满bi减ci(当消费>=bi时优惠ci)。
求要买齐这n个物品(必须一单买齐),至少需要多少钱(保留两位小数)。
输入描述:
第一行,两个整数n,m。
接下来n行,每行一个正整数ai,以及一个0/1表示是否可以选择特价优惠(1表示可以)。
接下来m行,每行两个正整数bi,ci,描述一款满减优惠。
1 <= n,m <=10
1 <= ai <= 1001 <= ci < bi <= 1000
输出描述:
一行一个实数,表示至少需要消耗的钱数(保留恰好两位小数)。
示例1
输入
2 1 6 1 10 1 12 2
输出
12.80
示例2
输入
2 2 6 1 10 1 5 1 16 6
输出
10.00
#include<iostream> #include <iomanip> using namespace std; int arr_a[200]={0}; int arr_aa[200]={0}; int arr_b[1005]={0}; int arr_c[1005]={0}; int main() { int n,m; int i,j; int total=0; cin>>n>>m; for(i=0;i<n;i++) { cin>>arr_a[i]>>arr_aa[i]; total+=arr_a[i]; } float mix_m=100005,temp=0; for(j=0;j<m;j++) { cin>>arr_b[i]>>arr_c[i]; if(total>=arr_b[i]) { temp=total-arr_c[i]; if(temp<mix_m) { mix_m=temp; } } } float mix_m1=0; for(i=0;i<n;i++) { if(arr_aa[i]==0) { mix_m1+=arr_a[i]; }else { mix_m1=mix_m1+arr_a[i]*0.8; } } if(mix_m1<mix_m) { cout<<fixed<< setprecision(2)<<mix_m1; }else { cout<<fixed<< setprecision(2)<<mix_m; } return 0; }