【HDU 6045】デレクは嘘をついていますか?

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/u011544909/article/details/80073874

トピック説明:
デレクとAlfiaは、中国の人々 .Derek、Alfiaオーストリアの良い友人です。この夏、彼らは大学ドルトムントのサマーキャンプに参加してきました。キャンプ中は、いくつかのテストがあるでしょう。試験後の各質問に対するNの選択を含む三つの「A」オプション「B」と「C」とマークされています、。各質問には、各質問に対する唯一の正解は1ポイントの価値があるしています。これは、この質問に対するあなたの答えは右のであれば、あなたは1ポイントを得ることができることを意味します。人の合計スコアは、すべての問題の合計です。テストのときに終わり、コンピュータは、彼とAlfiaのスコアというデレクを教えてくれます。デレクは、Alfiaが彼女に尋ねると、彼の総得点が彼女を教えてくれます:「私のスコアはXである、あなたのスコアがYである」しかし、デレクは時々彼が彼女に嘘をつくかもしれない、遊び心あります。ここで行われ、あなたのデレクとAlfiaに答えるために、あなたはデレクが横たわっているかどうかを判断する必要があります。あなたはデレクが言った合計スコアを満たすために、標準的な答えを持っている場合、あなたは彼が横たわっていた、または彼が嘘をついていると思うことはできません。

入力:
整数Tからなる最初の行は、テストケースの数を表します。

各テストケースのために、三行が存在するであろう。

上記のように最初の行は三つの整数N、X、Y、その意味を含んでいます。

文字の2行目NNは、各文字が「A」「B」または「C」は、デレクは、それぞれの質問に対する答えを示しています。

3行目は第二の行と同じ、NNの文字からなり、それはAlfia各質問に答える表します。

データ範囲:合計1≤N≤80000,1≤N≤80000,0≤Xは、Y≤Nは、Nは30万人以上ではありません

出力:
各テストケースの場合、出力一行。

あなたはデレクが嘘をついていることを確認している場合、出力はそうでない場合、出力は「嘘はない」、「横たわる」してください。


質問の意味:

今の質問に答えるために2人が、一つだけが正しいABCの3つのオプションは、正しい答えはポイントを得る、間違った答えノーポイントは、これら2つの合理的な結果かどうかを判断するために2つのスコアと答えを与えられていません。

たとえば、5つの質問の合計は、2つのスコアは、二人の答えは不合理同じ、そして表現ではない、その後、第五です。

アイデア:

いいえスキルは、そのトピックを推論しません。ライン上の限り合理的な推論の多くの方法があります。

思想:人の同じ番号を持つ2つのレコードを解答し、2人が同じ番号とタイトルに加えて2つのスコアの合計数に等しい未満の得点場合は、同じ番号を引く話題の総数に等しい未満である場合、うそはなかったです。

二つの異なるグレードの人々と以下の数と同じ数の二倍と2つのスコアは、その後、別の回答数に等しい未満であれば、同じ答えと質問の数が異なる二つのレコード:2を考えます私はうそはなかった
  ***

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int t,a,b,n;
    string s1,s2;
    cin>>t;
    while(t--)
    {
        int cnt=0;
        cin>>n>>a>>b;
        cin>>s1>>s2;
        int temp=abs(a-b);
        for(int i=0;i<n;i++)
        {
            if(s1[i]==s2[i])
                cnt++;
        }
        if(cnt+n>=a+b&&temp<=(n-cnt))
            cout<<"Not lying"<<endl;
        else
            cout<<"Lying"<<endl;
    }

    return 0;
}

おすすめ

転載: blog.csdn.net/u011544909/article/details/80073874