#181. 「2019冬令营提高组」直径

(这题构造题是我考场上唯一一A的题........)

先看这个特殊的Subtask4

Subtask 4(20pts):$\sqrt{1+8k}$​​​ 为整数。

画了几张图,你轻松地发现这是菊花图。

大概就是这样↓

我们暂且设红点的个数为$k$表示菊花树的大小。

显然一棵菊花树的直径数为$k*(k-1)/2$

接下来我们试着以若干棵菊花图的形式构图。

当我们把两棵大小为(a,b)的菊花树连在一起时,

40pts到手

但是对于某些数(如一些大质数),两棵显然是不够的鸭

那么开三棵叭

ans=k1*(k2+k3)+k2*k3,于是我们可以枚举其中两棵子树,推出剩下一棵是否符合条件。

打个code发现3棵树满足的范围远远超过5000000,瞎搞搞就解决了

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int k,ans,tp,A,B,C,cnt; bool ok;
int main(){
freopen("diameter.in","r",stdin);
freopen("diameter.out","w",stdout);
scanf("%d",&k);
if(k==){printf("2\n1 2 1\n");return ;}
int sq=sqrt(*k+);
if(sq*sq==*k+){
for(int i=sqrt(*k);i*(i-)<=*k;++i)
if(i*(i-)==*k){ans=i+;break;}
printf("%d\n",ans);
for(int i=;i<=ans;++i) printf("1 %d 1\n",i);
return ;
}//subtask 4
if(k<=){
ans=k+;
printf("%d\n",ans);
printf("1 2 233\n");
for(int i=;i<=ans;++i) printf("1 %d 1\n",i);
return ;
}//subtask 1,2
for(A=;A<=;++A){
for(B=A;B<=;++B){
int qwq=k-A*B;
if(qwq<) continue;
if(qwq%(A+B)!=) continue;
C=qwq/(A+B);
if(C<) continue;
if(A+B+C+<=){ok=;break;}
}
if(ok)break;
}
ans=A+B+C+; cnt=;
printf("%d\n",ans);
for(int i=;i<=;++i) ++cnt,printf("1 %d 233\n",cnt);
for(int i=;i<=A;++i) ++cnt,printf("2 %d 1\n",cnt);
for(int i=;i<=B;++i) ++cnt,printf("3 %d 1\n",cnt);
for(int i=;i<=C;++i) ++cnt,printf("4 %d 1\n",cnt);
return ;
}

fjwc2019 D2T1 直径 (构造)的更多相关文章

  1. [AGC005C]Tree Restoring 构造

    Description ​ 给出一个数组a,要求构造一颗树,使节点x距离最远的点的距离为\(a_x\). Input ​ 第一行一个正整数NN(2≤N≤1002≤N≤100) ​ 接下来一行,有NN个 ...

  2. matlab练习程序(Ritter‘s最小包围圆)

    原始算法是sphere,我这里简化为circle了. Ritter's求最小包围圆为线性算法,因为非常简单,所以应用非常广泛. 该算法求出的圆比最优圆大概会大个5%到20%左右,求最优圆应该可以用Bo ...

  3. AtCoder - 2061 Tree Restoring

    Problem Statement Aoki loves numerical sequences and trees. One day, Takahashi gave him an integer s ...

  4. autocad 二次开发 最小包围圆算法

    autocad 二次开发 最小包围圆算法 主要实现了在模型空间下的得到一个包围所有图元的最小圆,该算法的思路是这样:1.从点集中随机选出两个点作为直径对圆进行初始化.2.判断下一个点p是否在圆中,如果 ...

  5. FJWC2019 直径

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

  6. Codeforces 1082 D. Maximum Diameter Graph-树的直径-最长链-构造题 (Educational Codeforces Round 55 (Rated for Div. 2))

    D. Maximum Diameter Graph time limit per test 2 seconds memory limit per test 256 megabytes input st ...

  7. uoj#283. 直径拆除鸡(构造)

    传送门 好神的构造题 vfk巨巨的题解 //minamoto #include<bits/stdc++.h> #define R register #define fp(i,a,b) fo ...

  8. Codeforces 1082D Maximum Diameter Graph (贪心构造)

    <题目链接> 题目大意:给你一些点的最大度数,让你构造一张图,使得该图的直径最长,输出对应直径以及所有的边. 解题分析:一道比较暴力的构造题,首先,我们贪心的想,要使图的直径最长,肯定是尽 ...

  9. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) D. High Load 构造

    D. High Load 题目连接: http://codeforces.com/contest/828/problem/D Description Arkady needs your help ag ...

随机推荐

  1. android SDK打包app

    SDK  软件开发工具包(Software Development Kit) JDK  开发工具包(Java Developer's Kit) 1.搜索java jdk 进入官网 http://www ...

  2. C++ 退出双层for循环,解决 break、return、continue无法实现问题

    遇到一个情景,采用双层for循环 遍历图像的像素,当找到某一个像素点满足条件时,退出双层for 循环 . 首先了解一下 continue.break.return 各自功能用法: 1.continue ...

  3. 使用Pytorch进行图像分类,AI challenger 农作物病害分类竞赛源码解读

    1.首先对给的数据进行划分,类型为每个类单独放在一个文件夹中 import json import shutil import os from glob import glob from tqdm i ...

  4. WebSocket.之.基础入门-前端发送消息

    WebSocket.之.基础入门-前端发送消息 在<WebSocket.之.基础入门-建立连接>的代码基础之上,进行添加代码.代码只改动了:TestSocket.java 和 index. ...

  5. C#6.0中10大新特性的应用和总结

    微软发布C#6.0.VS2015等系列产品也有一段时间了,但是网上的教程却不多,这里真对C#6.0给大家做了一些示例,分享给大家.   微软于2015年7月21日发布了Visual Studio 20 ...

  6. spark-shell下有提示了,但是发现不能退格

    配好了Spark集群后,先用pyspark写了两个小例子,但是发现Tab键没有提示,于是打算转到scala上试试,在spark-shell下有提示了,但是发现不能退格,而且提示也不是复写,而是追加,这 ...

  7. ruby中的alias和alias_method

    ruby中的alias和alias_method都可以重命名一个方法,它们的区别如下: 1.alias是ruby的一个关键字,因此使用的时候是alias :newname :oldname alias ...

  8. hdu5371 manacher + 线段树

    这题说的找出一个数组串 3等分 第一个部分和第3个部分一样,第二个部分和第一个部分回文,那么计算出这些字符串问这样的字符串最长为多少,我们先使用manacher 计算出每个位置以他为对称轴左边端点的最 ...

  9. sitecore系列教程之Sitecore个性化-试点开始,测试,优化,增量

    这是利用Sitecore的个性化引擎实现数字化转型的三部分系列的第三部分.之前的帖子旨在通过为您的个性化体验定义内容策略并在Sitecore中配置该策略来设置基础.   在此之前,我们讨论了内容策略以 ...

  10. C#之Action的实际应用例子

    public class DemoAction{ public Action action; public Action<int> action1; public Action<in ...