专栏文章

题解:P2141 [NOIP2014 普及组] 珠心算测验

P2141题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miqmdbcb
此快照首次捕获于
2025/12/04 07:09
3 个月前
此快照最后确认于
2025/12/04 07:09
3 个月前
查看原文

思路

主要题意:统计集合中有多少个数,刚好等于另外两个不同数的和。
我们可以用的思想来解决。
  • 先用标记数组 stst 标记出每个元素 aia_i
  • 接着将数组 aa 逆序排序,方便后续操作。
  • 随后判断 aiaja_i-a_j 在数组 aa 中是否出现过,意思就是有没有一个数加上 aja_j 是否等于 aia_i,还要判断相加的两个数是否不相等。如果是,计数器 cntcnt 就加一。

代码

CPP
#include <bits/stdc++.h>
using namespace std;
int a[105];
bool st[10005];
int main(){
	int n,cnt=0;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		st[a[i]]=true;
	}
	sort(a+1,a+1+n,greater<int>());
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			if(st[a[i]-a[j]]&&2*a[j]!=a[i]){
				cnt++;
				break;
			}
		}
	}
	cout<<cnt;
	return 0;
} 

评论

0 条评论,欢迎与作者交流。

正在加载评论...