问题标题: 酷町堂:3685

0
0
已解决
李奕歌
李奕歌
初级天翼
初级天翼

题目描述 Description

在拔河比赛中,小胖的力量特别大,一人的力量能抵得过两人的力量,凭借着小胖的出色发挥,他所在的红队最终赢得了胜利。在拔河比赛中,这样的小胖越多越好啊,而体育老师想知道有多少位这样的小胖呢。假如我们给出所有学生的力量值,且任意两位学生的力量是不同的。如何能快速知道有多少位这样的小胖呢。

输入描述 Input Description

输入共两行,第一行是一个正整数 n,表示共有 n位同学。
接下来一行为由空格分割的n个正整数,分别表示每一位同学的力量值。

输出描述 Output Description

只有一个正整数,为满足条件的数目。

样例输入 Sample Input

4 3 2 1 5

样例输出 Sample Output

2

数据范围及提示 Data Size & Hint

样例说明:因为3=1+2;5=2+3,所以输出为2。

数据范围:1≤n≤1000,0<序列中每个数≤1000


0
已采纳
高见宸
高见宸
初级光能
初级光能

用桶写

核心

输入a并加桶

for(int i=1;i<=n;i++)

for(int j=i+1;j<=n;j++)

if(b[a[i]+a[j]]==1){

cnt++;

b[a[i]+a[j]]=0;

}

输出cnt即可

0
李奕歌
李奕歌
初级天翼
初级天翼

@高见宸 @高见宸 

Runtime Error:80分

#include<bits/stdc++.h>
using namespace std;
int a[1005],b[1005],cnt,n;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        b[a[i]]++;
    }
    for(int i=1;i<=n;i++)
    for(int j=i+1;j<=n;j++)
        if(b[a[i]+a[j]]==1){
            cnt++;
            b[a[i]+a[j]]=0;
        }
    cout<<cnt;
    return 0;
}

 

0
高见宸
高见宸
初级光能
初级光能

b要定义2000以上

不然越界

0
0
我要回答