知识点:构造、思维。
题目链接: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 ",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<<" "; 15 x=y; 16 } 17 } 18 } 19 return 0; 20 }