zoukankan      html  css  js  c++  java
  • 解题:POI 2009 TAB

    题面

    这也算是个套路题(算吗)?发现换来换去每行每列数的组成是不变的,那么就把每行每列拎出来哈希一下,复杂度$O(Tn^2log$ $n)$有点卡时=。=。

    然而正解似乎不需要哈希,就像这样↓

     1  for(int i=1;i<=n;i++)
     2             for(int j=1;j<=m;j++){
     3                 int xxx=read();
     4                 x[xxx+A]=i;
     5                 y[xxx+A]=j;
     6             }
     7         bool b=true;
     8         for(int i=1;i<=n;i++){
     9             for(int j=1;j<=m;j++){
    10                 a[i][j]=read();
    11                 if(x[a[i][j]+A]!=x[a[i][1]+A]||x[a[i][j]+A]==0)b=false;
    12                 if(y[a[i][j]+A]!=y[a[1][j]+A]||y[a[i][j]+A]==0)b=false;
    13             }
    14         }

    (来自洛谷题解,侵删)

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define ull unsigned long long
     5 using namespace std;
     6 const int N=1005,P=1e6;
     7 const long long bas=2332333;
     8 ull tmp[N],hsh[2][2*N];
     9 int mapp[N][N],n,m,T;
    10 int main ()
    11 {
    12     register int i,j,k;
    13     scanf("%d",&T);
    14     while(T--)
    15     {
    16         scanf("%d%d",&n,&m);
    17         memset(hsh,0,sizeof hsh);
    18         for(k=0;k<=1;k++)
    19         {
    20             for(i=1;i<=n;i++)
    21                 for(j=1;j<=m;j++)
    22                     scanf("%d",&mapp[i][j]),mapp[i][j]+=P;
    23             for(i=1;i<=n;i++)    
    24             {
    25                 for(j=1;j<=m;j++)
    26                     tmp[j]=mapp[i][j];
    27                 sort(tmp+1,tmp+1+m);
    28                 for(j=1;j<=m;j++)
    29                     hsh[k][i]=hsh[k][i]*bas+tmp[j];
    30             }
    31             for(i=1;i<=m;i++)
    32             {
    33                 for(j=1;j<=n;j++)
    34                     tmp[j]=mapp[j][i];
    35                 sort(tmp+1,tmp+1+n);
    36                 for(j=1;j<=n;j++)
    37                     hsh[k][i+n]=hsh[k][i+n]*bas+tmp[j];
    38             }
    39         }
    40         sort(hsh[0]+1,hsh[0]+1+n+m);    
    41         sort(hsh[1]+1,hsh[1]+1+n+m);
    42         bool f=true;    
    43         for(i=1;i<=n+m&&f;i++)
    44             if(hsh[0][i]!=hsh[1][i]) f=false;
    45         f?printf("TAK
    "):printf("NIE
    "); 
    46     }
    47     return 0;
    48 } 
    View Code
  • 相关阅读:
    Qt 学习之路 2(51):布尔表达式树模型
    Qt 学习之路 2(50):自定义可编辑模型
    Qt 学习之路 2(49):自定义只读模型
    Qt 学习之路 2(48):QSortFilterProxyModel
    spring boot 定时任务
    mybatis 操作总结
    MySQL 中常用的函数
    Maven dependencies 与 dependencyManagement 区别
    springboot 校验机制 @Validated @Valid
    Fork JOIN 分而治之
  • 原文地址:https://www.cnblogs.com/ydnhaha/p/9925977.html
Copyright © 2011-2022 走看看