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;
}
相关推荐
virtual_k1smet1 小时前
#等价于e * d ≡ 1 mod φ(n) #模逆元详解
人工智能·算法·机器学习
可触的未来,发芽的智生2 小时前
新奇特:神经网络的集团作战思维,权重共享层的智慧
人工智能·python·神经网络·算法·架构
_屈臣_2 小时前
卡特兰数【模板】(四个公式模板)
c++·算法
坚持编程的菜鸟3 小时前
LeetCode每日一题——交替合并字符串
c语言·算法·leetcode
悦悦子a啊3 小时前
[Java]PTA: jmu-Java-02基本语法-08-ArrayList入门
java·开发语言·算法
xlq223224 小时前
12.排序(上)
数据结构·算法·排序算法
努力学习的小廉4 小时前
我爱学算法之—— 分治-快排
c++·算法
未知陨落4 小时前
LeetCode:77.买卖股票的最佳时机
算法·leetcode
DeeGLMath4 小时前
排序算法的并行加速实现
算法·排序算法·joblib·sortingx
机器学习之心5 小时前
量子遗传算法是一种将量子计算原理与遗传算法相结合的智能优化算法,代表了进化计算的一个有趣分支
算法·量子计算