欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

牛客国庆集训day5 G 贵族用户 (模拟)

程序员文章站 2022-03-25 22:58:47
链接: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档贵族用户之后,那么你可以获得牛客国庆集训day5 G 贵族用户 (模拟)的优惠。
你需要k件材料合成衣服,其中第i件材料原价为di个钻石,你一共需要ci件这种材料。当你获得p的优惠时,这个材料的真实价格为牛客国庆集训day5 G 贵族用户 (模拟)
请问栗子米最少需要氪多少钱,这里我们规定只能氪整数的钱。

输入描述:

第一行一个整数t(t≤ 1000),表示数据组数。
每组数据第一行两个整数m,k(1≤ m,k≤ 15)。
接下来m行每行两个正整数1≤ a
i
≤ 10
5
, 1≤ p
i
≤ 100,保证a
ii+1,pi≤ pi+1
接下来k行每行两个正整数1≤ c
i, di≤ 1000。

输出描述:

对于每组数据,输出一个整数,表示至少要氪多少钱。
示例1

输入

复制
1
1 1
100 100
100 100

输出

复制
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 }