H

来源:互联网 发布:软件测试四个阶段 编辑:程序博客网 时间:2024/04/25 21:23
Submit
 
Status
 
Practice
 
HDU 3833
Description
Given a permutation P of 1 to N, YY wants to know whether there exists such three elements P[i 1], P[i 2], P[i 3] that 
P[i 1]-P[i 2]=P[i 2]-P[i 3], 1<=i 1<i 2<i 3<=N.
 
Input
The first line is T(T<=60), representing the total test cases. 
Each test case comes two lines, the former one is N, 3<=N<=10000, the latter is a permutation of 1 to N.
 
Output
For each test case, just output 'Y' if such i 1, i 2, i 3 can be found, else 'N'.
 
Sample Input
 2
3
1 3 2
4
3 2 4 1 
 
Sample Output
 N


题意:要找出满足条件p1-p2=p2-p3的数,如果有 就输出YES 否则NO。


PS:首先由题p2=(p1+p3)/2;p1+p3必为偶数;


#include <stdio.h>#include <string.h>int a[55555],hash[55555];int main(){    int i,j,n,t,sum;    scanf("%d",&t);    while(t--)    {        int flag=0;        memset(hash,0,sizeof(hash));        scanf("%d",&n);        for(i=0;i<n;i++)        {            scanf("%d",&a[i]);            hash[a[i]]=i;//用下标来重新标记输入过的数        }        for(i=0;i<n-1;i++)            for(j=i+2;j<n;j++)        {            sum=a[i]+a[j];            if(sum%2!=0)     //如果是奇数直接continue;                continue;            else            {                if(hash[sum/2]>i&&hash[sum/2]<j)                {                    flag=1;                    break;                }            }        }        if(flag==1)            printf("Y\n");        else            printf("N\n");    }}


 
0 0
原创粉丝点击