【HDU】5604 merge【set练习题】
来源:互联网 发布:c51单片机引脚图 编辑:程序博客网 时间:2024/05/17 06:15
题目链接:merge
set练习题
#include <stdio.h>#include <string.h>#include <set>#include <algorithm>using namespace std ;#define clr( a , x ) memset ( a , x , sizeof a )const int MAXN = 300005 ;set < int > s[MAXN] ;set < int > :: iterator it ;int p[MAXN] ;int n , m ;int find ( int x ) { int o = x , tmp ; while ( o != p[o] ) o = p[o] ; while ( x != p[x] ) { tmp = p[x] ; p[x] = o ; x = tmp ; } return o ;}void solve () { int x , y ; scanf ( "%d" , &n ) ; for ( int i = 1 ; i <= n ; ++ i ) { p[i] = i ; s[i].clear () ; s[i].insert ( i << 1 ) ; } for ( int i = 1 ; i < n ; ++ i ) { scanf ( "%d%d" , &x , &y ) ; x = find ( x ) ; y = find ( y ) ; if ( s[x].size () > s[y].size () ) swap ( x , y ) ; p[x] = y ; for ( it = s[x].begin () ; it != s[x].end () ; ++ it ) { s[y].insert ( *it ) ; } int l = *( s[y].begin () ) ; int r = *( --s[y].end () ) ; int m = ( l + r ) >> 1 ; it = s[y].upper_bound ( m ) ; int b = *it ; int a = *( -- it ) ; int t = ( a + b ) / 2 ; int ans = max ( t - l , r - t ) ; if ( it != s[y].begin () ) { -- it ; int z = *it ; ++ it ; t = ( a + z ) / 2 ; ans = min ( ans , max ( t - l , r - t ) ) ; } ++ it ; ++ it ; if ( it != s[y].end () ) { int z = *it ; t = ( b + z ) / 2 ; ans = min ( ans , max ( t - l , r - t ) ) ; } printf ( "%.1f\n" , ans / 2.0 ) ; }}int main () { int T ; scanf ( "%d" , &T ) ; for ( int i = 1 ; i <= T ; ++ i ) { solve () ; } return 0 ;}
0 0
- 【HDU】5604 merge【set练习题】
- HDU 5604 merge(set)
- HDU 5604/BC 67E merge
- 练习题 No.17 set容器
- CareerCup Liars Merge-Find Set
- HDU动态规划入门练习题
- Oracle_Update...Set...From...解决方法Merge Into...Using...
- HDU 1558 Segment Set
- hdu 1558 Segment set
- hdu 1558 Segment set
- HDU 4631 set维护
- hdu 1558 Segment set
- hdu 4585 Shaolin set
- HDU 1307 map&&set
- HDU Segment set
- hdu 2072 (set)
- hdu 5058 set应用
- HDU 1558 Segment set
- 服务器控件 onclientclick和onclick区别
- 6.RecyclerView的使用(包括分割线的设置,item点击事件的监听,以及recyclorview中数据的改变)
- 软件爱 设计模式--工厂模式(简单工厂,工厂方法,抽象工厂)
- 怎么开发一款区块链
- 魂系列游戏机制分析
- 【HDU】5604 merge【set练习题】
- GoDemo:给定数字字符串求可能的ip组合,数字顺序不变
- Android动画小结
- 正态分布中normpdf和normcdf的区别
- 数据库基础与索引
- OpenGL中常用函数
- net.mindview.util.print.*包不存在的解决方法
- 谈论指针(一)
- sql语句where子句like的用法详解