hdu3833(暴力)
YY's new problem
Time Limit: 12000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 5384 Accepted Submission(s): 1508
Problem Description
Given a permutation P of 1 to N, YY wants to know whether there exists such three elements P[i1], P[i2], P[i3] that
P[i1]-P[i2]=P[i2]-P[i3], 1<=i1<i2<i3<=N.
P[i1]-P[i2]=P[i2]-P[i3], 1<=i1<i2<i3<=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.
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 i1, i2, i3 can be found, else 'N'.
Sample Input
2 3 1 3 2 4 3 2 4 1
Sample Output
N Y
暴力要有方法。。。。。
#include <iostream> #include <stdio.h> #include <stdlib.h> #include<string.h> #include<algorithm> #include<math.h> #include<queue> using namespace std; typedef long long ll; /*const int M=200000; int ip; int head[M],cd[M],rd[M]; struct data { int v,next; }tu[M]; void init(int n) { memset(head,-1,sizeof(head)); memset(rd,0,sizeof(rd)); memset(cd,0,sizeof(cd)); ip=0; } void add(int u,int v) { tu[ip].v=v,tu[ip].next=head[u],head[u]=ip++; } */ int zb[10010],a[10010]; int main() { int t; cin>>t; while(t--) { int n; cin>>n; for(int i=0; i<n; i++) {scanf("%d",&a[i]);zb[a[i]]=i;} int flag=0; for(int i=0; i<n; i++) { for(int j=i+1; j<n; j++) { if((a[i]+a[j])%2==0) { if(zb[(a[i]+a[j])/2]>i&&zb[(a[i]+a[j])/2]<j) { flag=1; break; } } } if(flag)break; } if(flag)printf("Y\n"); else printf("N\n"); } return 0; }
持续更新博客地址:
blog.csdn.net/martinue