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的更多相关文章
- 多校 HDU - 6614 AND Minimum Spanning Tree (二进制)
传送门 AND Minimum Spanning Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 ...
- 【HDU 4408】Minimum Spanning Tree(最小生成树计数)
Problem Description XXX is very interested in algorithm. After learning the Prim algorithm and Krusk ...
- 数据结构与算法分析–Minimum Spanning Tree(最小生成树)
给定一个无向图,如果他的某个子图中,任意两个顶点都能互相连通并且是一棵树,那么这棵树就叫做生成树(spanning tree). 如果边上有权值,那么使得边权和最小的生成树叫做最小生成树(MST,Mi ...
- Educational Codeforces Round 3 E. Minimum spanning tree for each edge LCA/(树链剖分+数据结构) + MST
E. Minimum spanning tree for each edge Connected undirected weighted graph without self-loops and ...
- CF# Educational Codeforces Round 3 E. Minimum spanning tree for each edge
E. Minimum spanning tree for each edge time limit per test 2 seconds memory limit per test 256 megab ...
- Codeforces Educational Codeforces Round 3 E. Minimum spanning tree for each edge LCA链上最大值
E. Minimum spanning tree for each edge 题目连接: http://www.codeforces.com/contest/609/problem/E Descrip ...
- MST(Kruskal’s Minimum Spanning Tree Algorithm)
You may refer to the main idea of MST in graph theory. http://en.wikipedia.org/wiki/Minimum_spanning ...
- HDU 4408 Minimum Spanning Tree 最小生成树计数
Minimum Spanning Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- [Educational Round 3][Codeforces 609E. Minimum spanning tree for each edge]
这题本来是想放在educational round 3的题解里的,但觉得很有意思就单独拿出来写了 题目链接:609E - Minimum spanning tree for each edge 题目大 ...
随机推荐
- 第十周java总结
Java IO 1.file类 file类的构造方法: public Flie(String pathname) -->实例化Flie类的时候,必须设置好路径. 如:Flie f = new F ...
- P1216数字三角形
这是USACO的一道记忆化搜索题,还记得原来学搜索就是被此所困. 给定n深的数,第i层有i个节点,存储有一个数字,询问从第一层走到最后一层所经过节点上数字和的最大值.我们很容易想到枚举所有路径来计算最 ...
- Luogu P4823 [TJOI2013]拯救小矮人
题目 \(n^2\)的dp已经成为辣鸡做法了,%%%wch. 首先一个结论:\(a+b\)小的人在上. 这个东西我们有三种方法解决证明: 1.感性理解,\(a+b\)越大的人逃生能力越强,放在下面就越 ...
- 创建一个py文件并运行
在 Linux 中,可以直接用vim 或者 vi 来编辑一个 python 文件 vim hello.py 进入编辑页面 #coding:utf-8 print("你好") (因为 ...
- 基于Caffe训练AlexNet模型
数据集 1.准备数据集 1)下载训练和验证图片 ImageNet官网地址:http://www.image-net.org/signup.php?next=download-images (需用邮箱注 ...
- java中的集合类详情解析以及集合和数组的区别
数组和链表 数组:所谓数组就是相同数据类型的元素按照一定顺序排列的集合. 它的存储区间是连续的,占用内存严重,所以空间复杂度很大,为o(n),但是数组的二分查找时间复杂度很小为o(1). 特点是大小固 ...
- curry&unCurry函数
unCurry函数与curry函数区别:curry化函数:固定部分参数,返回一个接受剩余参数的新函数,目的是为了缩小适用范围,创建一个针对性更强的函数. unCurry化函数:扩大适用范围,创建一个应 ...
- MySQL安装+Navicat_Premium(安装+破解)+Navicat_Premium中MySQL的localhost不能正常连接+不能连接Docker启动容器中的MySQL
MySQL安装 安装MySQL 我这里安装的是 MySQL 8.0 Command Line Client 下载+安装 详情见 https://www.cnblogs.com/taopanfeng/p ...
- Redis【3】其他部分~
Java连接VMware的Redis:ping()返回PONG 要可以ping通VMware地址 端口号要正确.默认6379 VMware中的防火墙原因.需添加6379端口号的防火墙: vim /et ...
- EF6
EF讲解 EF(entityframework) ORM框架中的一种 然后 我们来说下 什么是 ORM (对象映射关系) object relation Mapping 微软 为了更简化 使用 ...