zcmu1374: Величайшая армия Наруто (рекурсивная)

Ссылка на заголовок: https://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=1374

Тема

Теневой клон ниндзя. У ниндзя есть n-точечные чакры. Когда количество чакр превышает 1, они могут создавать теневые клоны, создавать фантомы и разделять их на аи-точечные чакры, оставляя двухточечные чакры, и в то же время повышать показатель утомляемости тела | ai -bi |, фантом И субъект может продолжать тень клона, пока количество чакр не станет равным 1. Спросите наименьшее значение усталости для большинства фантомов и найдите минимальное значение усталости.

Диапазон: (0 <N <1e7)

Идеи

dfs решается рекурсивно. Во-первых, у него n-1 фантомов. Это несомненно. Теперь нам нужно уменьшить значение утомляемости, затем уменьшить | ai-bi |, а затем, когда n - четное число, приравнивание ai к n / 2 может увеличить значение усталости на 0. Если n нечетное, сделайте ai равным n / 2, но значение усталости увеличится на 1. Поскольку фантом также можно продолжать клонировать, его можно решить рекурсивно.

код переменного тока

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int dfs(int n){
    if(n <= 2) return 0;
    if(n % 2 == 0) return dfs(n / 2) + dfs(n / 2);
    else return dfs(n / 2) + dfs(n / 2 + 1) + 1;
}
int main(){
    int t; scanf("%d", &t);
    while(t --){
        int n; scanf("%d", &n);
        printf("%d\n", dfs(n));
    }
    return 0;
}

 

рекомендация

отblog.csdn.net/weixin_43911947/article/details/113405763