Cat Virus
Posted Jozky86
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;//特判情况,连一个右边
}
}
以上是关于Cat Virus的主要内容,如果未能解决你的问题,请参考以下文章
[bzoj1966][Ahoi2005][VIRUS 病毒检测] (字符串dp)
利用Python进行SEPM virus definition自动下载:代码实现
解决穿山甲Gromore广告在Oppo上报广告病毒Android.Virus.AdCheat.AdCut.A