原题链接:https://codeforces.com/problemset/problem/1455/C
Alice和Bob玩简化规则的乒乓球。
其中某一个人发球,另一个人接球,发球的人再接球,如此循环。
如果某一个人不回球,这个人就输了这轮游戏。胜者在下一局游戏中发球。Alice开始第一场游戏。
Alice有x个体力,Bob有y个体力。为了击球(在发球或回球时),每个玩家都要花费1点体力,所以如果他们没有任何体力,他们不能回球(并输了这轮游戏)或不能发球(在这种情况下,另一个玩家发球)。如果两个球员都耗尽了体力,游戏就结束了。
有时,从战略上讲,不回球,输掉当前的游戏,但保存体力是最理想的。相反,当这个人开局需要发球时,如果他们还有一些耐力,他们必须发球。
Alice和Bob都以最佳状态进行游戏,并希望:1. 最大限度地增加自己的胜利次数。2. 在第1点的要求的基础上,最大限度地减少对手的胜利次数。
计算得出Alice和Bob的胜场数。
Input
第一行包含一个整数t(1≤t≤104)--测试用例的数量。
每个测试样例的第一行也是唯一的一行包含两个整数x和y(1≤x,y≤106)--Alice和Bob的初始耐力。
Output
对于每个测试案例,打印两个整数--Alice和Bob都是最佳策略下胜利数。
Example
Input
3 1 1 2 1 1 7Output
0 1 1 1 0 7Note
在第一个测试样例中,Alice发球,花费1个体力。然后Bob回球,也花费了1个体力。Alice因为没有体力了,所以不能回球,输掉比赛。两人的体力都用完了,所以游戏结束,Alice的胜利为0,Bob的胜利为1。
在第二个测试样例中,Alice发球并消耗了1个体力。Bob决定不回球--他输掉了比赛,但节省了耐力。Alice,作为上一局的赢家,在下一局中发球并多花1个体力。这一次,Bob回球并花费1个体力。Alice没有任何体力了,所以她不能回球,输掉了这场比赛。两人的体力都用完了,所以游戏结束,Alice 1次胜,Bob 1次获胜。
在第三个测试样例中,Alice发球,花费1个体力。Bob回球,花费1个耐力。Alice用完了体力,所以她不能回球,输掉了比赛。Bob作为赢家,在接下来的6场比赛中发球。每次Alice都不能回球,每局都输。游戏结束,Alice 0次胜,Bob 7次胜。
思路:1. 最大限度地增加自己的胜利次数。注意这个条件!那就非常简单了!7行代码解决!
#include <bits/stdc++.h>
using namespace std;
int main()
{
int T;
cin >> T;
while(T--)
{
int x,y,x1 = 0,y1 = 0;
scanf("%d%d",&x,&y);
printf("%d %d\n",x1 - 1,y1);
}
return 0;
}