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

题意:


思路:


posted @ 2025-11-14 19:05  filt  阅读(6)  评论(0)    收藏  举报