The 2019 ICPC Asia Shanghai Regional Contest-C-Spanning Tree Removal

知识点:构造、思维。

题目链接:https://ac.nowcoder.com/acm/contest/4370/D

题意:n点完全图,每次可以删除一个生成树的边,问最多可以删几次,并构造出其中一种。

题解:给出一种删边方式可以尽可能多次的删除:第i次:从i开始。依次删除i-(i+1)-(i-1)-(i+2)-(i-2)-…… 直到连接完所有点为止。总共可以删除n/2次。

AC代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main(){
 5     int t;
 6     cin>>t;
 7     for(int cas=1;cas<=t;cas++){
 8         int n;
 9         cin>>n;
10         printf("Case #%d: %d\n",cas,n/2);
11         for(int i=0;i<n/2;i++){
12             for(int j=1,f=1,x=i;j<=n-1;j++,f=-f){
13                 int y=(x+j*f+n)%n;
14                 cout<<x+1<<" "<<y+1<<"\n";
15                 x=y;
16             }
17         }
18     }
19     return 0;
20 }

猜你喜欢

转载自www.cnblogs.com/charles1999/p/12346684.html