题目传送门
//其实并不知道题面什么意思,只不过一学弟写了8次全WA了…我就是来测测数据…
貌似最短路,实际DAG图,DP即可。
很容易想到DP方程式是:
d
p
[
i
]
=
max
(
d
p
[
j
]
)
+
i
c
e
[
i
]
j
∈
[
i
−
R
,
i
−
L
]
dp[i]=\max(dp[j])+ice[i] \ \ \ \ j \in [i-R,i-L]
dp[i]=max(dp[j])+ice[i] j∈[i−R,i−L]
因为
L
L
L和
R
R
R都很大,纯暴力转移的话复杂度为
O
(
n
2
)
O(n^2)
O(n2)。会超时…
噫他为什么没超时?
所以可以优化转移过程。
因为每次都是从一个区间取最大值,这个过程可以用线段树优化,时间复杂度
O
(
n
log
2
n
)
O(n\log_2 n)
O(nlog2n)。
还有是范围问题,题目坑爹说过只要大于
n
n
n就可以算作过了河,所以答案区间为
[
n
+
1
,
n
+
R
+
1
]
[n+1,n+R+1]
[n+1,n+R+1],转移时
d
p
[
0..
L
−
1
]
dp[0..L-1]
dp[0..L−1]都为
0
0
0,因为这一区间没办法转移,对于
d
p
[
L
.
.
R
]
dp[L..R]
dp[L..R]的转移也要注意范围问题,防止越界。
假如说要做到更快,有单调队列的做法…这个是
O
(
n
)
O(n)
O(n)的。
既然这题不卡到
1
0
6
10^6
106就不用单调队列了吧…
Code
[DP] [1D1D优化] [线段树] [Luogu P1725] 琪露诺
最新推荐文章于 2022-02-22 20:05:56 发布