牛客小白赛月赛45--c--山楂
链接:https://ac.nowcoder.com/acm/contest/29519/C
来源:牛客网
题目描述
众所周知,清楚姐姐最近迷上了一个老年游戏“山楂串”(点进去可以玩)这个游戏中我们可以将3或4个iii级糖果合并,升级成为一个高一级的糖果并且获得x∗ix*ix∗i点积分,xxx为消耗同级糖果的数量,iii为你消耗的糖果等级,当你拥有了一个9级糖果也就代表你有了一串山楂串,这个时候你的9级糖果就会消失。
请问 如果给定你每级若干个糖果,你最多能得到多少积分。
qcjj的记录:
输入描述:
第一行输入8个非负整数 ai≤109a_i \leq 10^9ai≤109分别代表iii级糖果的数量。
输出描述:
一个正整数输出你获得的最高积分。
----------------------
思路:每次转换尽量转换数量多的高级糖果,其实如果仔细观察一下,大于6的数量都可以被完全转换,所以只需要特判一下小于6的情况即可
ac代码
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(0);
long long sum=0,n,op[12],te,le;
for(long long i=1;i<=8;i++)
{
cin>>op[i];
}
for(long long i=1;i<=8;i++)
{
if(op[i]<3)
continue;
else
{
te=op[i]/3;
if(te>=2)
{
sum+=op[i]*i;
op[i+1]+=te;
}
else if(op[i]==3)
{
sum+=3*i;
op[i+1]++;
}
else if(op[i]>=4&&op[i]<=5)
{
sum+=4*i;
op[i+1]++;
}
}
}
cout<<sum<<endl;
return 0;
}