题目描述

你需要构造一棵至少有两个顶点的树,树上的每条边有一个非负整数边权。树上两点 i,j 的距离dis(i,j) 定义为树上连接i 和j 这两点的简单路径上的边权和。

我们定义这棵树的直径为,所有满足 1≤i<jn 的  (i,j) 中, dis(i,j) 最大的。如果有多个这样的  (i,j),那么均为直径。

你需要构造一个恰有 k 个直径的树。可以证明在给定的限制下一定有解。

你构造的树需要保证 2≤n≤5000,且每条边的边权满足 50≤w≤10^5。

对于所有数据,满足 1≤k≤5000000。

Solution

构造题真是有意思…[然而本蒟蒻不会x]

构造一棵挂了三个菊花的图…

大概长这样?

我图画的还是好丑啊

我们要干一件事情我们使得每个菊花图内的每一个分叉都能和另一个菊花的任意一个分叉形成一条直径

这时候我们设左边那棵菊花的节点数为a,下面那棵的节点数为b,右边那棵的节点数为c

那么这个图的直径的数量就是ab+bc+ac

然后我们感性理解打表一下发现,a,b,c最大为1500的时候,就可以做出K的所有情况。

我好菜啊都不会构造

Code

  1. #include <bits/stdc++.h>  
  2. using namespace std;  
  3. int a,b,c,K;  
  4. int main()  
  5. {  
  6.     freopen("diameter.in","r",stdin);  
  7.     freopen("diameter.out","w",stdout);  
  8.     scanf("%d",&K);  
  9.     for (a=1;a<=1500;a++)  
  10.       for (b=a;b<=1500;b++)  
  11.         for (c=b;c<=1500;c++)  
  12.           if (a*b*1ll+b*c*1ll+a*c*1ll==K)  
  13.             goto sinian;  
  14.     a=b=c=-2;  
  15.     sinian:  
  16.     if (a==-2||K<=2000)  
  17.     {  
  18.         printf("%d\n",K+1);  
  19.         printf("1 2 2\n");  
  20.         for (int i=2;i<=K;i++)  
  21.           printf("%d %d 0\n",i,i+1);  
  22.     }  
  23.     else  
  24.     {  
  25.         printf("%d\n",a+b+c+1);  
  26.         printf("1 2 6666\n");  
  27.         printf("1 3 6666\n");  
  28.         printf("1 4 6666\n");  
  29.         --a;--b;--c;  
  30.         for (int i=5;i<a+5;i++)  
  31.           printf("2 %d 0\n",i);  
  32.         for (int i=a+5;i<a+b+5;i++)  
  33.           printf("3 %d 0\n",i);  
  34.         for (int i=a+b+5;i<a+b+c+5;i++)  
  35.           printf("4 %d 0\n",i);  
  36.     }  
  37.     return 0;  
  38. }  

FJWC2019 直径的更多相关文章

  1. fjwc2019 D2T1 直径 (构造)

    #181. 「2019冬令营提高组」直径 (这题构造题是我考场上唯一一A的题........) 先看这个特殊的Subtask4 Subtask 4(20pts):$\sqrt{1+8k}$​​​ 为整 ...

  2. DFS序+线段树 hihoCoder 1381 Little Y's Tree(树的连通块的直径和)

    题目链接 #1381 : Little Y's Tree 时间限制:24000ms 单点时限:4000ms 内存限制:512MB 描述 小Y有一棵n个节点的树,每条边都有正的边权. 小J有q个询问,每 ...

  3. 【bzoj3124】 Sdoi2013—直径

    http://www.lydsy.com/JudgeOnline/problem.php?id=3124 (题目链接) 题意 求树的直径以及直径的交. Solution 我的想法超麻烦,经供参考..思 ...

  4. poj2631 求树的直径裸题

    题目链接:http://poj.org/problem?id=2631 题意:给出一棵树的两边结点以及权重,就这条路上的最长路. 思路:求实求树的直径. 这里给出树的直径的证明: 主要是利用了反证法: ...

  5. PCB上过孔via钻孔的直径如何设置 是任意的吗 谈谈PCB钻孔工艺及规格

    PCB上过孔via钻孔的直径如何设置,是不是可以随便填入一个直径尺寸就行了?比如我的走线宽度是6mil,那我的via过孔直径也设置为6mil,节约布线空间岂不是更好?这样的设计板厂是否都能按照设计规格 ...

  6. codeforces 734E(DFS,树的直径(最长路))

    题目链接:http://codeforces.com/contest/734/problem/E 题意:有一棵黑白树,每次操作可以使一个同色连通块变色,问最少几次操作能使树变成全黑或全白. 思路:先进 ...

  7. poj1985 Cow Marathon (求树的直径)

    Cow Marathon Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 3195   Accepted: 1596 Case ...

  8. POJ1849Two[DP|树的直径](扩展HDU4003待办)

    Two Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 1390   Accepted: 701 Description Th ...

  9. VIJOS1476旅游规划[树形DP 树的直径]

    描述 W市的交通规划出现了重大问题,市政府下决心在全市的各大交通路口安排交通疏导员来疏导密集的车流.但由于人员不足,W市市长决定只在最需要安排人员的路口安放人员.具体说来,W市的交通网络十分简单,它包 ...

随机推荐

  1. qt4.8转qt5.4

    1.头文件包含    #include <QtGui/QProgressBar>    #include <QtGui/QProgressDialog>    #include ...

  2. Laravel 上传文件处理

    文件上传 获取上传的文件 可以使用 Illuminate\Http\Request 实例提供的 file 方法或者动态属性来访问上传文件, file 方法返回 Illuminate\Http\Uplo ...

  3. msys2 + clion安装所需的mingw64编译环境

    pacman -S mingw-w64-x86_64-toolchain 输出结果为: $ pacman -S mingw-w64-x86_64-toolchain:: 在组 mingw-w64-x8 ...

  4. Android布局属性说明

    Android布局LinearLayout注意设置属性android:orientation属性,否则有的组件可能无法显示. 该属性不设置时默认为horizontal.此时第一个控件的宽度若设置成“f ...

  5. 看图说说JVM GC收集算法

  6. 原型模式及C++实现

    以下是我自己学习设计模式的感想. 原型模式 学过C++的都知道拷贝构造函数,复制一个对象分为浅拷贝和深拷贝. 浅拷贝:就是给对象中的每个成员变量进行复制,就是把A1类中的变量直接赋给A2类中变量,属于 ...

  7. Spring 之 AOP

    面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化.AOP 的核心构造是方面, 它将那些影响多个类的行为封装到可重用的模块 ...

  8. 自定义Team Foundation Server (TFS) 与Project Professional的集成字段

    用户可以象使用Office Excel一样,使用Project Professional连接TFS,将数据下载到本地修改,并且发布到TFS服务器上,如果你习惯使用Project来计划你的项目,那么Pr ...

  9. CSS3 线性渐变linear-gradient

    CSS3 Gradient 分为 linear-gradient(线性渐变)和 radial-gradient(径 向渐变).为了更好的应用 CSS3 Gradient,需要先了解一下目前的几种现代浏 ...

  10. c#设计模式之观察者模式(Observer Pattern)

    场景出发 一个月高风黑的晚上,突然传来了尖锐的猫叫,宁静被彻底打破,狗开始吠了,大人醒了,婴儿哭了,小偷跑了 这个过程,如果用面向对象语言来描述,简单莫过于下: public class Cat { ...