• hdu-3833 YY's new problem(数组标记)


    http://acm.hdu.edu.cn/showproblem.php?pid=3833

    做这题时是因为我在网上找杭电的数论题然后看到说这道题是数论题就点开看了以下。

    然后去杭电上做,暴力,超时了,想了半天还是没啥好办法,到底哪要用到数论的知识呢,想不出还得去搜题解,脑子笨啊。

    然后说用hash再报暴力,没看人家代码,然后就顺着这思路写,我写的是当前是a[i];然后j从1到i-1,用2*a[i]-a[j]的另一个数并且这个数的范围为1到N;而且在1到i-1中没出现过

    那么必定在i的右侧,这个可以用hash数组记录一下,在1到i出现的a[i]都标记为1;也就是hash[a[i]]=1;

    那么如过相减所得的数在a[i]的后面那么hash[2*a[i]-a[j]]==0;那么只要这个成立就可跳出,那么就有解。

    哈哈,超时了这个复杂度基本上还是(n*n);

    后来看了一下别人的代码,我觉得复杂程度还是没降,可为啥就过了?

    希望知道的能指导下;

     1 #include<stdio.h>
     2 #include<algorithm>
     3 #include<iostream>
     4 #include<stdlib.h>
     5 #include<string.h>
     6 #include<math.h>
     7 const int N=10005;
     8 using namespace std;
     9 int flag[N];//hash数组
    10 int a[N];
    11 int main(void)
    12 {
    13     int i,j,k,p,q,pp;
    14     scanf("%d",&k);
    15     while(k--)
    16     {
    17         memset(flag,0,sizeof(flag));
    18         pp=0;
    19         scanf("%d",&p);
    20 
    21         for(i=1; i<=p; i++)
    22         {
    23             scanf("%d",&a[i]);
    24             if(pp)
    25             {
    26                 continue;
    27             }
    28             flag[a[i]]=1;
    29             if(i>=2)
    30             {
    31                 for(j=1; j<a[i]&&a[i]+j<=p; j++)
    32                 {
    33 
    34                     if(flag[j+a[i]]+flag[a[i]-j]==1)//找关于a[i]对称的也就是与a[i]的间距的数时否在a[i]的两端.
    35                     {
    36                         pp=1;
    37                         break;
    38                     }
    39                 }
    40             }
    41 
    42         }//我认为上面的复杂度为(p+2)*p/4;我认为基本上还是p*p的,如过知道咋分析的教我一下
    43         if(pp)
    44         {
    45             printf("Y
    ");
    46         }
    47         else printf("N
    ");
    48 
    49     }
    50     return 0;
    51 }
    油!油!you@
  • 相关阅读:
    NanUI文档
    NanUI文档
    NanUI文档
    开源组件NanUI一周年
    NanUI文档
    NanUI 0.4.4发布
    【开源】做了一个WinForm窗体的投影组件,能够为窗口添加影子效果
    NanUI for Winform 使用示例【第二集】——做一个所见即所得的Markdown编辑器
    NanUI for Winform 使用示例【第一集】——山寨个代码编辑器
    非常简洁简单的tcp socket库 XKSocket
  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/4932027.html
Copyright © 2020-2023  润新知