牛客国庆集训day5 G 贵族用户 (模拟)
程序员文章站
2022-07-02 13:39:27
链接:https://www.nowcoder.com/acm/contest/205/G来源:牛客网 题目描述 终于活成了自己讨厌的样子。 充钱能让你变得更强。 在暖婊这个游戏里面,如果你充了x元钱,那么你能获得10x个钻石。同时暖婊也有m档VIP,如果你往暖婊里面充了ai个钻石,那么你能成为第i ......
链接:https://www.nowcoder.com/acm/contest/205/g
来源:牛客网
题目描述
终于活成了自己讨厌的样子。
充钱能让你变得更强。
在暖婊这个游戏里面,如果你充了x元钱,那么你能获得10x个钻石。同时暖婊也有m档vip,如果你往暖婊里面充了ai个钻石,那么你能成为第i档贵族用户。当你成为第i档贵族用户之后,那么你可以获得的优惠。
你需要k件材料合成衣服,其中第i件材料原价为di个钻石,你一共需要ci件这种材料。当你获得p的优惠时,这个材料的真实价格为。
请问栗子米最少需要氪多少钱,这里我们规定只能氪整数的钱。
充钱能让你变得更强。
在暖婊这个游戏里面,如果你充了x元钱,那么你能获得10x个钻石。同时暖婊也有m档vip,如果你往暖婊里面充了ai个钻石,那么你能成为第i档贵族用户。当你成为第i档贵族用户之后,那么你可以获得的优惠。
你需要k件材料合成衣服,其中第i件材料原价为di个钻石,你一共需要ci件这种材料。当你获得p的优惠时,这个材料的真实价格为。
请问栗子米最少需要氪多少钱,这里我们规定只能氪整数的钱。
输入描述:
第一行一个整数t(t≤ 1000),表示数据组数。i
每组数据第一行两个整数m,k(1≤ m,k≤ 15)。
接下来m行每行两个正整数1≤ a
≤ 105
, 1≤ pi
≤ 100,保证aii+1,pi≤ pi+1。
接下来k行每行两个正整数1≤ ci, di≤ 1000。
输出描述:
对于每组数据,输出一个整数,表示至少要氪多少钱。
示例1
输出
复制10
题目意思不是太好懂,冲会员算是预存?懂了意思模拟就好了
模拟题竟然没有看,最近风气不行呀。以后态度要认真了
1 #include <iostream> 2 #include <stdio.h> 3 #include <math.h> 4 #include <string.h> 5 #include <stdlib.h> 6 #include <string> 7 #include <vector> 8 #include <set> 9 #include <map> 10 #include <queue> 11 #include <algorithm> 12 #include <sstream> 13 #include <stack> 14 using namespace std; 15 #define rep(i,a,n) for (int i=a;i<n;i++) 16 #define per(i,a,n) for (int i=n-1;i>=a;i--) 17 #define pb push_back 18 #define mp make_pair 19 #define all(x) (x).begin(),(x).end() 20 #define fi first 21 #define se second 22 #define sz(x) ((int)(x).size()) 23 #define fo freopen("in.txt", "r", stdin); 24 #define debug(x) cout << "&&" << x << "&&" << endl; 25 #define lowbit(x) (x&-x) 26 #define mem(a,b) memset(a, b, sizeof(a)); 27 typedef vector<int> vi; 28 typedef long long ll; 29 typedef pair<int,int> pii; 30 const ll mod=1000000007; 31 const int inf = 0x3f3f3f3f; 32 ll powmod(ll a,ll b) {ll res=1;a%=mod;for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;} 33 ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;} 34 //head 35 36 const int maxn=110; 37 int a[maxn],p[maxn],c[maxn],d[maxn]; 38 int _,m,k; 39 int main() { 40 for(scanf("%d",&_);_;_--) { 41 scanf("%d%d",&m,&k); 42 rep(i,1,m+1) scanf("%d%d",a+i,p+i); 43 rep(i,1,k+1) scanf("%d%d",c+i,d+i); 44 int ans=inf; 45 rep(i,0,m+1) {//枚举会员类型 46 int cur=0; 47 rep(j,1,k+1) { 48 int temp=(int)ceil(d[j]*(100-p[i])/100.0);//会员单价 49 cur+=temp*c[j]; 50 } 51 if(cur<a[i]) cur=a[i];//如果花的钻石比买会员少,就按会员的钻石 52 ans=min(ans,cur); 53 } 54 ans=(int)ceil(ans*0.1);//转成钱 55 printf("%d\n",ans); 56 } 57 }