zoukankan      html  css  js  c++  java
  • 题解 CF94B 【Friends】

    \[\texttt{题目大意} \]

    \(\quad\)题目的意思是如果 \(5\) 人有 \(3\) 个人都认识或都不认识则证明这个定理就是一个渣渣,伊戈尔·凯赢("WIN"),不存在即证明他输了("FAIL")

    \[\texttt{思路} \]

    \(\quad\)一开始以为是并查集,结果发现 \(m<=10\)\(a_i<=5\)\(b_i<=5\),暴力枚举即可,那么这题也估计就红题的难度,时间复杂度 \(O(5^3)\)

    \(\quad\)\(a_{i,j}=1\) 表示 \(i\)\(j\) 互相认识,从这五个人中枚举三个人 \((i,j,k)\) 判断这三人都认识或都不认识即可。

    if((a[i][j]&&a[i][k]&&a[j][k])||(!a[i][j]&&!a[i][k]&&!a[j][k]))flag=1;//核心代码
    

    \(\quad\)\(flag\) 来判断,为 \(1\) 表示存在即输出 "WIN",否则为 \(0\) 输出 "FAIL"。

    \(\quad\)Code

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define re register int
    using namespace std;
    int read()
    {
      int x=0,f=1;char ch=getchar();
      while(!isdigit(ch)&&ch!='-')ch=getchar();
      if(ch=='-')f=-1,ch=getchar();
      while(isdigit(ch))x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
      return x*f;
    }
    int n,a[6][6],flag;
    signed main()
    {
    	n=read();
    	for(re i=1,x,y;i<=n;i++)x=read(),y=read(),a[x][y]=a[y][x]=1;
    	for(re i=1;i<=3;i++)  //注意i,j,k不重复
    	{
        for(re j=i+1;j<=4;j++)
    		{
          for(re k=j+1;k<=5;k++)
    			if((a[i][j]&&a[i][k]&&a[j][k])||(!a[i][j]&&!a[i][k]&&!a[j][k]))
    			flag=1;//核心代码,标记
    		}
    	}	
    	if(flag)puts("WIN");else puts("FAIL");
    	return 0;
    }
    

    希望能过

  • 相关阅读:
    蓝桥杯--2012--奇怪的比赛(全排列)
    mysql数据库读写分离教程
    Linux中安装java JDK
    mysql数据库主从复制教程
    mysql数据库安装教程
    http报文详解
    查看磁盘I/O命令iostat详解
    linux如何查看服务器当前的并发访问量
    Another app is currently holding the yum lock; waiting for it to exit...
    linux清理缓存cache
  • 原文地址:https://www.cnblogs.com/FarkasW/p/15463158.html
Copyright © 2011-2022 走看看