Cat Virus
Cat Virus
題意:
讓你構造一顆樹,要求如果一個點為黑,其子樹全為黑,白點任意,現在讓你構造一棵樹,使其染色方案數為K,節點盡可能少
題解:
首先畫出k<=9的全部情況,并找規律
我們發現,如果k為奇數,則根節點左連一個點,右連一個點,然后K除以2,如果k為偶數,右側連一個點,使得k-1,這樣k又為奇數,一直循環
當k=3時記得特判
u1s1,想不到。。比賽時真的沒想到
代碼:
#include<bits/stdc++.h> using namespace std; typedef long long LL; LL k; int main(){cin>>k;LL fa=1,id=1,tmp=k,cnt=1;while(tmp>3){if(tmp&1){tmp/=2;cnt+=2;}else{tmp--;cnt++;}}if(tmp==3) cnt++;//多加一個點 cout<<cnt<<endl;while(k>3){if(k&1){//奇數 k/=2;id++;cout<<fa<<" "<<id<<endl;//左 id++;cout<<fa<<" "<<id<<endl;//右 fa=id;}else{//奇數 k--;id++; cout<<fa<<" "<<id<<endl;//右邊 fa=id;}}if(k==3){id++;cout<<fa<<" "<<id<<endl;//特判情況,連一個右邊 } }總結
- 上一篇: 悲伤qq个性签名
- 下一篇: C. The Sports Festiv