HDU - 4811(找规律)

本文针对HDU-4811题目进行了解析,该题涉及给定数量的不同类型球体如何摆放以获得最高分数的问题。通过对规律的观察和总结,给出了一种高效的算法解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
    HDU - 4811
    题目大意是
    给你一定数量的三种球
    然后每摆一个球根据他给的规则算分
    问最多多少分


    多列几组找规律
    前几个肯定是单独算分
    然后后面摆的要符合规律的话
    肯定每次最多6分(任意取一种球摆在中间,左边三种颜色都有,右边也三种颜色都有)


    就会发现可以总结成一个等式
    最多得分=提前摆的得分+每摆一个得分*(总球数-提前摆的球数)


    要注意的是最后可能发现给的某一种球数根本就不到2个
    可能就1个甚至没有
    但也符合上面的等式


    而
    提前摆的得分=1+2+……+(提前摆的球数-1)
*/
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <string.h>
#define pi acos(-1.0)
#define ll long long
using namespace std;


int main()
{
    ll r,y,b;
    while(cin>>r>>y>>b)
    {
        ll rr=r,yy=y,bb=b;
        if(rr>=2)
            rr=2;
        if(yy>=2)
            yy=2;
        if(bb>=2)
            bb=2;
        ll s=rr+yy+bb;
        ll ans=((s-1)*s)/2;
        ans=ans+s*(r+y+b-s);
        cout<<ans<<endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值