蓝桥杯-算法赛第9场强者:贝贝的2.0

题意:n个节点的有根树,问孩子节点最少是多少,可以满足任意两条长度为k的链有公共节点。

思路:一开始想的是以根为中间点,然后构造边。但是发现样例过不了,样例说的很清楚,根节点也作为一个叶子节点去构造,然后把叶子节点作为中间点(这样可以省去一个叶子节点的计数)。最后就是如何处理的问题,如果刚好k 整除 n - 1,那么答案就是(n - 1) / k - 1。如果不能整除,那就要向上取个整。

总结:太久没刷思维题了,有点抽象,难。

void solve(){
    long long n, k;
    cin >> n >> k;

    if (n - 1 <= k){
        cout << 1 << '\n';
    }
    else if ((n - 1) % k == 0){
        cout << (n - 1) / k - 1 << '\n';
    }
    else{
        cout << (n - 1) / k << '\n';
    }
}
posted @   _Yxc  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示