您的位置:首页 > 其它

Codeforces Round #383 (Div. 2) B. Arpa’s obvious problem and Mehrdad’s terrible solution(STL乱搞)

2017-03-01 19:23 435 查看
题目链接:http://codeforces.com/contest/742/problem/B

【中文题意】给你一个含有n个数的序列和一个整数x,问你在这个序列中能找到多少组a[i]^a[j]=x。(i<=j)

【思路分析】直接用Map搞一下就好了,首先你想,a[i]^a[j]=x;那么a[i]^x=a[j],a[j]^x=a[i]都是成立的,所以直接用map记录一下数,然后求map[a[j]^x]的个数就好了,注意一点,组数可能会超过int。

【AC代码】

#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<map>
#include<queue>
#include<stack>
using namespace std;
#define MOD 10

int a[100005],x,n;

int main()
{
while(~scanf("%d %d",&n,&x))
{
long long int re=0;
map<int,int> m;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
re+=m[a[i]^x];
m[a[i]]++;
}
printf("%lld\n",re);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  codeforces
相关文章推荐