C.ピンポン(CFd2ゲーム)

C.ピンポン


テストごとの時間制限テストごとの1秒のメモリ制限256メガバイト
入力標準入力
出力標準出力
アリスとボブは、簡略化されたルールでピンポンを再生します。

ゲーム中、ボールを提供しているプレーヤーがプレーを開始します。サーバーがボールを打ち、レシーバーがボールを打ち返すことでリターンします。その後、サーバーとレシーバーは、どちらかが復帰しなくなるまで、交互に復帰する必要があります。

復帰しない人はこのプレーを失います。プレイの勝者は次のプレイを開始します。アリスは最初のプレイを開始します。

アリスのスタミナはx、ボブのスタミナはyです。(サーブまたはリターン中に)ボールを打つために、各プレーヤーは1スタミナを費やします。したがって、スタミナがない場合、ボールをリターンできない(そしてプレーを失う)か、ボールをサーブできません(この場合)。 、代わりに他のプレーヤーがボールを出します)。両方のプレイヤーがスタミナを使い果たした場合、ゲームは終了します。

時々、ボールを戻さず、現在のプレーを失うのではなく、スタミナを保存することが戦略的に最適です。逆に、サーバーがプレイを開始するとき、スタミナが残っている場合は、ボールを打つ必要があります。

アリスとボブはどちらも最適なプレーをしており、まず、勝利数を最大化し、次に、対戦相手の勝利数を最小化したいと考えています。

結果として得られるアリスとボブの勝利数を計算します。

入力
最初の行には、テストケースの数である単一の整数t(1≤t≤104)が含まれています。

各テストケースの最初で唯一の行には、2つの整数xとy(1≤x、y≤106)が含まれています—アリスとボブの最初のスタミナ。

出力
各テストケースについて、2つの整数を出力します。両方が最適に再生される場合、結果として得られるアリスとボブの勝利数です。

例えば
inputCopy
3
1 1
2 1
1 7
outputCopy
0 1
1 1
0 7

最初のテストケースでは、アリスは、ボールを提供し、1つのスタミナを費やします。次に、ボブはボールを返し、スタミナを1つ消費します。アリスはスタミナが残っておらず、プレーを失ったため、ボールを返すことができません。どちらもスタミナが足りなくなったため、アリスが0勝、ボブが1勝でゲームオーバーになりました。

2番目のテストケースでは、アリスはボールを出し、1スタミナを費やします。ボブはボールを戻さないことに決めました—彼はプレーを失いますがスタミナを節約します。アリスは、最後のプレーの勝者として、次のプレーでボールを出し、さらに1スタミナを費やします。今回、ボブはボールを返し、1スタミナを費やします。アリスはスタミナが残っていないので、ボールを返すことができず、プレーを失います。どちらもスタミナが足りなくなったので、アリス1人とボブ1人の勝利でゲームは終了しました。

3番目のテストケースでは、アリスはボールを出し、1スタミナを費やします。ボブはボールを返し、1スタミナを費やします。アリスはスタミナを使い果たしたので、ボールを返すことができず、プレーを失います。ボブは勝者として、次の6回のプレーでボールを出します。アリスがボールを返すことができず、各プレーを失うたびに。ゲームは0アリスと7ボブの勝利で終わりました。

質問: あなたは2、(サーブを含む)卓球をプレイあなたが聞かせできる回数与えるそれらによって勝利の数を最大化して、相手が勝利の数を最小限にします。

解決策:
2人はAAですABBB(Aファースト)それぞれnnを打つことができますnmmm
まず、Bがmに勝つ回数を最大化します。つまり、Bがプレーしている場合、Aはそれをキャッチしません。Aがピックアップしない場合、Aがボールをキャッチしなかった回数である必要があります。 B勝数を減らすことも可能です。彼を迎えに行かなければ**です。したがって、Bは最初にAを再生します。Aが最後のボールを打つと、BはAから最後のボールを受け取り、Aが勝った回数を最小限に抑えます。彼は、1回勝つだけでなく、Aを1回少なくすることもできます。だからついにAAAはn− 1n-1に勝ちますn1回、BBBmmm回。

#include<bits/stdc++.h>
#define pb emplace_back
#define INF 0x3f3f3f3f
#define f first
#define s second
#define pii pair<int, int>
#define mod 1000000007
#define all(x) x.begin(), x.end()
#define mem(x, a) memset(x, a, sizeof(x))
#define loli ios_base::sync_with_stdio(0), cin.tie(0)
using namespace std;
const int maxn = 1e6 + 50;

int main(){
    
    
	int t;
	cin >> t;
	while(t--){
    
    
		int n,m;
		cin>>n>>m;
		cout<<n-1<<" "<<m<<endl;
	}
	return 0;
}

おすすめ

転載: blog.csdn.net/weixin_45911397/article/details/110672612