ZJNU 2356 - 六学家

Posted stelayuri

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZJNU 2356 - 六学家相关的知识,希望对你有一定的参考价值。

“选出来三个六学家,他们的编号是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 - 六学家的主要内容,如果未能解决你的问题,请参考以下文章

NYOJ 2356: 哈希计划模拟

C 六学家的困惑 YY (2019年华南理工大学程序设计竞赛(春季赛))

P2356 弹珠游戏

代码源 Div1 - 106#456. 选数(抽屉原理) POJ2356

代码源 Div1 - 106#456. 选数(抽屉原理) POJ2356

poj2356Find a multiple——鸽巢定理运用