AtCoder Beginner Contest 410
原题链接:AtCoder Beginner Contest 410
A
题意:
思路:
B
题意:
思路:
C
题意:
思路:
D
题意:带权有向图,1到n的权值xor最小
思路:BFS \(n \lt 1000, w < 2 ^ {10}\)
#include <bits/stdc++.h>
using i64 = long long;
using u64 = unsigned long long;
using u32 = unsigned;
using u128 = unsigned __int128;
using i128 = __int128;
constexpr int K = 1 << 10;
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int N, M;
std::cin >> N >> M;
std::vector<std::vector<std::pair<int, int>>> adj(N);
for (int i = 0; i < M; i++) {
int A, B, W;
std::cin >> A >> B >> W;
A--;
B--;
adj[A].emplace_back(B, W);
}
std::vector vis(N, std::vector<bool>(K));
vis[0][0] = true;
int ans = -1;
std::queue<std::pair<int, int>> q;
q.emplace(0, 0);
while (!q.empty()) {
auto [x, v] = q.front();
q.pop();
if (x == N - 1 && (ans == -1 || ans > v)) {
ans = v;
}
for (auto [y, w] : adj[x]) {
w ^= v;
if (!vis[y][w]) {
vis[y][w] = true;
q.emplace(y, w);
}
}
}
std::cout << ans << "\n";
return 0;
}
E
题意:给H,M 长度为N的两个数组A和B。要求选取尽量多的元素,每个元素要么H-A[i],要么M-B[i]
思路:DP
F
题意:
思路:
G
题意:
思路:

浙公网安备 33010602011771号