HDU2060 Snooker(贪心)

it2022-05-05  120

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2060

分析:

这题目长的吓死我了,还好忍着看完题目。大致意思就是桌上由7种球,分为红球和其它球,红球可以有多个,其他求各颜色只能有一个。游戏规则是必须先把红球打进洞,然后才由一次机会打其他的球,红球进洞后再也没有机会出来,而其他球进洞后只要桌上还有红球,就可以出洞。红球1分,其他球分别为 2 3 4 5 6 7 分。给出当前桌子上球的个数,自己得分,对手得分,问是否还有机会赢球。

解题思路就是每次打一个红球,然后打一个七分,如果没有红球就从 7 6 5 4 3 2这样的顺序打下去,一直到桌子上没有球。

code:

#include <cstdio> using namespace std; int ball[10] = {0}; int main() { int n; scanf("%d", &n); while(n--) { int b, p ,o; // 剩余球的数量,自己得分,对手得分 scanf("%d %d %d", &b, &p, &o); if(b >= 7) { p += (b-6) + (b-6) * 7; for(int i=2; i<=7; i++) p += i; } else if(b < 7) { for(int i=7; i>7-b; i--) p += i; } if(p >= o) printf("Yes\n"); else printf("No\n"); } return 0; }

 


最新回复(0)