多校 HDU - 6614 AND Minimum Spanning Tree (二进制)
传送门
AND Minimum Spanning Tree
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 378 Accepted Submission(s): 190
The weight of the edge between vertex x and vertex y (1<=x, y<=N, x!=y) is simply the bitwise AND of x and y. Now you are to find minimum spanning tree of this graph.
3
2
1 1
0
1
In the 1st test case, w(1, 2) = w(2, 1) = 0, w(1, 3) = w(3, 1) = 1, w(2, 3) = w(3, 2) = 2. There is only one minimum spanning tree in this graph, i.e. {(1, 2), (1, 3)}.
For the 2nd test case, there is also unique minimum spanning tree.
有N个结点,两两之间的权值为两个点取与
比如说结点2和结点3之间的权值 W(2,3) = 10&11 = 10
问整个图的最小生成树
第一行输出最小生成树的权值和
第二行分别输出2到N节点连接的点(如果一个节点连接了2个点的话,需要输出小的那个)
举个例子:
10011(二进制)最好和哪个结点连接呢
无疑是 00100(二进制)
感受一下?
其实本质就是找到第一个非1的位置,其他的所有位置都置为0就OK。
这里有个特殊情况
如果是111?(二进制)
那么最优的连接结点就是1000。
但是如果N恰好就是7,那么就没有1000(十进制是8)来和111(十进制是7)组队了。
111只能去和1连接(被迫)
所以第一行答案要么是1要么是0
判断一下N是不是二的幂次减1就行
第二行的话可以按照上面的规律去找,即找到第一个非1的位置为1,其他的都为0
#include"bits/stdc++.h"
using namespace std;
typedef long long LL;
int a[];
bool judge(int x){
int n = x&(x-);
return n == ;
}
/*
找到二进制中第一个不是0的
比如说 1001
返回的是 0010
1111返回的是10000
*/
int getMin(int x){
int ans = ;
while(true){
int k = x&;
x >>= ;
if(k == ){
break;
}
ans <<= ;
}
return ans;
}
int main()
{
int _;
for(scanf("%d",&_);_--;){
int n;
scanf("%d",&n);
memset(a,,sizeof(int)*(n+));
judge(n+)?puts(""):puts("");
for(int i = ; i <= n ; i++){
int Min = getMin(i);
Min > n? printf(""):printf("%d",Min);//判断一下找到的数是不是大于n
i == n ? printf("\n"):printf(" ");
}
}
}
/*
2
3
2
*/
多校 HDU - 6614 AND Minimum Spanning Tree (二进制)的更多相关文章
- 【HDU 4408】Minimum Spanning Tree(最小生成树计数)
Problem Description XXX is very interested in algorithm. After learning the Prim algorithm and Krusk ...
- HDU 6614 AND Minimum Spanning
Time limit 1000 ms Memory limit 131072 kB OS Windows 中文题意 给一张n个点的无向完全图(输入一个n就完事了),每个点标号为1~n,每条边的边权为它 ...
- HDU 4408 Minimum Spanning Tree 最小生成树计数
Minimum Spanning Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- 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 ...
随机推荐
- WPF/Silverlight深度解决方案:(七)HLSL自定义渲染特效之完美攻略(中)
原文:WPF/Silverlight深度解决方案:(七)HLSL自定义渲染特效之完美攻略(中) 通过上一节的解说,大家是否已经对HLSL有了较深刻的认识和理解,HLSL的渲染不仅仅局限于静态处理,通过 ...
- material-ui里面的withStyles是什么?
export default withStyles(styles, { name: 'MuiAppBar' })(AppBar); //这里的作用是什么? withStyles 是一个 HOC 组件, ...
- 全球首个百万IOPS云盘即将商业化 阿里云推出超高性能云盘ESSD
近日,在经过近半年的上线公测后,阿里云全球首个跨入IOPS百万时代的云盘——ESSD即将迎来商业化,单盘IOPS高达100万,这是阿里云迄今为止性能最强的企业级块存储服务. 搭配ECS云服务器使用, ...
- React 入门笔记
一.什么是React React: A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES 上面的话直译过来就是,React是一个用于构建用户界面的Java ...
- 用python爬虫抓站的一些技巧总结 zz
用python爬虫抓站的一些技巧总结 zz 学用python也有3个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过在discuz论坛中自动登录自动发贴的脚本,写过自动收邮件的脚本, ...
- 【Django入坑之路】Form组件
1:From组件的简单使用 1创建From: #导入模块 from django import forms from django.forms import fields, widgets # 导入自 ...
- Linux下的python安装
centos7安装python3 以及tab补全功能 1.安装python3 1.1下载python源码包 网址:https://www.python.org/downloads/release/ ...
- HZOJ 导弹袭击
比较显然的一个性质是如果存在$a(i)>=a(j) \& \& b(i)>=b(j)$那么j没用. 我们并不需要A,B的具体取值,我们之关心$\frac {A}{B}$. ...
- javascript —— 禁止通过 Enter 键提交表单
$('btn').on('keydown', function () { return false; })
- docker学习笔记(总纲)
阿里容器Docker简介 什么是Docker 为什么要用Docker 基本认识 Docker EE/Docker CE简介与版本规划 镜像 容器 仓库 数据卷 阿里容器服务的基本概念与其它名词解释 C ...