Cat Virus

Posted Jozky86

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;//特判情况,连一个右边 
    }
}

以上是关于Cat Virus的主要内容,如果未能解决你的问题,请参考以下文章

[bzoj1966][Ahoi2005][VIRUS 病毒检测] (字符串dp)

利用Python进行SEPM virus definition自动下载:代码实现

宏Virus

解决穿山甲Gromore广告在Oppo上报广告病毒Android.Virus.AdCheat.AdCut.A

解决穿山甲Gromore广告在Oppo上报广告病毒Android.Virus.AdCheat.AdCut.A

[Virus Analysis]恶意软件分析玩出花的批处理(中)