西瓜汁加珍珠
作者:互联网
链接:https://ac.nowcoder.com/acm/contest/2763/I
来源:牛客网
题目描述
你有一个20元的餐券,这里共有n种饮品,你可以只买一种,也可以买多种,每种可以只买一杯,也可以买多杯(只要你的钱够)。每杯饮品原本给予你的满足感和它的价格相同,但珍珠可以使一杯饮品给予你的满足感翻倍,加一份珍珠是2倍,加两份是4倍,加三份是8倍,以此类推。
你可以在任何一杯饮品甚至西瓜汁里加任意份数珍珠(只要你的钱够),每份珍珠2元。
你获得的满足感是你买到的所有饮品的满足感的和,请问你通过这张餐券最多能获得多少满足感。
输入描述:
输入共2行。
第1行:一个正整数n,表示饮品的种类数
第2行:n个由空格分开的正整数pi,表示第i种饮品的价格
1≤n≤201 \le n \le 201≤n≤20
2≤pi≤202 \le p_i\le 202≤pi≤20
输出描述:
输出一行,一个正整数,表示你能获得的满足感的最大值示例1
输入
复制4 17 18 19 20
输出
复制36
题解:加珍珠可以让满足感翻倍,所以加珍珠更划算。20块钱买一杯以上饮料不如只买一杯饮料加珍珠划算。计算每杯饮料最多可以加多少珍珠,然后计算出每杯饮料的满足感,取最大的那个
#include <stdio.h> #include <algorithm> #define MAX 25 using namespace std; int main(){ int s[MAX]; int n,r; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++) scanf("%d",&s[i]); r=0; for(int i=0;i<n;i++){ int k = (20-s[i]) / 2; int t = s[i] * pow(2,k); r = max(r,t); } printf("%d\n",r); } return 0; }
标签:西瓜汁,le,20,珍珠,int,饮品,满足感 来源: https://www.cnblogs.com/shiliuxinya/p/12168695.html