各位大神,请问这题怎么做,在线等,很着急

题目总版

测试题自己写
by cff_0102 @ 2024-03-24 16:23:21


@[superise](/user/1028446) 对于前百分之二十:区间异或只有0与1两种取值,直接特判 对于另百分之三十:维护前缀异或,暴力枚举
by litjohn @ 2024-03-24 16:31:04


@[superise](/user/1028446) 你能把链接发给我吗?我想练一下这道题
by litjohn @ 2024-03-24 16:31:42


@[superise](/user/1028446) 搞错了。如果全是零,那么区间异或也全是零
by litjohn @ 2024-03-24 16:32:40


@[litjohn](/user/537934) https://www.huweibc.com/studentCourse/class?groupId=307&courseId=50&contestId=15313#testTab=15316_2
by superise @ 2024-03-24 16:34:08


@[superise](/user/1028446) 对于百分之百:有一个性质若a^b=c则a^c=b。可以用map统计所有当前前缀异或目标值的个数再累加。
by litjohn @ 2024-03-24 16:35:20


@[superise](/user/1028446) 算了。我去不了。让我试着写一下代码。等会见。
by litjohn @ 2024-03-24 16:37:18


@[litjohn](/user/537934) 可以帮忙写个程序吗
by superise @ 2024-03-24 16:37:53


@[litjohn](/user/537934) 麻烦快一点,很急,求你了
by superise @ 2024-03-24 16:38:43


@[superise](/user/1028446) 这个代码你先试试。是个暴力,应该能有30$\sim$50分。 ```cpp #include <bits/stdc++.h> using namespace std; int n, xr[200005], sum[200005], ans; vector<int> a; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n; a.resize(n + 5); for (int i = 1; i <= n; ++i) { cin >> a[i]; xr[i] = xr[i - 1] ^ a[i]; sum[i] = sum[i - 1] + a[i]; } for (int i = 1; i <= n; ++i) { for (int j = i; j <= n; ++j) { if ((xr[j] ^ xr[i - 1]) == sum[j] - sum[i - 1]) { ans++; } } } cout << ans; return 0; } ```
by litjohn @ 2024-03-24 16:43:47


| 下一页