本文包括两个算法题目及解答: 学习小组题目:使用动态规划求解最优值,代码通过比较前i项的dp值计算当前最优解; 最大因数挑战:通过计算两个数到共同祖先的跳转次数来求解LCA(最近公共祖先),代码实现因数跳转和计数逻辑。两题均采用C++建立,展示基础算法应用。
一、学习小组
题目描述
输入格式
输出格式
样例
说明
思路
代码
#include
using namespace std;
using ll=long long;
int n,a[1010],dp[1010];
int main(){
cin>>n;
for(int i=1;i>a[i];
dp[1]=a[1];
for(int i=2;i=0;j--){
dp[i]=max(dp[i],dp[j]+a[i-j]);
}
}
cout<
二、最大因数
闲话:这题在场上没憋出来,还是我太菜了啊……
题目描述
![]()
输入格式
![]()
输出格式
![]()
样例
![]()
说明
思路
![]()
![]()
代码
#include
using namespace std;
int jump(int x)
{
for (int i = 2; i > q;
while (q--)
{
int l, r;
cin >> l >> r;
cout << lca(l, r) << "\n";
}
}
int main()
{
solve();
return 0;
}