本文主要是介绍codeforces 742B - Arpa’s obvious problem and Mehrdad’s terrible solution,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
There are some beautiful girls in Arpa’s land as mentioned before.
Once Arpa came up with an obvious problem:
Given an array and a number x, count the number of pairs of indices i, j (1 ≤ i < j ≤ n) such that , where is bitwise xoroperation (see notes for explanation).
Immediately, Mehrdad discovered a terrible solution that nobody trusted. Now Arpa needs your help to implement the solution to that problem.
First line contains two integers n and x (1 ≤ n ≤ 105, 0 ≤ x ≤ 105) — the number of elements in the array and the integer x.
Second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 105) — the elements of the array.
Print a single integer: the answer to the problem.
二分搜索
AC代码:
# include <stdio.h>
# include <vector>
using namespace std;
typedef long long int ll;
int a[100010];
vector<int> vec[100010];
int main(){int i, j, k, x, n, temp, s;scanf("%d%d", &n, &x);for(i=1; i<=n; i++){scanf("%d", &a[i]);vec[a[i]].push_back(i);}ll ans=0;for(i=1; i<n; i++){temp=x^a[i];if(temp<100010)s=vec[temp].size();elsecontinue;if(s>0){int it=lower_bound(vec[temp].begin(), vec[temp].end(), i+1)-vec[temp].begin();if(it>s)continue;if(it!=s){ans=ans+s-it;}}}printf("%I64d", ans);return 0;
}
这篇关于codeforces 742B - Arpa’s obvious problem and Mehrdad’s terrible solution的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!