作业介绍
#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 小时