蒟蒻求助
查看原帖
蒟蒻求助
760841
laozhang1210楼主2025/1/22 09:27

调不过啊,自己搓了好几个样例都过了,但是交上去就是20分

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int night_time,player_number,m,ma[4][30];
int players[30];
bool flag,witch_use[30][4];//0--4,5  1--4,6  2--5,7  3--6,7
bool skill[30],dying[30],died[30];
int died_number; 
int main()
{
	cin>>night_time>>player_number;
	for(int i=1;i<=player_number;i++) cin>>players[i];
	while(night_time--)
	{
		flag=false;
		cin>>m;
		for(int i=1;i<=m;i++)
		{
			cin>>ma[1][i]>>ma[2][i]>>ma[3][i];
			if(ma[2][i]>player_number||players[ma[2][i]]==2||ma[2][i]<1)
			{
				cout<<"Wrong\n";
				flag=true;
				//break;
			}
			if(ma[2][i]==ma[3][i]&&ma[1][i]!=2)
			{
				cout<<"Wrong\n";
				flag=true;
				//break;
			}
		}
		if(flag) continue;
		for(int i=1;i<=m;i++)
		{
			if(ma[1][i]==0)
			{
				if(dying[ma[2][i]]||died[ma[2][i]]||players[ma[2][i]]!=1||skill[ma[2][i]]||dying[ma[3][i]]||died[ma[3][i]]) 
				{
					cout<<"Wrong\n";
					
					flag=true;
					break;
				}
				skill[ma[2][i]]=dying[ma[3][i]]=true;
				died_number++;
			}
			else if(ma[1][i]==1)
			{
				if(players[ma[2][i]]==1||players[ma[2][i]]==2||players[ma[2][i]]==3)
				{
					cout<<"Wrong\n";
					flag=true;
					break;
				}
				if(players[ma[2][i]]==7||players[ma[2][i]]==5||dying[ma[2][i]]||died[ma[2][i]]||skill[ma[2][i]]||dying[ma[3][i]]||died[ma[3][i]])//4--1 1  5--0 1  6--1 0  7--0 0
				{
					cout<<"Wrong\n";
					flag=true;
					break;
				}
				if(players[ma[2][i]]==4)
				{
					skill[ma[2][i]]=dying[ma[3][i]]=true;
					died_number++;
					players[ma[2][i]]=5;
					witch_use[ma[2][i]][0]=true;
				}
				else if(players[ma[2][i]]==6)
				{
					skill[ma[2][i]]=dying[ma[3][i]]=true;
					died_number++;
					players[ma[2][i]]=7;
					witch_use[ma[2][i]][3]=true;
				}
			}
			else if(ma[1][i]==2)
			{
				if(players[ma[2][i]]==1||players[ma[2][i]]==2||players[ma[2][i]]==3)
				{
					cout<<"Wrong\n";
					flag=true;
					break;
				}
				if(!dying[ma[3][i]]||died[ma[3][i]]||players[ma[2][i]]==6||players[ma[2][i]]==7||skill[ma[i][2]]||died[ma[2][i]])
				{
					cout<<"Wrong\n";
					flag=true;
					break;
				}
				if(players[ma[2][i]]==4)
				{
					skill[ma[2][i]]=true;
					dying[ma[3][i]]=false;
					players[ma[2][i]]=6;
					witch_use[ma[2][i]][1]=true;
					died_number--;
				}
				else if(players[ma[2][i]]==5)
				{
					skill[ma[2][i]]=true;
					dying[ma[3][i]]=false;
					players[ma[2][i]]=7;
					witch_use[ma[2][i]][2]=true;
					died_number--;
				}
				if(ma[3][i]==3) skill[ma[3][i]]=false;
			}
			else
			{
				if(players[ma[2][i]]!=3||!dying[ma[2][i]]||died[ma[2][i]]||skill[ma[2][i]]||dying[ma[3][i]]||died[ma[3][i]])
				{
					cout<<"Wrong\n";
					flag=true;
					break;
				}
				dying[ma[3][i]]=true;
				skill[ma[2][i]]=true;
				died_number++;
			}
		}
		for(int i=1;i<=player_number;i++) 
			if(players[i]==3&&dying[i]&&!died[i]&&!skill[i])
			{
				flag=true;
				cout<<"Wrong\n";
				break;
			}
		if(flag)
		{
			died_number=0;
			for(int i=1;i<=player_number;i++)
			{
				if(skill[i]||(players[i]==5||players[i]==6||players[i]==7))
				{
					if(witch_use[i][0])
					{
						players[i]=4;
						witch_use[i][0]=false;
					}
					else if(witch_use[i][1])
					{
						players[i]=4;
						witch_use[i][1]=false;
					}
					else if(witch_use[i][2])
					{
						players[i]=5;
						witch_use[i][2]=false;
					}
					else if(witch_use[i][3])
					{
						players[i]=6;
						witch_use[i][3]=false;
					}
				}
				skill[i]=false;
				dying[i]=false;
			}
		}
		else
		{
			if(!died_number) cout<<"Safe\n";
			else
			{
				cout<<died_number<<" ";
				for(int i=1;i<=player_number;i++)
				{
					skill[i]=false;
					if(dying[i]&&!died[i])
					{
						died[i]=true;
						cout<<i<<" ";
					}
				}
				cout<<'\n';
				died_number=0;
			}
		}
	}
}

附上自己搓的样例:

输入

8 12

1 2 3 4 1 1 2 2 3 3 4 4

6

0 1 3

0 5 4

0 6 2

2 4 4

2 11 2

3 3 1

3

0 5 9

2 12 9

3 9 5

2

2 12 12

0 5 12

2

0 5 7

1 4 7

2

0 5 7

1 4 8

2

1 11 1

2 12 1

3

0 5 9

3 9 2

2 12 9

2

0 5 9

3 9 5

输出: 2 1 3

wrong

wrong

wrong

2 7 8

wrong

1 2

2 5 9

2025/1/22 09:27
加载中...