题解:
仔细分析之后发现,先用每一种花独立组成花圈,之后用三种花各自用一个组成花圈,只有在一种情况下不是最优的——有一种花数量是3的倍数,另外两种花各自多出两朵,因为这种情况下可以通过拆掉一个花圈来多做出两个花圈。所以只要判断一下就好了。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int r,g,b,ans;
int m3[3];
int main()
{
scanf("%d%d%d",&r,&g,&b);
m3[0]=r%3;m3[1]=g%3;m3[2]=b%3;
sort(m3,m3+3);
if(m3[0]==0) ans=r/3+g/3+b/3+(m3[1]==2&&r&&g&&b);
else ans=r/3+g/3+b/3+m3[1];
printf("%d\n",ans);
return 0;
}