fjwc2019 D2T1 直径 (构造)
(这题构造题是我考场上唯一一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 直径 (构造)的更多相关文章
- [AGC005C]Tree Restoring 构造
Description 给出一个数组a,要求构造一颗树,使节点x距离最远的点的距离为\(a_x\). Input 第一行一个正整数NN(2≤N≤1002≤N≤100) 接下来一行,有NN个 ...
- matlab练习程序(Ritter‘s最小包围圆)
原始算法是sphere,我这里简化为circle了. Ritter's求最小包围圆为线性算法,因为非常简单,所以应用非常广泛. 该算法求出的圆比最优圆大概会大个5%到20%左右,求最优圆应该可以用Bo ...
- AtCoder - 2061 Tree Restoring
Problem Statement Aoki loves numerical sequences and trees. One day, Takahashi gave him an integer s ...
- autocad 二次开发 最小包围圆算法
autocad 二次开发 最小包围圆算法 主要实现了在模型空间下的得到一个包围所有图元的最小圆,该算法的思路是这样:1.从点集中随机选出两个点作为直径对圆进行初始化.2.判断下一个点p是否在圆中,如果 ...
- FJWC2019 直径
题目描述 你需要构造一棵至少有两个顶点的树,树上的每条边有一个非负整数边权.树上两点 i,j 的距离dis(i,j) 定义为树上连接i 和j 这两点的简单路径上的边权和. 我们定义这棵树的直径为,所有 ...
- 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 ...
- uoj#283. 直径拆除鸡(构造)
传送门 好神的构造题 vfk巨巨的题解 //minamoto #include<bits/stdc++.h> #define R register #define fp(i,a,b) fo ...
- Codeforces 1082D Maximum Diameter Graph (贪心构造)
<题目链接> 题目大意:给你一些点的最大度数,让你构造一张图,使得该图的直径最长,输出对应直径以及所有的边. 解题分析:一道比较暴力的构造题,首先,我们贪心的想,要使图的直径最长,肯定是尽 ...
- 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 ...
随机推荐
- crontab-rsync
写一个shell脚本放到crontab中,该脚本利用rsync把远程同步到本地的话,需要把本地的公钥放到远程的authorized_keys:否则,手动执行脚本没问题,但是crontab执行就不会有效 ...
- JS发送短信验证码
<div> <input type="tel" id="mobile" name="mobile" placeholder ...
- ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeeper create failed after 4 attempts
ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeeper create failed after 4 attempts ERROR [main] m ...
- Hybrid设计--账号体系的建设
前后端分离:开发效率高,没有SEO 现在是重客户端设计:交互和业务逻辑是前端来写,适合做前后端分离.对前端更友好,提高了效率. 传统模式开发:整个业务逻辑是server端写,不适合做前后端分离.ser ...
- linux 编译 'aclocal-1.14' is missing on your system
centos编译出现:类似情况: $tar -xvf libpcap-1.0.0.tar.gz $cd libpcap-1.0.0.tar.gz $./configure ...
- Dart- move html element
今天给出一个例程,像是个小游戏!哈哈 一 html //anagram.html <!DOCTYPE HTML> <html> <head> <title&g ...
- unity3d连接Sqlite并打包发布Android
连接Sqlite首先要把dll程序集导入到unity3d工程里面.安装好的unity中可以找到
- Oracle如何重启mmon/mmnl进程(AWR自动采集)
环境:Oracle 11.2.0.4 RAC 现象:sysaux空间满导致无法正常生成快照,清理空间后,手工生成快照可以成功,但是观察自动生成快照依然是不成功. 之前了解到awr对应的相关后台进程是m ...
- mybatis之接口绑定
接口绑定方案 mybatis中,提供了一套接口绑定方案,程序员可以提供一个接口,然后提供对应接口的一个mapper.xml文件.MyBatis会自动将接口和xml文件进行绑定.实际上就是mybatis ...
- fang99-三号线与四号线新盘
三号线与四号线新盘 http://www.fang99.com/buycenter/buildingsearch_map.aspx?projectid=0000011104 http://www.fa ...