2019hdu多校 AND Minimum Spanning Tree

Posted nldqy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019hdu多校 AND Minimum Spanning Tree相关的知识,希望对你有一定的参考价值。

题目链接:Click here

题目大意:两个点之间的边权为编号按位与的值,求最小生成树,方案要字典序最小

Solution:

一道不难的构造题,每个点连向他取反后的lowbit值,这样边权为0,若lowbit值大于n,则连1

这样自构造出来的必然是最小生成树,且满足字典序最小

Code:

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+1;
int n,ans=0,a[N];
int lowbit(int x)return x&(-x);
int read()
    int x=0,f=1;char ch=getchar();
    while(!isdigit(ch))if(ch=='-')f=-f;ch=getchar();
    while(isdigit(ch))x=x*10+ch-48;ch=getchar();
    return x*f;

void solve()
    int n=read(),ans=0;
    for(int i=2;i<=n;i++)
        int x=lowbit(~i);
        a[i]=x<=n?x:1;
        ans+=(a[i]&i);
    printf("%d\n",ans);
    for(int i=2;i<n;i++) printf("%d ",a[i]);
    printf("%d\n",a[n]);

int main()
    int t=read();
    while(t--) solve();
    return 0;

以上是关于2019hdu多校 AND Minimum Spanning Tree的主要内容,如果未能解决你的问题,请参考以下文章

2021牛客暑期多校训练营3 C.Minimum grid(二分图匹配)

2021牛客多校3 - Minimum grid(二分图最大匹配-最大流)

2021牛客暑期多校训练营3 C.Minimum grid 二分图最大匹配

HDU 1394 - Minimum Inversion Number

hdu 1394 Minimum Inversion Number

hdu1394 [Minimum Inversion Number]