程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu 3833

hdu 3833

編輯:C++入門知識

暴力,有技巧,確定a[i2]的值,先從0~i2找a[i1]的值來計算a[i3]的值,當i2>n/2時,從i2~n-1找a[i3]的值來計算a[i1]的值

 

[cpp]
#include<stdio.h>  
int hash[10010],a[10010]; 
int main() 

    int i,j,n,t,k,flag; 
    scanf("%d",&t); 
    while(t--) 
    { 
        flag=0; 
        scanf("%d",&n); 
        for(i=0;i<n;i++) 
        { 
            scanf("%d",&a[i]); 
            hash[a[i]]=i; 
        } 
        for(i=1;i<n/2;i++) 
        { 
            for(j=0;j<i;j++) 
            { 
                k=2*a[i]-a[j]; 
                if(k<=0||k>n)continue; 
                if(hash[k]>i) 
                {flag=1;break;} 
            } 
            if(flag==1)break; 
        } 
        for(i;i<n-1;i++) 
        { 
            for(j=i+1;j<n;j++) 
            { 
                 k=2*a[i]-a[j]; 
                 if(k<=0||k>n)continue; 
                if(hash[k]<i) 
                {flag=1;break;} 
            } 
            if(flag==1)break; 
        } 
        if(flag==1) 
            puts("Y"); 
        else puts("N"); 
    } 
    return 0; 

#include<stdio.h>
int hash[10010],a[10010];
int main()
{
 int i,j,n,t,k,flag;
 scanf("%d",&t);
 while(t--)
 {
  flag=0;
  scanf("%d",&n);
  for(i=0;i<n;i++)
  {
   scanf("%d",&a[i]);
   hash[a[i]]=i;
  }
  for(i=1;i<n/2;i++)
  {
   for(j=0;j<i;j++)
   {
    k=2*a[i]-a[j];
    if(k<=0||k>n)continue;
    if(hash[k]>i)
    {flag=1;break;}
   }
   if(flag==1)break;
  }
  for(i;i<n-1;i++)
  {
   for(j=i+1;j<n;j++)
   {
     k=2*a[i]-a[j];
     if(k<=0||k>n)continue;
    if(hash[k]<i)
    {flag=1;break;}
   }
   if(flag==1)break;
  }
  if(flag==1)
   puts("Y");
  else puts("N");
 }
 return 0;
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved