description

阿狸和桃子养了n 个小阿狸, 小阿狸们每天都在一起玩的很开心. 作为工程师的阿狸在对小阿狸们之间的关系进行研究以后发现了小阿狸的人际关系由某种神奇的相互作用决定, 阿狸称之为“键”. 每个键有一个频率, 称为键频率, 是一个整数(单位Hz)。

由于小阿狸们每天成集团地黏在一起, 桃子希望他们能够分成更加独立的几团. 阿狸发现, 一旦小阿狸们分开, 独立的一块连在一起的几个小阿狸就会形成一个家族, 而家族的类型由这个家族的小阿狸的数量唯一确定(比如说只有一个小阿狸的家族显然就是单身码农, 两个小阿狸的显然是一对小阿狸恋人, 三个小阿狸的就是三口之家等等). 显然, 一个小阿狸和另一个小阿狸处于同一家族,当且仅当两个小阿狸之间存在直接或间接的键组成的路径.。

桃子对每种小阿狸家族都有自己的喜好程度, 她希望所有的小阿狸家族喜好程度之和大于等于K。

为了让小阿狸们分开来, 阿狸决定让某些键断裂, 只保留某一段频率的键,比如说100Hz 到140Hz 频率的键, 这时频段宽度为40Hz. 当然, 阿狸希望频段宽度越小越好, 但至少要有一个小键. 你的任务就是求出最小的频段宽度.

注意, 输入不保证全部键都有效时只有一个小阿狸家族。


analysis

  • 并查集傻逼题

  • \(m\)才\(5k\),排一下序,然后\(O(m^2)\)暴力枚举

  • 用并查集维护每个点的集合大小,只要权值和大于等于\(k\)就记录答案退出

  • 每次合并两个集合先减去各自原先的权值,再加上并起来后的集合权值大小就好


code

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<algorithm>
  4. #define MAXN 1005
  5. #define MAXM 5005
  6. #define INF 1000000007
  7. #define ll long long
  8. #define fo(i,a,b) for (ll i=a;i<=b;++i)
  9. #define fd(i,a,b) for (ll i=a;i>=b;--i)
  10. using namespace std;
  11. ll val[MAXN],fa[MAXN],size[MAXN];
  12. ll n,m,k,ans=INF;
  13. struct edge
  14. {
  15. ll x,y,z;
  16. }a[MAXM];
  17. inline ll read()
  18. {
  19. ll x=0,f=1;char ch=getchar();
  20. while (ch<'0' || '9'<ch){if (ch=='-')f=-1;ch=getchar();}
  21. while ('0'<=ch && ch<='9')x=x*10+ch-'0',ch=getchar();
  22. return x*f;
  23. }
  24. inline bool cmp(edge a,edge b)
  25. {
  26. return a.z<b.z;
  27. }
  28. inline ll getfa(ll x)
  29. {
  30. return fa[x]==x?x:fa[x]=getfa(fa[fa[fa[fa[fa[x]]]]]);
  31. }
  32. int main()
  33. {
  34. //freopen("T1.in","r",stdin);
  35. n=read(),m=read(),k=read();
  36. fo(i,1,n)val[i]=read();
  37. fo(i,1,m)a[i].x=read(),a[i].y=read(),a[i].z=read();
  38. sort(a+1,a+m+1,cmp);
  39. fo(i,1,m)
  40. {
  41. fo(j,1,n)fa[j]=j,size[j]=1;
  42. ll tot=n*val[1];
  43. fo(j,i,m)
  44. {
  45. ll x=getfa(a[j].x),y=getfa(a[j].y);
  46. if (x!=y)
  47. {
  48. fa[y]=x;
  49. tot-=val[size[x]]+val[size[y]];
  50. size[x]+=size[y],size[y]=0;
  51. tot+=val[size[x]];
  52. }
  53. if (tot>=k)
  54. {
  55. ans=min(ans,a[j].z-a[i].z);
  56. break;
  57. }
  58. }
  59. }
  60. if (ans==INF)printf("T_T\n");
  61. else printf("%lld\n",ans);
  62. return 0;
  63. }

【JZOJ3301】家族的更多相关文章

  1. 基于英特尔® 至强™ 处理器 E5 产品家族的多节点分布式内存系统上的 Caffe* 培训

    原文链接 深度神经网络 (DNN) 培训属于计算密集型项目,需要在现代计算平台上花费数日或数周的时间方可完成. 在最近的一篇文章<基于英特尔® 至强™ E5 产品家族的单节点 Caffe 评分和 ...

  2. 【6年开源路】FineUI家族今日全部更新(FineUI + FineUI3to4 + FineUI.Design + AppBox)!

    刚才询问博客园团队: [6年开源路]三石今日送福利,AppBox4.0源码免费拿!FineUI家族今日全部更新(FineUI + FineUI3to4 + FineUI.Design + AppBox ...

  3. [Machine Learning & Algorithm]CAML机器学习系列1:深入浅出ML之Regression家族

    声明:本博客整理自博友@zhouyong计算广告与机器学习-技术共享平台,尊重原创,欢迎感兴趣的博友查看原文. 符号定义 这里定义<深入浅出ML>系列中涉及到的公式符号,如无特殊说明,符号 ...

  4. 家族/亲戚(relation)

    题目描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是 ...

  5. Hadoop家族的各个成员

    官方定义:hadoop是一个开发和运行处理大规模数据的软件平台.核心词语是平台,也就是说我们有大量的数据,又有好几个电脑,我们知道应该把处理数据的任务分解到各个电脑上,但是不知道怎样分配任务,怎样回收 ...

  6. "流"派家族,一脉相承

    (更多内容请关注本人微信订阅号:it_pupil) 你没进错,我们讲的是Java的输入输出流. 概述 ➤   可以从其中读入一个字节序列的对象称作输入流.(输入流是一个对象,可以从这个对象中读取一个字 ...

  7. Hadoop学习笔记【Hadoop家族成员概述】

    Hadoop家族成员概述 一.Hadoop简介 1.1 什么是Hadoop? Hadoop是一个分布式系统基础架构,由Apache基金会所开发,目前Yahoo!是其最重要的贡献者. Hadoop实现了 ...

  8. hadoop家族之pig入门

    昨天成功运行第一个在hadoop集群上面的python版本的wordcount,今天白天继续看网上提供的文档.下午上头给定的回复是把hadoop家族都熟悉一下,那就恭敬不如从命,开始学习pig吧- 这 ...

  9. Hadoop家族 路线图(转)

    主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项 ...

随机推荐

  1. RoadFlow2.7.5 MyController.cs

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  2. CodeForces-1234C-Pipes-dfs

    You are given a system of pipes. It consists of two rows, each row consists of nn pipes. The top lef ...

  3. 剑指offer——05重建二叉树

    题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...

  4. 关于UIPageViewController去除边缘点击手势

    如果page上方还有一层UI控件的话,不去除边缘点击手势会造成手势的冲突干扰. 首先我做的处理是设置pageView的手势代理 for (UIGestureRecognizer *gr in _pag ...

  5. Ansible的copy模块批量下发文件

    copy模块的参数,ansible 主机组 -m copy -a '' src: 指定源文件或目录 dest: 指定目标服务器的文件或目录 backup: 是否要备份 owner: 拷贝到目标服务器后 ...

  6. SQL链接EXCEL操作

    Sub CopyData_5() Set Cnn = CreateObject("ADODB.Connection")With Cnn.Provider = "micro ...

  7. 360自动抢票还不够,几行js代码设置无人值守

    360就是牛逼哄哄的...... 但是最近在使用360浏览器抢票的时候还是发现了一些体验不好的地方,比如搞着搞着就退出了登录,有时候能帮你自动登录进去,但是自动登录之后又不会帮你自动开始抢.然后验证码 ...

  8. 透彻理解并掌握JavaScript的this

    前言 无论是JavaScript新手还是老手,JavaScript中的this关键词可能都会令你困惑.本文旨在透彻地阐述this.读完本文,就再也不用怕JavaScript中的this了.你将会知道在 ...

  9. .net下MVC中使用Tuple分页查询数据

    主要是在DAL层写查询分页的代码. 例如DAL层上代码: public Tuple<List<WxBindDto>, int> GetMbersInfo(int start, ...

  10. 分享安装Apache、MySQL、PHP、LAMP的完整教程

    Operation timed out after 30000 milliseconds with 0 out of -1 bytes received请注意,在Linux中输入密码时,不会显示您输入 ...