2019.10.21刷题统计

今天是在结束初赛后的第二天,也是我正式开始冲刺复赛的第一天。

进入冲刺网站后的第一个任务是办完DP的题。

第一题:1239

这道题中提示已经非常充足了,但正是因为提示,我缺少了自己的思考(完全照提示的公式抄),导致多次错误。最终还是解决了这道题。

AC代码:

 

第二题:1240

这道题也是给出了公式,套上原来模板(1238就相当于一个模板)即可。

理论上记忆化搜索与普通DP时间复杂度相同,但实际上记忆化搜索会超时(不能相信提示)。

超时代码:

 AC代码:

 第三题:1241

这道题下面提示没给公式,但做完1238-1240三道题后,我已经可以在不看提示的情况下写出公式来了。

如果设a[i]为第i颗珠子的头标记,a[i+1]为其尾标记,同时也是第i+1颗珠子的头标记,

f[i][j]为将i到j合并成一颗珠子所获得的能量,

则f[i][j]=f[i][k]+f[k+1][j]+a[i]*a[j+1]*a[k+1],其中i≤k<j。

破环为链后a[i+n]=a[i],求的是f[i][i+n-1],其中1≤i≤n。

AC代码:

 第四题:1242

前面的题目都是复杂度为O(n3)的区间DP,这道题却是一个线性DP。

我的思路:

设f[i][j]表示电线杆i的高度为j时前i根电线杆的建设最少需要消耗的钱数,h表示最高的电线杆的高度

则f[i][j]=min(f[i][j],f[i-1][k]+(j-h[i])2+c*abs(j-k)),其中h[i-1]≤k≤h

边界条件:f[1][h[1]]=0,f[1][h[1]+n]=n2

时间复杂度:

外循环按顺序枚举每一根电线杆O(n),第二层循环枚举第i根的高度O(h),第三层循环分别使用第i-1根的h种高度更新第i根的钱数O(h),时间复杂度为O(nh2)。

在这道题中O(nh2)的时间复杂度相当于1010级别,理论上通过不了。但由于数据太水还是通过了。

代码:

猜你喜欢

转载自www.cnblogs.com/wangximing/p/11716826.html