题目:
问题描述
炼金术士小蓝毕生梦想是合成贤者之石。
合成贤者之石需三种水晶:红水晶、蓝水晶以及黄水晶。红水晶能量最强,蓝水晶次之,黄水晶最弱。
对此,小蓝准备了 n 个坩埚来合成贤者之石,第 i 个坩埚最多容纳 ai 颗水晶。为保证能量平衡,每个坩埚需满足:
- 若坩埚中有红水晶,则红水晶数量 < 蓝水晶数量 < 黄水晶数量。
- 若坩埚中没有红水晶,但有蓝水晶,则蓝水晶数量 < 黄水晶数量。
- 若坩埚中只有黄水晶,则无需满足任何条件。
在合成关键时刻,嫉妒小蓝的黑魔法师小桥,向每个坩埚中放入了若干蓝水晶和黄水晶试图破坏平衡。小桥并不知道能量配比规则,只是随意放入了一些,且蓝水晶数量 < 黄水晶数量,蓝水晶数量 + 黄水晶数量 ≤ 坩埚的容量。
现在,小蓝需尽快调整水晶数量以确保能力平衡。请问,在所有可能的情况中,他最多能向这 n 个坩埚中放入多少颗红水晶?
输入格式
第一行包含1个整数 n (1 ≤ n ≤ 10³),表示坩埚的数量。
第二行包含 n 个整数 a1,a2,…,an (1 ≤ ai ≤ 10⁵),其中 ai 表示第 i 个坩埚的容量。
输出格式
输出一个整数,表示在所有可能的情况中,小蓝最多能向这 n 个坩埚中放入的红水晶数量。
样例输入
3
1 1 6
样例输出
1
样例说明
无论如何,小蓝也无法在第1、2个坩埚中放入红水晶。
对于3个坩埚,最优情况为:小桥向第3个坩埚中放入了3个黄水晶、2个蓝水晶,此时,小蓝可以向其放入1个红水晶。
思路:
模拟一番即可,发现如果最多放入红水晶。
红水晶,蓝水晶,黄水晶。(1,2,3)(2,3,4)(3,4,5).............我们会发现,只有坩埚容量为6的时候,才可以放入红水晶。并且找到一个规律,当坩埚容量≥6时候,红水晶的个数为(坩埚容量/2-1)
代码如下:
#include <iostream>
using namespace std;
int n;
int main()
{
cin >> n;
// 请在此输入您的代码
int t;
int sum = 0;
for(int i = 1 ; i <= n ; i++)
{
cin >> t;
if(t >= 6)
sum += t/3 - 1;
}
cout << sum;
return 0;
}
标签:10,坩埚,入门,水晶,小蓝,放入,小白,数量,黄水晶
From: https://blog.csdn.net/zqystca/article/details/145212852