zoukankan      html  css  js  c++  java
  • 2012 MultiUniversity Training Contest 4 D Trouble

    hash

     1 # include <stdio.h>
     2 # include <string.h>
     3 
     4 # define N 205
     5 # define M 100007
     6 
     7 typedef long long int LL;
     8 
     9 int n;
    10 LL a[6][N];
    11 int head[M], next[N*N+N];
    12 
    13 int hash(LL x)
    14 {
    15                 return ((x%M)+M)%M;
    16 }
    17 
    18 void init_hash_table(void)
    19 {
    20                 memset(head, -1, sizeof(head));
    21 }
    22 
    23 void insert_hash_table(LL num, int i)
    24 {
    25                 int hkey = hash(num);
    26                 /*
    27                 int u = head[hkey];
    28                 while (~u)
    29                 {
    30                                 if (a[u/n][4]+a[u%n][5]==num) return ;
    31                                 u = next[u];
    32                 }*/
    33                 next[i] = head[hkey];
    34                 head[hkey] = i;
    35 }
    36 
    37 int lookup_hash_table(LL num)
    38 {
    39                 int hkey = hash(num);
    40                 int u = head[hkey];
    41                 while (~u)
    42                 {
    43                                 if (a[4][u/n]+a[5][u%n] == num) return 1;
    44                                 u = next[u];
    45                 }
    46                 return 0;
    47 }
    48 
    49 int solve(void)
    50 {
    51                 int i, j, k, nn = 0;
    52                 init_hash_table();
    53                 for (i = 0; i < n; ++i)
    54                 for (j = 0; j < n; ++j)
    55                 {
    56                                 insert_hash_table(a[4][i]+a[5][j], i*n+j) ;
    57                 }
    58                 for (i = 0; i < n; ++i)
    59                 for (j = 0; j < n; ++j)
    60                 for (k = 0; k < n; ++k)
    61                 {
    62                                 if (lookup_hash_table(-a[1][i]-a[2][j]-a[3][k]))
    63                                                 return 1;
    64                 }
    65                 return 0;
    66 }
    67 
    68 int main()
    69 {
    70                 freopen("in.txt", "r", stdin);
    71 
    72                 int T, i, j, k;
    73 
    74                 scanf("%d", &T);
    75                 for (i = 1; i <= T; ++i)
    76                 {
    77                                 scanf("%d", &n);
    78                                 for (j = 1; j <= 5; ++j)
    79                                 for (k = 0; k < n; ++k)
    80                                                 scanf("%I64d", &a[j][k]);
    81                                 if (solve())
    82                                                 puts("Yes");
    83                                 else
    84                                                 puts("No");
    85                 }
    86 
    87                 return 0;
    88 }
  • 相关阅读:
    如何打开肉鸡的3389端口(xp的)
    XP鲜为人知的实用技巧(一)
    利用Ms08067工具进行溢出攻击
    教你建一个别人看不到打不开的文件夹
    在IE上显示自己的名字
    QQ使用的七大非常规秘籍
    第五篇:Python函数基础篇
    Centos7之Systemd(Service文件)详解
    Linux GCC make文件的写法3
    DSP/BIOS学习笔记——2.SWI
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2656253.html
Copyright © 2011-2022 走看看