CCF- CSP 201403-1 相反数 满分题解
题目链接:201403-1 相反数
思路:
- 为了便于直接寻找相反数,我们采用
map
结构,map
用来判断是否存在相应的值,如果存在则为1,不存在为0 - 用
vector
存储整个数值,然后对每个数值进行单独判断 - 最后总的相反数对数为
ans/2
代码如下:
#include<iostream>
#include<algorithm>
#include<vector>
#include<unordered_map>
using namespace std;
vector<int>v;
unordered_map<int, int>m;
int n;
int main()
{
cin>>n;
while(n--)
{
int x;
cin>>x;
v.push_back(x);
m[x]=1;
}
int ans = 0;
while(v.size())
{
auto t = v.back();//取点
//存在相反数
if(m[-t])
{
ans++;
}
v.pop_back();//删除当前点
}
cout<<ans/2<<endl;
}