zoukankan      html  css  js  c++  java
  • LOJ2803 CCC2018 平衡树 数论分块、记忆化搜索

    传送门


    题意差评,其实就是一个递推式:(f_1 = 1 , f_i = sumlimits_{j=2}^i f_{lfloor frac{i}{j} floor}),然后求(f_N)的值

    首先(lfloor frac{i}{j} floor)只有(2sqrt{i})种取值,这意味着每一次计算的关联量并不多

    而每一次只需要求一组数据的解,于是大力记忆化搜索一下就可以AC了

    PS:在Luogu AC此题有263分大礼包QAQ

    #include<bits/stdc++.h>
    #include<unordered_map>
    #define ll long long
    //This code is written by Itst
    using namespace std;
    
    unordered_map < int , ll > ans;
    
    ll solve(int x){
    	if(x == 1) return 1;
    	if(ans.find(x) != ans.end()) return ans[x];
    	ll sum = 0;
    	for(int i = 2 , pi ; i <= x ; i = pi + 1){
    		pi = x / (x / i);
    		sum += solve(x / i) * (pi - i + 1);
    	}
    	return ans[x] = sum;
    }
    
    int main(){
    #ifndef ONLINE_JUDGE
    	freopen("in","r",stdin);
    	//freopen("out","w",stdout);
    #endif
    	int N;
    	cin >> N;
    	cout << solve(N);
    	return 0;
    }
    
  • 相关阅读:
    python面试题目【转1】
    让python和C/C++联姻【转】
    python面试模拟真题讲解
    JavaScript真的要一统江湖了
    WebApp
    Linux服务器之SSH
    web服务之http
    SNMP简单网络管理协议
    Storm,Spark和Samza
    Stream computing
  • 原文地址:https://www.cnblogs.com/Itst/p/10450108.html
Copyright © 2011-2022 走看看