其他分享
首页 > 其他分享> > 2021ICPC江西省赛 H Hearthstone So Easy

2021ICPC江西省赛 H Hearthstone So Easy

作者:互联网

H. Hearthstone So Easy

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K

Hearthstone is a turn-based card game. The game flow of each round is: Player 1 draws card ⇒ player 1 plays cards ⇒ player 2 draws card ⇒ player 2 plays cards.

We simplify the game logic as follows:

  1. to increase his/her health by k points. Note that there is no upper limit on health.
  2. to reduce the opponent’s health by k points.

​ When there are no cards in the player’s card deck, the player will enter a state of fatigue. At this time, the player will increase his/her fatigue value by one every times he/she tries to draw a card, and then deduct the amount of health by th****e fatigue value. The fatigue value of each player is initially 000 points.

pllj and freesin like playing hearthstone very much. In a certain game, both players have no cards in their decks, and both the fatigue points are 000 points, and the health points are both n points. When a player’s health is less than or equal to 000, the player immediately loses the game.

​ At this time, it’s pllj’s turn to draw card. Both players are very smart, so they play the game optimally. Who will be the winner? Please output his name.

输入描述:

The first line contains a single integer t (1≤t≤10^5), which represents the number of data cases.
Each test case is one line containing two positive integers n,k(1≤n,k≤10^9)separated by one whitespace, of which meaning is described before.

输出描述:

For each case of data, output a line of string pllj or freesin to indicate the winner.

Tag: math

Difficulty:5/10


思路:

​ 有一点博弈的思想在里面,首先我们可以想到有四种情况: A加血, B也加血(情况一)、A打B B加血(情况二)、A加血 B打A(情况三)、A打B B打A(情况四); 因为A和B都是相同的血量,所以我们可以发现情况一和四拖疲劳的话肯定是A输(A是先手),而且因为A先吃疲劳,A必然会被B先打死 ; 所以A唯一的赢面就在于能否第一回合斩杀B,否则都是B赢。当然,记得特判只有1血时,A直接暴毙。

AC代码:

#include <iostream>

using namespace std;

int t;

int main() {
	cin >> t;
	while (t --) {
		int n, k;
		cin >> n >> k;
		if (n == 1)  cout << "freesin" << endl;
		else if (1 + k >= n)  cout << "pllj" << endl;
		else  cout << "freesin" << endl;
	}
	return 0;
}

标签:player,game,points,So,Easy,each,Hearthstone,health,card
来源: https://blog.csdn.net/m0_53937785/article/details/121132687