首页 > 其他 > 详细

ZJNU 2356 - 六学家

时间:2020-01-28 22:08:59      阅读:63      评论:0      收藏:0      [点我收藏+]

“选出来三个六学家,他们的编号是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 - 六学家

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!