zoukankan      html  css  js  c++  java
  • 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@
  • 相关阅读:
    倍增
    「BZOJ 2152」聪聪可可
    「POJ 1741」Tree
    点分治
    高斯消元
    网络流24题之餐巾计划问题
    网络流24题之骑士共存问题
    网络流24题之方格取数问题
    网络流24题之负载平衡问题
    网络流24题之分配问题
  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/4932027.html
Copyright © 2011-2022 走看看