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

Posted 早知如此绊人心,何如当初莫相识。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals)D. High Load相关的知识,希望对你有一定的参考价值。

题意:出n个点,其中k个叶子节点,问构造出的树最远的两个点最近是多少

思路:以一个点为中心,然后m个伸出,一层层扩散,(n-1)%m==k,如果k==0,即可以平分,长度就是2*(n-1)/m,如果取模为k==1,说明多出一个,+1,其他的话,就是最后一层补k个,但是最长的还是+2

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main(){
 5     int n,m;
 6     cin>>n>>m;
 7     int sum;
 8     if((n-1)%m==0) sum=(n-1)/m*2;
 9     else if((n-1)%m==1) sum=(n-1)/m*2+1;
10     else sum=(n-1)/m*2+2;
11     cout<<sum<<endl;
12     for(int i=2;i<=m+1;i++) {
13       printf("1 %d\n",i);
14     }
15     for(int i=m+2;i<=n;i++){
16         printf("%d %d\n",i,i-m);
17     }
18     return 0;
19 }

 

以上是关于Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals)D. High Load的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #423 (Div. 2) A-C

Codeforces Round #423(div 2)

Codeforces Round #423 (Div. 2) C 思维,并查集 或 线段树 D 树构造,水

Codeforces Round #423 (Div. 2)A B C D

Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) Problem A - B

Codeforces Round #423 Div. 2 C-String Reconstruction(思维)