题目大意:有三种颜色的球若干,每次向桌子上放一个球,保证是一条序列,每次放球的得分为当前放入序列的球的前面有多少种不同的颜色a,后面的有多少种不同的颜色b,a+b。问说给定球的数量后,最大得分为多少。
解题思路:因为放球顺序是自己定的,所以我们可以尽量早得构造一个序列,使得后面放入球的得分均保持在峰值。那么求峰值就要根据球的数量来决定。我们叫得分为峰值的求为最高得分球,它们有很多个。对于一种颜色来说:0个,表示不能为在最高得分球的左边和右边,换句话来说,就是不能创造得分;1个,要么在左要么在右,创造一个得分;2个左右各一,创造两个得分;2个以上,一边有两个没有意义,所以还是两个得分。
于是峰值即被求出来了,剩下的就简单多了。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
inline ll cal (ll u) {
if (u <= 2)
return u;
else
return 2;
}
int main () {
ll R, Y, B;
while (cin >> R >> Y >> B) {
ll h = cal(R) + cal(Y) + cal(B);
ll n = R + Y + B;
ll ans = 0;
for (ll i = 0; i < n && i < h; i++)
ans += i;
if (n > h)
ans += h * (n-h);;
cout << ans << endl;
}
return 0;
}
分享到:
相关推荐
ACM培训好资料!能帮助你快速提高ACM AC题目的能力,值得一下
HDU的1250,主要是利用高精度加法,但是代码有点繁琐,效率不是很高
杭电ACMhdu1163
HDU1059的代码
hdu1001解题报告
hdu 1574 passed sorce
HDU的一题........HDU DP动态规
杭电ACM课件2014版之 (HDUACM201403版_02)简单数学题
hdu acm 教案 搜索入门 hdu acm 教案 搜索入门
hdu2101AC代码
搜索 dfs 解题代码 hdu1241
hdu 5007 Post Robot 字符串枚举。 暴力一下就可以了。
hdu acm 教案 动态规划(1) hdu acm 教案 动态规划(1)
ACM HDU题目分类,我自己总结的大概只有十来个吧
hdu1290 解题报告 献给杭电五十周年校庆的礼物 (切西瓜问题,即平面分割空间)
hdu 1166线段树代码
HDU最全ac代码
hdu动态规划算法集锦
自己做的HDU ACM已经AC的题目
hdu题目分类