• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
scorpiorax
博客园    首页    新随笔    联系   管理    订阅  订阅
noip模拟ernd

【题目背景】
解决了第一题之后,你打开了第二题。
这是一道关于树的题目,你很快想出了一个复杂度和树的直径有关的算法,可以通
过所有的数据。
不过,你的做法常数似乎有点大。为了更好地卡常,你决定构造一些数据来检验自
己的程序。
【题目描述】
给定两个正整数n; k,你需要构造一棵n 个结点,并且有k 个叶子结点的无根树,
使得直径最短。此处「叶子」指度数为1 的结点。
结点编号分别为1 到n。
【输入格式】
从文件ernd.in 中读入数据。
一行两个正整数n; k,含义如题所述。
【输出格式】
输出到文件ernd.out 中。
输出n 􀀀 1 行,每行两个正整数u; v,表示结点u 和结点v 之间有一条无向边。
如果有多种方案,输出任意一种。
【样例1 输入】
5 3
【样例1 输出】
1 2
2 3
3 4
3 5

【子任务】
对于30% 的数据,n <= 10;
对于另外30% 的数据,k  <= 5;
对于100% 的数据,3 <= n  <=2 * 10^5; 2<=  k < n。

*****这真的是noipD1T1的水准,可惜我没看懂题啊,可以把他想成一个小刺猬,从里面扎到外面,一圈一圈的扎啊扎,有种荣嬷嬷的感觉。。。真奇怪

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<algorithm>
 5 using namespace std;
 6 int i,j,n,k;
 7 int main()
 8 {
 9     scanf("%d %d",&n,&k);
10     for(i = 2;i <= k + 1;i++)
11     {
12         printf("1 %d\n",i);
13     }
14     for(i;i <= n;i++)
15     {
16         printf("%d %d",i - k,i);
17         if(i != n)
18         printf("\n");
19     }
20     return 0;
21 }

 

posted on 2018-11-05 13:58  scorpiorax  阅读(271)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3