AtCoder Beginner Contest 340C - Divide and Divide

problem link

Naively, a brute force recursion solution be implemented with O ( n ) \mathcal O (n) O(n) complexity.

复制代码
int work(int x)
{
	if(x==1)return 0;
	return x+work(x>>1)+work((x>>1)+(x&1))
}

However, since all possible x x x can be represented as n ⋅ 2 − k + [ 0 / 1 ] n\cdot 2^{-k}+[0/1] n⋅2−k+[0/1], the number of possible x x x does not exceed 2 ⋅ log ⁡ 2 ( n ) 2\cdot \log_2(n) 2⋅log2(n)

Then, we can intuitively implement a memorization search with map.

cpp 复制代码
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
map <long long,long long> f;
long long n,ans;
long long work(long long x)
{
	if(x==1)return 0;
	if(f[x])return f[x];
	return f[x]=x+work(x>>1)+work((x>>1)+(x&1));
}
int main()
{
	cin>>n;
	cout<<work(n)<<endl;
	return 0;
}
相关推荐
强盛小灵通专卖员5 分钟前
基于深度学习RT-DETR算法的盲人障碍物目标检测:提升盲人出行安全的智能化突破
深度学习·算法·目标检测·计算机视觉·rt-detr·小论文·计算机期刊
我不是小upper1 小时前
统计学核心概念与现实应用精解(偏机器学习)
算法·机器学习·统计学
Renlijuande1 小时前
百度之星2021——BD202104 萌新
算法
黑牛先生2 小时前
【数据结构】图算法(代码)
数据结构·算法
tt5555555555552 小时前
C++ 标准模板库(STL)详解文档
数据结构·c++·算法
Moonbit2 小时前
MoonBit Pearls Vol.01:使用MoonBit编写Pratt解析器
算法
jndingxin2 小时前
c++面试题(2)-----计算一个数字的二进制数中1的个数
c++·算法
谢耳朵(wer~wer~)2 小时前
AcWing--数据结构1
数据结构·c++·算法
灯笼只能来教室体验生活2 小时前
蓝桥杯 2024 15届国赛 A组 儿童节快乐
算法
智驱力人工智能2 小时前
雨季智慧交通:从车辆盲区到客流统计的算法全覆盖
人工智能·科技·算法·安全·智慧城市·智慧交通·渣土车识别