Submission #2150810


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

using VS = vector<string>;    using LL = long long;
using VI = vector<int>;       using VVI = vector<VI>;
using PII = pair<int, int>;   using PLL = pair<LL, LL>;
using VL = vector<LL>;        using VVL = vector<VL>;

#define ALL(a)  begin((a)),end((a))
#define RALL(a) (a).rbegin(), (a).rend()
#define PB push_back
#define EB emplace_back
#define MP make_pair
#define SZ(a) int((a).size())
#define SORT(c) sort(ALL((c)))
#define RSORT(c) sort(RALL((c)))
#define UNIQ(c) (c).erase(unique(ALL((c))), end((c)))
#define FOR(i, s, e) for (int(i) = (s); (i) < (e); (i)++)
#define FORR(i, s, e) for (int(i) = (s); (i) > (e); (i)--)
#define debug(x) cerr << #x << ": " << x << endl
const int INF = 1e9;                          const LL LINF = 1e16;
const LL MOD = 1000000007;                    const double PI = acos(-1.0);
int DX[8] = { 0, 0, 1, -1, 1, 1, -1, -1 };    int DY[8] = { 1, -1, 0, 0, 1, -1, 1, -1 };

/* -----  2018/03/03  Problem: code-thanks-festival-2017_f / Link: https://code-thanks-festival-2017.contest.atcoder.jp/tasks/code_thanks_festival_2017_f?lang=en  ----- */
/* ------問題------

N 個の正の整数が与えられ、i(1≦i≦N) 番目の正の整数は ai です。
N 個の整数のうち 0 個以上を選んで、選んだ全ての整数のビットごとの排他的論理和を計算します。
計算結果が K となるような整数の選び方の個数を 10^9+7 で割った余りを求めてください。
ただし、0 個選んだときのビットごとの排他的論理和は 0 とします。

-----問題ここまで----- */
/* -----解説等-----

状態が少ないかなあという気持ちでmap上のDPをすると通った

↓解説に書いてあったこと
1.sortして無駄な部分をへらして上界をあげながらDP
これはたぶんmapと同じ

2. Xorの性質から重複する値をまとめて計算するDP
偶数個選ぶか奇数個選ぶかの選択になり、DPの係数が2のべき乗になる
(組合せと二項定理の母関数から奇数と偶数の選択和は2のべき乗[高校数学])
これでDPを
dp[i][j]: b1, …, bi から、XOR が j となる整数の選び方の個数
とすればよい

----解説ここまで---- */

LL N, K;

LL ans = 0LL;

int main() {
	cin.tie(0);
	ios_base::sync_with_stdio(false);

	cin >> N >> K;
	map<int, LL>Map;
	VI a(N);
	SORT(a);
	FOR(i, 0, N) {
		cin >> a[i];
	}
	Map[0] = 1;
	FOR(i, 0, N) {
		map<int, LL>Nx;
		for (auto m : Map) {
			int mask = m.first;
			LL cmb = m.second;
			(Nx[mask]+=cmb) %= MOD;
			(Nx[mask^a[i]]+=cmb) %= MOD;
		}
		Map = Nx;
	}
	ans = Map[K];

	cout << ans << "\n";

	return 0;
}

Submission Info

Submission Time
Task C - Time Gap
User vjudge5
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2690 Byte
Status WA
Exec Time 1 ms
Memory 256 KB

Judge Result

Set Name sample All
Score / Max Score 0 / 0 0 / 500
Status
AC × 1
WA × 2
AC × 4
WA × 45
Set Name Test Cases
sample sample-01.txt, sample-02.txt, sample-03.txt
All sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt, 01-31.txt, 01-32.txt, 01-33.txt, 01-34.txt, 01-35.txt, 01-36.txt, 01-37.txt, 01-38.txt, 01-39.txt, 01-40.txt, 01-41.txt, 01-42.txt, 01-43.txt, sample-01.txt, sample-02.txt, sample-03.txt
Case Name Status Exec Time Memory
01-01.txt WA 1 ms 256 KB
01-02.txt WA 1 ms 256 KB
01-03.txt WA 1 ms 256 KB
01-04.txt AC 1 ms 256 KB
01-05.txt WA 1 ms 256 KB
01-06.txt WA 1 ms 256 KB
01-07.txt WA 1 ms 256 KB
01-08.txt WA 1 ms 256 KB
01-09.txt WA 1 ms 256 KB
01-10.txt WA 1 ms 256 KB
01-11.txt WA 1 ms 256 KB
01-12.txt WA 1 ms 256 KB
01-13.txt WA 1 ms 256 KB
01-14.txt WA 1 ms 256 KB
01-15.txt WA 1 ms 256 KB
01-16.txt WA 1 ms 256 KB
01-17.txt WA 1 ms 256 KB
01-18.txt WA 1 ms 256 KB
01-19.txt WA 1 ms 256 KB
01-20.txt WA 1 ms 256 KB
01-21.txt WA 1 ms 256 KB
01-22.txt WA 1 ms 256 KB
01-23.txt WA 1 ms 256 KB
01-24.txt WA 1 ms 256 KB
01-25.txt WA 1 ms 256 KB
01-26.txt AC 1 ms 256 KB
01-27.txt WA 1 ms 256 KB
01-28.txt WA 1 ms 256 KB
01-29.txt WA 1 ms 256 KB
01-30.txt WA 1 ms 256 KB
01-31.txt WA 1 ms 256 KB
01-32.txt WA 1 ms 256 KB
01-33.txt WA 1 ms 256 KB
01-34.txt WA 1 ms 256 KB
01-35.txt WA 1 ms 256 KB
01-36.txt WA 1 ms 256 KB
01-37.txt WA 1 ms 256 KB
01-38.txt WA 1 ms 256 KB
01-39.txt WA 1 ms 256 KB
01-40.txt WA 1 ms 256 KB
01-41.txt WA 1 ms 256 KB
01-42.txt WA 1 ms 256 KB
01-43.txt WA 1 ms 256 KB
sample-01.txt WA 1 ms 256 KB
sample-02.txt AC 1 ms 256 KB
sample-03.txt WA 1 ms 256 KB