Codeforces 322B Ciel and Flowers 规律

点击打开链接

题意:有红绿蓝三种颜色的画,每种拿三朵可以组成一束花,或者各拿一朵组成花束,告诉你每种花的数目,求出可能组成最多的花束

设混合的flower个数为x时 ans[x]=x+(R-x)/3+(G-x)/3+(B-x)/3  (1<=R,G,B<=1e9)

容易发现x连续增加3的倍数时 即ans[x]=ans[x+3T] 即ans[]为3个一循环 取连续的三个比较出最优值即可

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e3+20;

int r,g,b,x;//0<=r,g,b<=1e9
int main()
{
	while(cin>>r>>g>>b)
	{
		// 3 5 5 ans=4
		int x=min(min(r,g),b);
		int ans=0;

		for(int i=0;i<=min(x,2);i++)
		{
			int y=i+(r-i)/3+(g-i)/3+(b-i)/3;
			ans=max(ans,y);
		}
		cout<<ans<<endl; 	
	} 
	
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值