Ссылка на заголовок: 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;
}