这两道算法题怎么解答呢
1.N个路灯挂M个灯笼,要求距离最近的两个灯笼距离尽可能大,求灯笼间最大距离,f(d):最近两个灯笼距离不小于d,若存在一种灯笼布置方案,使最近两灯笼距离不小于d,则f(d)=1,否则f(d)=0,讨论f(d)单调性,设计算法,文字说明算法该算法思路,解释算法正确性,给出时间复杂度。
2.算法大题:类似于矩阵链相乘,题干是描述干掉N头狼,每头狼有自己的攻击力a[i]和给相邻两匹狼的不同的攻击力增益BUFF b[i],每当消灭一头狼的同时要受到其攻击力和所受增益Buff,求消灭所有狼的最小代价。代码填空,
五个空十分。1.初始化dp数组对角线dp[i][i]=?。2.第一个for循环条件range_len。3.第二个for循环条件left和right。4.dp转移方程dp[left][right]=min(?)。5.return 什么。
//边界状态填写
for (int i=1;i<=N;i++){
dp[i][i]=(1);
}
//状态转移部分
int range_len
for ((2)){
int left;
int right;
for ((3)){
dp[left][right]=inf;
for ( int k=1; k<=right; k++){
//状态转移方程
dp[left][right]=min((4))
//返回正确答案
ans=(5)____;