思维题,如果直接枚举选三个货栈会超时,我们可以先枚举前两个货栈的传递倍数放到f中,并枚举后两个货栈的传递倍数放到g中。然后对于枚举所有的中间货栈i,取f[i][j]的最大值和g[i][j]的最大值进行累乘即是这个点作为中间货栈的所有情况的最大值。
枚举所有中间货栈取最大的那个即可,时间复杂度:O(n2)
Java
在一条绵延的古商道上,分布着 n 个可供设立货栈的地点。现在计划从中选取 5 个地点作为接力货栈,将一批货物从最左侧传递至最右侧。货物在传递过程中会发生变化:若货物从货栈 u 传递至货栈 v,则货物的数量会乘以 dcu+cv,其中 cu,cv 分别是两个货栈的转运效率系数,d 是它们之间的距离。 已知第 i 个候选地点的坐标为 pi,转运效率系数为 ci。坐标严格从左向右递增。规定最左侧地点(i=1)和最右侧地点(i=n)必须设立货栈,因此你还需要在剩余的 n−2 个地点中选择恰好 3 个地点建立货栈。货物从最左端出发时数量为 1,并且必须沿位置顺序依次经过这 5 个货栈,即 1→s2→s3→s4→n。 请你求出在所有选择方案中,最终到达最右侧时货物数量的最大值。
数据规模与约定:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册