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;
}
相关推荐
历程里程碑1 分钟前
21:重谈重定义理解一切皆“文件“及缓存区
linux·c语言·开发语言·数据结构·c++·算法·缓存
2501_901147834 分钟前
PyTorch DDP官方文档学习笔记(核心干货版)
pytorch·笔记·学习·算法·面试
Daydream.V6 分钟前
决策树三中分类标准
算法·决策树·分类
闲人不梦卿15 分钟前
数据结构之排序方法
数据结构·算法·排序算法
TracyCoder12316 分钟前
LeetCode Hot100(24/100)——21. 合并两个有序链表
算法·leetcode·链表
power 雀儿18 分钟前
前馈网络+层归一化
人工智能·算法
爱吃rabbit的mq21 分钟前
第10章:支持向量机:找到最佳边界
算法·机器学习·支持向量机
木非哲24 分钟前
AB实验高级必修课(四):逻辑回归的“马甲”、AUC的概率本质与阈值博弈
算法·机器学习·逻辑回归·abtest
兩尛35 分钟前
45. 跳跃游戏 II
c++·算法·游戏
执风挽^1 小时前
Python_func_basic
开发语言·python·算法·visual studio code