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

来源:互联网 发布:淘宝店铺美工多少钱 编辑:程序博客网 时间:2024/05/22 15:54

题目链接: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 10int 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;}
0 0
原创粉丝点击