专栏文章

题解:P13915 [PO Final 2024] 鬼抓人 / Tag

P13915题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio1eke6
此快照首次捕获于
2025/12/02 11:47
3 个月前
此快照最后确认于
2025/12/02 11:47
3 个月前
查看原文
用一个 map 映射来维护每个人是否知道自己是猎人,无论他是不是被作弊者抓到的。
ansans 数组记录所有作弊者。

先输入。 然后把游戏开始时指定的猎人在映射中标记上。

每输入一个碰人事件:
  • 判断这个人是否在数组中被标记,如果没有,把这个名字加入到 ansans 里。
  • 如果有,解除这个标记,因为他已经把猎人的身份传递出去了。
  • 不管是不是,最后都要把被碰的那个人标记上,他是不知情的。

然后把 ansans 数组排序,去重,输出。

code

CPP
#include <bits/stdc++.h>
using namespace std;
map<string,bool> a;
string name[100010];
string ans[100010];
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>name[i];
	}
	a[name[0]]=1;
	int sum=0;
	for(int i=0;i<m;i++){
		string s1,s2,s3;
		cin>>s1>>s2>>s3;
		if(a[s1]==0){
			ans[sum++]=s1;
		}
		else{
			a[s1]=0;
		}
		a[s3]=1;
	}
	sort(ans,ans+sum);
	sum=unique(ans,ans+sum)-ans;
	cout<<sum<<endl;
	for(int i=0;i<sum;i++){
		cout<<ans[i]<<" ";
	}
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...