本文主要是介绍贪心--cf478-c Table Decoration,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
a,b,c3种气球,给定个数,每张桌子放3个,要求一张桌子上颜色不完全相同。
设个数 a < b < c,如果c > 2 * (a + b),即acc,bcc,放完仍有剩余,则余下的c多余,可扔掉。c' = min(c,2 * (a + b) )。 组数为 a + b
除去c过多的情况,剩下的情况中可以保证所有的气球都用完。组数就为(a + b + c) / 3
因为,比如c少一些,c < 2 * (a + b),那么一些bcc少了c,b就多出来,b就可以代替c,变成bbc。甚至abc。
只要不出现bbb即可。若出现bbb,则是abb,cbb之后,此时b个数比c大,矛盾。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
long long a[3];
for (int i = 0; i < 3; i ++) {
cin >> a[i];
}
sort(a,a + 3);
a[2] = min(2 * (a[0] + a[1]),a[2]);
cout << (a[0] + a[1] + a[2]) / 3 << endl;
return 0;
}
这篇关于贪心--cf478-c Table Decoration的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!