YbtOJ#20068-[NOIP2020模拟赛B组Day5]连通子图【构造】
生活随笔
收集整理的這篇文章主要介紹了
YbtOJ#20068-[NOIP2020模拟赛B组Day5]连通子图【构造】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
題目鏈接:http://noip.ybtoj.com.cn/contest/102/problem/2
題目大意
求構造一個包含根節點的聯通子圖kkk個的樹。
解題思路
現在考慮一棵樹,如果我們在根節點處加一個點,那么方案數會×2\times 2×2。如果在根節點上加入一個父節點(根會轉移上去),那么方案數會+1+1+1。這樣點數是log?\loglog級別的,能夠通過本題。
codecodecode
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct node{int x,y; }a[1100]; int n,last,cnt,tot; int main() { // freopen("b.in","r",stdin); // freopen("b.out","w",stdout);while(scanf("%d",&n)!=EOF){last=cnt=1;tot=0;while(n>1){if(n&1)a[++tot]=(node){last,++cnt},n--,last=cnt;else a[++tot]=(node){last,++cnt},n/=2;}printf("%d\n",cnt);for(int i=1;i<=tot;i++)printf("%d %d\n",a[i].x,a[i].y);} }總結
以上是生活随笔為你收集整理的YbtOJ#20068-[NOIP2020模拟赛B组Day5]连通子图【构造】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: YbtOJ#20070-[NOIP202
- 下一篇: CF401C-Team【构造】