其他分享
首页 > 其他分享> > P8467 [Aya Round 1 B] 甲(one)

P8467 [Aya Round 1 B] 甲(one)

作者:互联网

甲(one)

题目描述

定义长度为 \(5\) 的序列 \(S\) 为「好的」,当且仅当存在长度为 \(5\) 的排列 \(P\),满足 \(S_{P_1}-1=S_{P_2}=S_{P_3}+1\) 且 \(S_{P_4}=S_{P_5}\)。现有一长度为 \(5\) 的整数序列 \(a\),满足 \(0\le a_i \le 9(1\le i \le 5)\)。其中 \(a_1 \sim a_4\) 给定。试判断是否存在 \(a_5\) 满足 \(a\) 为「好的」。

其中,长度为 \(5\) 的排列 \(P\),指的是一个长度为 \(5\) 的数列,其中 \(1,2,3,4,5\) 在这个数列中出现且只出现一次。

输入格式

本题含有多组数据。

输出格式

样例 #1

样例输入 #1

5
3 2 8 4
1 2 3 4
1 9 4 9
1 0 0 1
0 0 4 2

样例输出 #1

1
1
0
0
1

提示

附加样例

样例解释

样例 #1

数据范围

\[\def\arraystretch{1.5} \begin{array}{|c|c|c|} \hline \textbf{\text{测试点}} & \bm{{T\le}} & \textbf{\text{特殊性质}} \cr\hline 1 & 100 & \textbf{A} \cr\hline 2 & 100 & \textbf{B} \cr\hline 3 & 100 & - \cr\hline 4 & 1000 & - \cr\hline 5 & 10^5 & - \cr\hline \end{array} \]

对于 \(100\%\) 的数据,\(1\le T\le 10^5\),\(0\le a_i \le 9\)。

思路

首先读入四个数字,记录每一个数字的出现次数。

若某个数字重复出现则满足 $ S_{P_4} = S_{P_5} $ 的条件,标记 $ flag=1 $ ,并将这个数字出现的次数清零。

$ code $

#include<bits/stdc++.h>
using namespace std;
namespace Solve
{
    inline int read()
	{
		int x=0,f=1;
		char ch=getchar();
		while(!isdigit(ch))
		{
			if(ch=='-')f=-f;
			ch=getchar();
		}
		while(isdigit(ch))
		{
			x=(x<<3)+(x<<1)+ch-'0';
			ch=getchar();
		}
		return x*f;
	}
    map < int , int > mp;
    int T;
    int a[6];
    void work()
    {
        cin>>T;
        while(T--)
        {
            mp.clear();
            int flag=0,ans;
            for(int i=1; i<=4; i++)
            {
                cin>>a[i];
                mp[a[i]]++;
                if(mp[a[i]]==2)
                {
                    flag=1;
                    mp[a[i]]=0;
                }
            }
            if(flag==1)
            {
                for(int i=1; i<9; i++)
                {
                    if(mp[i-1]+mp[i]+mp[i+1]==2)
                    {
                        flag=2;
                        cout<<1<<endl;
                        break;
                    }
                }
                if(flag==1)cout<<0<<endl;
            }
            else
            {
                sort(a+1,a+4+1);
                if(a[1]+1==a[2]&&a[2]==a[3]-1)
                {
                    cout<<1<<endl;
                }
                else
                if(a[2]+1==a[3]&&a[3]==a[4]-1)
                {
                    cout<<1<<endl;
                }
                else cout<<0<<endl;
            }
            
        }
    }
}
int main()
{
    Solve::work();
}

标签:le,P8467,int,样例,Aya,flag,hline,cr,Round
来源: https://www.cnblogs.com/dadidididi/p/16559925.html