作业介绍

#include <bits/stdc++.h>
using namespace std;

int dfs(int x) {
	int cnt = 1;
	for (int i = 1; i <= x / 2; ++i) {
		cnt += dfs(i);
	}
	return cnt;
}

int main() {
	int n;
	cin >> n;
	cout << dfs(n);
	return 0;
}
#include <bits/stdc++.h>
using namespace std;

const int N = 1e6 + 5;

int dp[N];

int main() {
	int n;
	cin >> n;
	dp[1] = 0;
	for (int i = 2; i <= n; ++i) {
		if (i % 2) {
			dp[i] = dp[i - 1] + 1;
		} else {
			dp[i] = min(dp[i - 1], dp[i / 2]) + 1;
		}
	}
	cout << dp[n] << endl;
	return 0;
}
//by kivi 2026.10.05 最长上升子序列LIS模板
#include <bits/stdc++.h>
using namespace std;

const int N = 5005;
//dp[i]表示到当前位置能找到的最长上升子序列的长度
int dp[N], a[N], n;

int LIS() {
	for (int i = 1; i <= n; ++i) {
		for (int j = 0; j < i; j++) {
			if (a[j] < a[i])
				dp[i] = max(dp[i], dp[j] + 1);
		}
	}
	int ans = 1;
	for (int i = 1; i <= n; i++) {
		ans = max(ans, dp[i]);
	}
	return ans;
}

int main() {
	cin >> n;
	for (int i = 1; i <= n; ++i)
		cin >> a[i];
	cout << LIS();
	return 0;
}

题目

认领作业后才可以查看作业内容。
状态
正在进行…
题目
10
开始时间
2026-10-5 0:00
截止时间
2026-10-13 23:59
可延期
24 小时