zoukankan      html  css  js  c++  java
  • PKU 4334 Trouble(哈希)

    原题链接

    思路:哈希存入相反数

    注意:HDU不支持long long要使用__int64

    #include<cstdio>
    #include<cstring> 
    #define mod 401704//开到所有数据十倍大左右
    using namespace std;
    
    bool flag[mod];
    __int64 m[5][210],hash[mod];
    int judge(__int64 x)
    {
        int s=x%mod;
        if(s<0) s+=mod;//将负数转正 
      /*while(x<0) x+=mod;
        int s=x%mod;  TLE*/
        while(flag[s]&&hash[s]!=x)
            s=(s+1)%mod;//线性探测再散列 
        return s;
    }//返回哈希地址 
    
    int main()
    {
        int T,n;
        scanf("%d",&T);
        while(T--){
            scanf("%d",&n);
            memset(flag,0,sizeof(flag));
            for(int i=0;i<5;i++)
                for(int j=0;j<n;j++)
                   scanf("%I64d",&m[i][j]);
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    __int64 sum=-(m[0][i]+m[1][j]);
                    int t=judge(sum);
                    flag[t]=1;
                    hash[t]=sum;
                }
            }
            bool sign=false;
            for(int i=0;i<n&&!sign;i++){
                   for(int j=0;j<n&&!sign;j++){
                      for(int k=0;k<n&&!sign;k++){
                          __int64 sum=m[2][i]+m[3][j]+m[4][k];
                          int t=judge(sum);
                          if(flag[t]) sign=true; 
                      }
                  }
              }
            if(sign) printf("Yes
    ");
            else printf("No
    ");
        }
        return 0;
    }
  • 相关阅读:
    枚举8项素数和环
    登录过滤器
    线程调度
    回溯素数环
    centos 6.5 samba简单配置
    区间k大数查询
    Centos安装arm-linux-gcc等交叉工具链
    centos7安装tftp服务器
    八皇后问题
    输出1——n的排列(深度优先搜索)
  • 原文地址:https://www.cnblogs.com/freinds/p/6414479.html
Copyright © 2011-2022 走看看