码迷,mamicode.com
首页 > 其他好文 > 详细

ZJNU 2356 - 六学家

时间:2020-01-28 23:32:53      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:pre   bit   space   复杂   pac   for   div   span   return   

“选出来三个六学家,他们的编号是i,j,k,满足i<j<k,且a[k]=a[j]-a[i]”

所以输入第i个数a[i]时,直接让答案加上前i-1个数中能构成差值为a[i]的数量即可

然后让此时输入的数作为上式中的a[j],将i-1到1作为a[i],列出i-1个可能的a[k]存起来即可

时间复杂度为O(n*n/2)

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int ar[2005],cha[400005];
 4 int main(){
 5     ios::sync_with_stdio(0);
 6     cin.tie(0);cout.tie(0);
 7     int n,i,j,ans=0;
 8     cin>>n;
 9     if(n<3){
10         cout<<0<<endl;
11         return 0;
12     }
13     memset(cha,0,sizeof cha);
14     cin>>ar[0]>>ar[1];
15     cha[ar[1]-ar[0]+200000]=1;
16     for(i=2;i<n;i++){
17         cin>>ar[i];
18         ans+=cha[ar[i]+200000];
19         for(j=0;j<i;j++)
20             cha[ar[i]-ar[j]+200000]++;
21     }
22     cout<<ans;
23     
24     return 0;
25 }

 

ZJNU 2356 - 六学家

标签:pre   bit   space   复杂   pac   for   div   span   return   

原文地址:https://www.cnblogs.com/stelayuri/p/12239004.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!