浙工大2015年校赛 Problem G: You you rhythm master(贪心题)

来源:互联网 发布:java mail ssl 编辑:程序博客网 时间:2024/06/03 17:22

题目链接:http://acm.zjut.edu.cn/onlinejudge/problem.php?cid=1100&pid=6

题面:

Problem G: You you rhythm master

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 295  Solved: 134
[Submit][Status][Web Board]

Description

最近Fry迷上了一款叫做rhythm master的游戏,
rhythm master是腾讯出品的山寨音乐游戏,屏幕上会不断的掉下音符,在一定的时间内玩家需要用手指去点击下落的音符,根据点击的时间不同分别获得Perfect ,Great,和Miss的评价并获得不同的分数.
分数的计算规则如下:
1,初始的combo数为0.
2,每获得一个Perfect, combo数加一,然后根据当前的combo分别获得不同的分数,combo在0到20(包括20)之间时获得200分,combo在20到50(包括50)之间获得 332 分,combo在50到100(包括100)之间获得466分,combo在100以上获得600分. 
3,每获得一个Great, combo数加一,然后根据当前的combo分别获得不同的分数,combo在0到20(包括20)之间时获得80分,combo在20到50(包括50)之间获得 132 分,combo在50到100(包括100)之间获得186 分,combo在100以上获得240分.
4,每获得一个Miss,不得分,同时combo数清零.
现在已经知道最后Fry获得的Perfect ,Great,和Miss的数量,你需要做的就是求出Fry最终有可能获得的最大得分.

输入
第一行是一个T(T<=100),表示接下来有T组数据.
接下来T行,每行有三个数P,G,M,分别表示一首歌中Fry获得的Perfect ,Great,和Miss的数量,(0<=P,G,M<=1000).还是不懂的自行百度节奏大师规则…

Input

第一行是一个T(T<=100),表示接下来有T组数据.
接下来T行,每行有三个数P,G,M,分别表示一首歌中Fry获得的Perfect ,Great,和Miss的数量,(0<=P,G,M<=1000).

Output

每组数据对应输出一行,每行一个数,表示Fry所能获得的最高分数.

Sample Input

21 1 1 100 2 0

Sample Output

28038220

HINT

题意挺清晰的,就是节奏大师的玩法吧。
贪心策略:M最前或者最后,G在P的前面,这样才可以让P的得分更高。

根据p g两点的相对移动来写计算公式,虽然繁琐了些,结合图示还是能较容易写正确的。



代码:

#include <iostream>#include <string.h>#include <cstdio>#include <queue>using namespace std;int main(){    int t,p,g,m,ans;    scanf("%d",&t);while(t--){ans=0;scanf("%d%d%d",&p,&g,&m);if(g<=20)ans+=g*80;else if(g<=50)ans+=(20*80+(g-20)*132);else if(g<=100)ans+=(20*80+30*132+(g-50)*186);else ans+=(20*80+30*132+50*186+(g-100)*240);p+=g;if(p<=20)ans+=(p-g)*200;else if(p<=50){if(g<=20){ans+=((20-g)*200+(p-20)*332);}else{ans+=(p-g)*332;}}else if(p<=100){if(g<=20)ans+=((20-g)*200+30*332+(p-50)*466);else if(g<=50)ans+=((50-g)*332+(p-50)*466);else ans+=(p-50)*466;}else{if(g<=20)ans+=((20-g)*200+30*332+50*466+(p-100)*600);else if(g<=50)ans+=((50-g)*332+50*466+(p-100)*600);else if(g<=100)ans+=((100-g)*466+(p-100)*600);else ans+=(p-g)*600;}printf("%d\n",ans);} return 0;}


0 0
原创粉丝点击