Codeforces Round #423 D. High Load
来源:互联网 发布:啊沁的淘宝店 编辑:程序博客网 时间:2024/06/01 10:00
Problem
要求构造 n 个点树,使得叶子节点仅有 k 个,同时树的直径尽可能短。输出最短树的直径,及构造方案。
限制条件
解法
特判非叶子节点数为 1, 2 的情况。
以任意一点为根 R,叶子节点数为 k ,即表示根 R 可以连接 k 条链。使得树直径最小即使得每条链的长度平均。此时的最长链长+最短链长为树的直径。
代码
#include<bits/stdc++.h>using namespace std;int fa[200010];int main(){ int n, k, o; scanf("%d %d", &n, &k); o = n-k; if(o == 1) { printf("2\n"); for(int i=2;i<=n;i++) printf("1 %d\n", i); } else if(o == 2) { printf("3\n2 3\n1 2\n"); for(int i=4;i<=n;i++) printf("1 %d\n", i); } else { o--; int level = o/k*2+2; if(o%k >= 2) level += 2; else if(o%k==1) level++; printf("%d\n", level); for(int i=2;i<=n;i++) printf("%d %d\n", max(i-k, 1), i); }}
阅读全文
0 0
- Codeforces Round #423 D. High Load
- Codeforces Round #423 D. High Load
- Codeforces Round #423 (Div. 2) D. High Load
- Codeforces Round #423 (Div. 2) C. String Reconstruction思维 D. High Load 构造
- Codeforces Round #423 (Div. 2) D High Load 贪心,树
- Codeforces 828 D High Load
- codeforces 423 D. High Load 构造一个思维的树
- Codeforces 828 D. High Load 思维+构造
- Codeforces 828D High Load (构造)
- CF Round #423 Div. 2 C. String Reconstruction D. High Load 【思维】
- Codeforces828 D. High Load
- High Load CodeForces
- Codeforces 828D High Load【贪心+求树的最长链】
- CodeForces 828D High Road
- Codeforces 875D High Cry
- Codeforces Round #441 (Div. 1, by Moscow Team Olympiad) D. High Cry
- Codeforces 827B. High Load 【构造】
- Codeforces Round#213D
- SQL SERVER 2008导出excel时注意事项
- 《无人机通信与导航技术》札记
- Git的常用命令
- 同步和异步
- 聚合支付相关文章
- Codeforces Round #423 D. High Load
- Android NDK开发相关知识集合
- makefile学习笔记
- 2017华为提前批任务的顺序打印
- Codeforces Round #423 C. String Reconstruction
- HDU
- JDBC连接数据库的BaseDao
- Lisenter
- 如何允许匿名用户访问某些给定页面的MVC?