只有一句没问题吧······
by UnyieldingTrilobite @ 2020-03-10 12:24:01
@[_26535_](/user/203623)
这个数据应该是2人都说谎,那HELLO说不guilty就是guilty了咯
by UnyieldingTrilobite @ 2020-03-10 12:24:38
@[return20071007](/user/250637) 不是说“证词中出现的其他话,都不列入逻辑推理的内容。”,那只有一句“HELLO: I am not guilty.”是有效的,最多也只有一句谎话,那也无法满足有2个人说慌这个条件呀
by critnos @ 2020-03-10 12:28:35
窝就谔谔,你没听懂吧
by UnyieldingTrilobite @ 2020-03-10 12:31:03
@[return20071007](/user/250637) 您的意思是,不说话的人可以当作说真/假话的?
by critnos @ 2020-03-10 12:49:42
@[_26535_](/user/203623)
是吧,反正不说话
by UnyieldingTrilobite @ 2020-03-10 12:50:38
@[return20071007](/user/250637) 很玄学,在本地和IDE都过了这个点,但是测评就过不了,您能帮我康康吗
```cpp
#include<bits/stdc++.h>
using namespace std;
map<string,int> a,b;
vector<int> zfl[105],rq[105],tr[105];
string zuifanlist[25];
int main()
{
b["Monday."]=1;
b["Tuesday."]=2;
b["Wednesday."]=3;
b["Thursday."]=4;
b["Friday."]=5;
b["Saturday."]=6;
b["Sunday."]=7;
string fname,mz,hua,hua2;
int i,n,m,p,j,w,w2,fl,k,l,no,thi,sum,zuifan=0,summ;
cin>>m>>n>>p;
for(i=1;i<=m;i++)
{
cin>>zuifanlist[i];
a[zuifanlist[i]]=i;
}
for(i=0;i<p;i++)
{
cin>>fname>>mz;
fname.erase(fname.end()-1);
w=a[fname],w2=a[mz];
if(mz=="Today")
{
cin>>hua>>mz;
hua2="";
getline(cin,hua2);
w2=b[mz];
if(hua=="is"&&hua2==""&&w2&&w)
rq[w].push_back(w2);
continue;
}
getline(cin,hua);
if(w==0) continue;
if(mz=="I"&&hua==" am guilty.")
tr[w].push_back(1),zfl[w].push_back(w);
else if(mz=="I"&&hua==" am not guilty.")
tr[w].push_back(0),zfl[w].push_back(w);
else
{
if(w2==0) continue;
if(hua==" is guilty.")
tr[w].push_back(1),zfl[w].push_back(w2);
if(hua==" is not guilty.")
tr[w].push_back(0),zfl[w].push_back(w2);
}
}
// for(i=1;i<=m;i++)
// {
// for(j=0;j<rq[i].size();j++) cout<<rq[i][j]<<' ';
// cout<<'\\';
// for(j=0;j<zfl[i].size();j++) cout<<zfl[i][j]<<' ';
// cout<<endl;
// }
for(i=1;i<=7;i++)
{
for(j=1;j<=m;j++)
{
summ=sum=no=0;
for(k=1;k<=m;k++)
{
fl=-1;
for(l=0;l<rq[k].size();l++)
{
thi=rq[k][l]==i;
if(fl!=thi&&fl!=-1)
{
no=1;
break;
}
fl=thi;
}
if(no) break;
for(l=0;l<zfl[k].size();l++)
{
if(tr[k][l])
thi=zfl[k][l]==j;
else
thi=zfl[k][l]!=j;
if(fl!=thi&&fl!=-1)
{
no=1;
break;
}
fl=thi;
}
if(no) break;
if(fl==0) sum++;
if(fl==-1) summ++;
}
if(no==0&&sum<=n&&sum+summ>=n)
{
if(zuifan&&zuifan!=j)
{
cout<<"Cannot Determine";
return 0;
}
zuifan=j;
}
}
}
if(zuifan) cout<<zuifanlist[zuifan];
else cout<<"Impossible";
}
//2 2 4
//HELLO
//GUILTY
//HELLO: What is your name?
//GUILTY: I am GUILTY.
//GUILTY: Are you guilty?
//HELLO: I am not guilty.
```
by critnos @ 2020-03-10 13:33:17
@[return20071007](/user/250637) 谢谢,A了!
by critnos @ 2020-03-10 13:56:04