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

链接:https://www.nowcoder.com/acm/contest/205/G
来源:牛客网

题目描述

终于活成了自己讨厌的样子。
充钱能让你变得更强。
在暖婊这个游戏里面,如果你充了x元钱,那么你能获得10x个钻石。同时暖婊也有m档VIP,如果你往暖婊里面充了ai个钻石,那么你能成为第i档贵族用户。当你成为第i档贵族用户之后,那么你可以获得的优惠。
你需要k件材料合成衣服,其中第i件材料原价为di个钻石,你一共需要ci件这种材料。当你获得p的优惠时,这个材料的真实价格为
请问栗子米最少需要氪多少钱,这里我们规定只能氪整数的钱。

输入描述:

第一行一个整数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 }

 



posted @ 2018-10-05 20:06  Frontierone  阅读(295)  评论(0编辑  收藏  举报