[解説]サッカーの試合

トピックはじめに

SJZEZとTSYZは、第2ラウンドは、SJZEZで自宅がTSYZホームで行われていたルールに従って、サッカートーナメントです。基準以下の結果:

  1. 目標の合計数の1に2つのゲームでより多くのゲームに勝つために。
  2. 目標の合計数と同じ政党、家庭内の他のパーティゲームに勝つために多くのゴールであれば。
  3. 2が同じであれば、勝者はランダムに生成されます= =

双方はレーテ倉の子供用の靴が知りたい、SJZEZキャプテンとして、ゲームを行いました:

第2フィールドSJZEZに(1)ボールの最小数を必要とする、ゲームに勝つことが可能です。

(2)多くのボールを超えていないか、第2のフィールドSJZEZに、TSYZは、ゲームに勝つために可能。

ゲームで知られている、ことができない目標の複数の\(30 \)

入力形式

最初の行の整数\(Tは\) 試験データ点の集合を表します。

\(T \) このような形態のようなゲームデータの設定された第1の場合で説明した文字列の行wccy's team played WHERE game, scored x goals, and conceded y goals.

ここでWHEREあるhomeaway、のいずれかのhome最初のゲームは、ホームSJZEZで行われる示し、awayそれは最初のゲームがTSYZホームで行われる表します。\(X- \)、\ (Y- \)は、それぞれのチームの目標川倉の月、そしてお互いの目標を忘れてしまった、整数です。

出力フォーマット

出力\(T \)の線は、2つの整数を含む各行は、スペースで区切って、彼らは両方の質問への答えです。

データ範囲\(\&\)レビュー限度

各テストポイント(\ \ 1000; \ MS TEXTRM {} \)、\ (1 \; \ TEXTRMジブ} {\)

以下のための\(100 \%\)データ、\(1 \ルT \ル500 \)、\ (0 \ルX、Y \ル30 \)

分析

与えられた二つのサブトピックを指摘しました。私たちは分けて考えます。

少なくとも、勝つために可能になりますどのように多くのボールに取得します

私たちは、極端な思考を使用しています。反対側のいずれにも進出しない場合を考えてみましょう。

だから、私たちは小さなから大規模に列挙し、出力上の勝利のポイントを見つけるかもしれません。

しかし、構造上の自分の家にあるかどうか、それは影響力があります。だから我々は、分類を考慮する必要があります。

おそらく勝つためにどのように多くのボールを反対側にまで

同じ問題の息子。唯一のターンの方向を列挙する必要があり、他の側面全体ゴールラインということを前提としています。

コード

次のコードを貼り付けます。あなたが参照したい場合は、細部に注意を払うことができます。

#include <cstdio>
using namespace std;

const int max_ball = 30;
char place[10];

int main()
{
    int n, pa, pb, ts;
    
    scanf("%d", &n);
    
    while (n--)
    {
        scanf("%*s %*s %*s %s %*s %*s %d %*s %*s %*s %d %*s", place, &pa, &pb);
        
        if (place[0] == 'h')
        {
            for (ts = 0; ts <= max_ball; ts++)
            {
                if (pa + ts < pb)
                    continue;
                if (pa + ts == pb && ts < pb)
                    continue;
                
                break;
            }
            printf("%d ", ts);
            
            for (ts = max_ball; ts >= 0; ts--)
            {
                if (pa + ts > pb + max_ball)
                    continue;
                if (pa + ts == pb + max_ball && ts > pb)
                    continue;
                
                break;
            }
            
            printf("%d\n", ts);
        }
        else
        {
            for (ts = 0; ts <= max_ball; ts++)
            {
                if (pa + ts < pb)
                    continue;
                
                break;
            }
            printf("%d ", ts);
            
            for (ts = max_ball; ts >= 0; ts--)
            {
                if (pa + ts > pb + max_ball)
                    continue;
                
                break;
            }
            printf("%d\n", ts);
        }
    }
    
    return 0;
}

おすすめ

転載: www.cnblogs.com/5ab-juruo/p/solution-20200217-play.html