hdu 3833
暴力,有技巧,确定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;
}
补充:软件开发 , C++ ,