zoukankan      html  css  js  c++  java
  • HDU 4811 Ball -2013 ICPC南京区域现场赛

    题目链接

    题意:三种颜色的球,现给定三种球的数目,每次取其中一个放到桌子上,排成一条线,每次放的位置任意,问得到的最大得分。

    把一个球放在末尾得到的分数是它以前球的颜色种数

    把一个球放在中间得到的分数是它前边球的颜色种数+后边的球颜色种数。

    题解:由题意可知当三种颜色气球都大于等于2的时候是最好的情况,先一种颜色取两个得15分,然后把剩下的球全都放到中间即可,每次分数+6,题目中的样例就是这样的。当存在一种球的颜色小于2的时候我们分类讨论可以发现 0 1 1 和  0 0 2 的解是相同的,1 1 1 和 0 1 2 和 0 0 3 的解是相同的,后面都是 3*(3-1)/2 。我们把这个称之为底,每种颜色的球最多可以取两个加到底当中,再加上除去底之外的数*底即可。经过分析一个max一个min我们就可以得到结果了。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int main()
    {
        ll data[10];
        while(scanf("%lld%lld%lld",&data[0],&data[1],&data[2])!=EOF)
        {
            sort(data,data+3);
            ll sum1=min(data[0],2LL)+min(data[1],2LL)+min(data[2],2LL);
            ll sum2=data[0]+data[1]+data[2]-sum1;
            printf("%lld
    ",sum1*(sum1-1)/2+sum1*sum2);
        }
        return 0;
    }
  • 相关阅读:
    Mysql 第一天
    Jquery day02
    Jquery day01
    Spring day04笔记(SVN讲解和回顾昨天知识)
    Spring day03笔记
    Spring day02笔记
    Spring day01笔记
    python3--命名空间字典
    python3--__call__拦截调用
    python3--__radd__处理右侧加法
  • 原文地址:https://www.cnblogs.com/Ritchie/p/5898063.html
Copyright © 2011-2022 走看看