Acwing 64th Weekly Contest
# A
# 题意
求 A + B
# 思路
测试题
# 代码
#include <bits/stdc++.h>
using ll = long long;
int main() {
std::ios::sync_with_stdio(0);
std::cin.tie(0);
ll a, b;
std::cin >> a >> b;
std::cout << a + b << "\n";
return 0;
}
// Make sure to add code blocks to your code group
# B
# 题目
4506. 三国语言 - AcWing题库 (opens new window)
# 思路
只需要判断输入字符串的最后一个字符即可。
# 代码
#include <bits/stdc++.h>
using ll = long long;
int main() {
std::ios::sync_with_stdio(0);
std::cin.tie(0);
int n;
std::cin >> n;
while (n --) {
std::string s;
std::cin >> s;
if (s.back() == 'u') puts("JAPANESE");
else if (s.back() == 'o') puts("FILIPINO");
else puts("KOREAN");
}
return 0;
}
// Make sure to add code blocks to your code group
# C
# 题目
4507. 子数组异或和 - AcWing题库 (opens new window)
# 思路
- 补充一下异或的性质:对任意数字
来说,
对于符合条件的子数组满足:所有元素的异或和为 0 并且 数组长度为偶数。
在这里我们采用前缀异或和的思路,输入数据时维护一个数组
例如某个奇数下标的前缀异或和为
需要注意的是,对于前缀异或和为 0 的偶数项,需要额外加上 1,也可以建立完
PS:本题需要开long long
# 代码
#include <bits/stdc++.h>
using ll = long long;
constexpr int N = 1 << 21 + 5;
int mp[N][2];
int main() {
std::ios::sync_with_stdio(0);
std::cin.tie(0);
int n;std::cin >> n;
std::vector<int> a(n + 1);
std::vector<int> suf(n + 1);
ll res = 0;
for (int i = 1; i <= n; i ++) {
std::cin >> a[i];
suf[i] = a[i] ^ suf[i - 1];
int s = i & 1;
res += mp[suf[i]][s] + (suf[i] == 0 && !s);
mp[suf[i]][s] ++;
}
std::cout << res <<"\n";
return 0;
}
// Make sure to add code blocks to your code group
# D
# 题目
4508. 移动的点 - AcWing题库 (opens new window)
# 思路
本题我们考虑点之间的相对速度。
图中黑线是两点的运动轨迹,红线是斜率为 a 的直线。很显然的可以看出,两点之间的连线始终与红线平行,因此如果两点能够相遇,则一定满足两点纵轴速度差与横轴速度差之比为 a,即
因此我们对于每个点
最后答案记得乘二,因为两个点发生相遇时,它们的
PS:本题需要开long long
# 代码
#include <bits/stdc++.h>
using ll = long long;
int main() {
std::ios::sync_with_stdio(0);
std::cin.tie(0);
int n, a, b;
std::map<ll, int> cnt;
std::map<std::pair<int, int>, int> para;
ll res = 0;
std::cin >> n >> a >> b;
for (int i = 0; i < n; i ++) {
int x, vx, vy;
std::cin >> x >> vx >> vy;
int t = a * vx - vy;
res += cnt[t] - para[{vx, vy}];
cnt[t] ++, para[{vx, vy}] ++;
}
std::cout << res * 2 << "\n";
return 0;
}
// Make sure to add code blocks to your code group
Last Updated: 3/4/2023, 5:38:14 PM