PTA乙級1089,狼人殺簡單版

2021-09-25 20:41:50 字數 745 閱讀 4648

分析:其實如果讀懂題,梳理好條件也不是很難。題目意思n個人中有兩人是狼人,說謊有兩人,其中一人是好人,一人是狼人。對於第乙個用例,即可判斷出說謊者是1號和5號,狼人是1號和4號。

首先我們用乙個vector儲存所有輸入資料;

再用兩重迴圈遍歷一遍,假設 i 和 j 是狼人,那麼在第二重迴圈下,再使用乙個vector標記一下當前兩人是狼人,這個vector初始化值全為1,a[i] = a[j] = -1 表示這兩人是狼人,其餘人是好人;

再申請乙個vector用於儲存說謊者的編號;

下面就需要知道如何判斷說謊者的條件:

自己說abs[v[k]]號是狼人(v[k]<0),然而別人並不是狼人(a[abs(v[k])] == 1)

自己說abs[v[k]]號不是狼人(v[k]>0),然而別人是狼人(a[abs(v[k])] = = -1)

即:v[k]*a[abs(v[k])] < 0

只要指定判斷說謊者的條件,即兩個說謊者且其中乙個為狼人(lie.size()==2&&a[lie[0]]+a[lie[1]]==0),滿足此條件輸出即可。由於遍歷的順序是從1~n,自然會滿足最小序列的要求。滿足條件輸出此時的 i,j,如果都不滿足,輸出 no solution。

#include

using namespace std;

intmain()

}}cout<<

"no solution"

;return0;

}

PTA乙級 1089 狼人殺 簡單版 20 分

1089 狼人殺 簡單版 20 分 以下文字摘自 靈機一動 好玩的數學 狼人殺 遊戲分為狼人 好人兩大陣營。在一局 狼人殺 遊戲中,1 號玩家說 2 號是狼人 2 號玩家說 3 號是好人 3 號玩家說 4 號是狼人 4 號玩家說 5 號是好人 5 號玩家說 4 號是好人 已知這 5 名玩家中有 2 ...

PTA 1089 狼人殺 簡單版

以下文字摘自 靈機一動 好玩的數學 狼人殺 遊戲分為狼人 好人兩大陣營。在一局 狼人殺 遊戲中,1 號玩家說 2 號是狼人 2 號玩家說 3 號是好人 3 號玩家說 4 號是狼人 4 號玩家說 5 號是好人 5 號玩家說 4 號是好人 已知這 5 名玩家中有 2 人扮演狼人角色,有 2 人說的不是實...

PAT乙級 1089 狼人殺 簡單版

以下文字摘自 靈機一動 好玩的數學 狼人殺 遊戲分為狼人 好人兩大陣營。在一局 狼人殺 遊戲中,1 號玩家說 2 號是狼人 2 號玩家說 3 號是好人 3 號玩家說 4 號是狼人 4 號玩家說 5 號是好人 5 號玩家說 4 號是好人 已知這 5 名玩家中有 2 人扮演狼人角色,有 2 人說的不是實...