1 条题解

  • 1
    @ 2026-8-4 20:49:42

    单纯暴力递归会超时,这么搞就行了

    #include <iostream>
    using namespace std;
    const int MAXN = 1005;
    long long f[MAXN];
    
    long long dfs(int a){
    	if(f[a] != -1) return f[a];
    	int b = a / 2;
    	long long res = 0;
    	for(int i = 1; i <= b; i++){
    		res += 1 + dfs(i);
    	}
    	return f[a] = res;
    }
    
    int main(){
    	int n;
    	cin >> n;
    	for(int i = 0; i < MAXN; i++) f[i] = -1;
    	cout << dfs(n)+1 << endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    5150
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    165
    已通过
    80
    上传者