社区讨论
代码求调QAQ
P1039[NOIP 2003 提高组] 侦探推理参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo7xyjmx
- 此快照首次捕获于
- 2023/10/27 09:35 2 年前
- 此快照最后确认于
- 2023/10/27 09:35 2 年前
rt
CPP#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
string day[20]={
"114514",
"Today is Sunday",
"Today is Monday",
"Today is Tuesday",
"Today is Wednesday",
"Today is Thursday",
"Today is Friday",
"Today is Saturday"
};
string say[1000];
string name[1000];
int w[1500];
int vis[2000];
int n,m,p;
string ans;
int main(){
cin>>m>>n>>p;
for(int i=1;i<=m;i++){
cin>>name[i];
}
for(int i=1;i<=p;i++){
string names;
cin>>names;
names.erase(names.end()-1);
for(int j=1;j<=m;j++)
if(name[j]==names)
w[i]=j;
getline(cin,say[i]);
say[i].erase(say[i].begin());
// say[i].erase(say[i].end()-1);
}
for(int td=1;td<=7;td++){
for(int zf=1;zf<=m;zf++){
memset(vis,0,sizeof vis);
int err=0;
cout<<endl;
for(int i=1;i<=p;i++){
int who=w[i];
if(say[i]=="I am guilty."){
int temp=vis[who];
vis[who]=(zf==who)?1:-1;
if(temp+vis[who]==0)err=1;
// cout<<1514534523452345<<endl;
}
if(say[i]=="I am not guilty."){
int temp=vis[who];
vis[who]=(zf!=who)?1:-1;
if(temp+vis[who]==0)err=1;
// cout<<54234532452;
}
for(int j=1;j<=7;j++){
if(say[i]==day[j]){
int temp=vis[who];
vis[who]=(j==td)?1:-1;
if(vis[who]+temp==0)err=1;
// cout<<26345634563456346<<endl;
}
}
for(int j=1;j<=m;j++){
if(say[i]==name[j]+" is guilty."){
int temp=vis[who];
vis[who]=(zf==j)?1:-1;
if(temp+vis[who]==0)err=1;
// cout<<54234532452<<endl;
}
if(say[i]==name[j]+" is not guilty."){
int temp=vis[who];
vis[who]=(zf!=j)?1:-1;
if(temp+(vis[who])==0)err=1;
// cout<<54234532452;
}
}
if(err)continue;
int cnt=0,unsure=0;
for(int i=1;i<=m;i++)
if(~vis[i])cnt++;
else if(!vis[i])unsure++;
if(cnt+unsure>=n && n>=cnt && ans.size()){
cout<<"Cannot Determine";
exit(0);
}
else if(cnt+unsure>=n && cnt<=n){
ans=name[who];
}
cout<<ans<<endl;
}
// cout<<td<<" "<<zf<<" "<<ans<<endl;
}
}
if(ans.size())
cout<<ans;
else cout<<"Impossible";
}
这里我判断是否又说真话又说假话是看 vis + usedvis 是否为 0
基本思路和题解1是一样的QAQ但是为啥不对啊(样例都没
回复
共 1 条回复,欢迎继续交流。
正在加载回复...