文章

232

粉丝

165

获赞

377

访问

118.7k

头像
最大同码距数 题解:贪心构造
P5326 湖南大学2025年机试题
发布于2026年3月9日 22:16
阅读数 255

#include <cstdio>
#include <algorithm>
using namespace std;

int main() {
    int T;
    scanf("%d", &T);
    while (T--) {
        int L;
        unsigned int A, B;
        scanf("%d %u %u", &L, &A, &B);

        // 构造低 L 位全1的掩码
        unsigned int mask;
        if (L == 32)
            mask = ~0U;
        else
            mask = (1U << L) - 1;

        unsigned int a = A & mask;
        unsigned int b = B & mask;

        // 计算汉明距离 d = popcount(a ^ b)
        unsigned int x = a ^ b;
        int d = 0;
        for (int i = 0; i < L; ++i)
            if (x & (1U << i))
                ++d;

        // 统计 a 中 0 的个数
        int cnt0 = 0;
        for (int i = 0; i < L; ++i)
            if (!(a & (1U << i)))
                ++cnt0;

        int k = min(cnt0, d);      // 将最高的 k 个 0 变为 1
        int m = d - k;             // 再将最低的 m 个 1 变为 0

        unsigned int c = 0;
        in...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发