#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. Wix制作安装包

    Wix制作安装包,找起资料来很费劲,记录一下: Product.wxs,该文件只能制作出msi形式的安装包,不能做到自动检测framework. <?xml version="1.0& ...

  2. PHP Fatal error: Uncaught ErrorException: preg_match_all (): JIT compilation failed: no more memory in phar

    PHP 升级到 7.3 后,出现 BUG: 解决办法:修改php.ini文件,;pcre.jit=1 =>  pcre.jit=0

  3. php 获取 mime type 类型,fileinfo扩展

    背景: version < php-5.3 没有API能够查看文件的 mime_type, 故需要编译扩展 fileinfo 来扩展PHP的API(finfo_*系列函数).php-5.3 以后 ...

  4. andorid CmakeLists

    # cmake要求低版本 cmake_minimum_required(VERSION 3.4.1) # Creates and names a library, sets it as either ...

  5. cocos2dx 3.x(加载网络自定义头像)

    // //  Connection.h //  XXDemo // //  Created by LeeHonGee on 14-9-4. // // #ifndef __XXDemo__Connec ...

  6. sqli-labs(四)

    第七关: 输入?id=1 页面显示如下,可以看出这关大概是锻炼利用sql来写入一句话木马. 这里说我下我的探测流程(主要是为了知道后台的sql是怎样拼凑的): 输入?id=1' 报错  说明后台是用的 ...

  7. rsync+inotify磁盘数据实时同步

    一.rsync+inotify主服务器部署 1.1安装rsync [root@nginx ~]# cd /usr/src/ [root@nginx src]# tar zxvf rsync-3.0.9 ...

  8. Ireport第一张web项目报表。

    原先项目里面的统计分析报表都是和普通的系统页面一样开发的,SSM架构,从数据库一层一层往前面传数据,最后通过jsp表现出来,这次在领导的建议下使用IReport进行报表开发,果然还是要使用工具啊,社会 ...

  9. jar包的读取1

    ---恢复内容开始--- 昨天在做项目插件的时候,因为会用到jar包中的一个文件来初始化程序.并且以后还是会访问这个文件,所以就想到干脆吧文件拷贝到指定目录.在拷贝的时候也费了好一会时间,这里涉及到了 ...

  10. RocketMQ的使用

    1 在resources目录下创建config目录,新建文件rocketmq.properties文件 # 指定namesrv地址 suning.rocketmq.namesrvAddr=localh ...