您的位置:首页 > 其它

jzoj1749. 城市交通

2017-08-07 16:44 260 查看
Description

  编号为1~n的n个城市,每个城市有两个权值Ai和Bi。

  对于两个城市i和j,i可到j当且仅当j>i,而费用为(j-i)*Ai+Bj。

  求从城市1到城市n的最小费用。

Input

  第一行一个正整数n。

  第二行n个正整数,第i个表示Ai。

  第三行n个正整数,第i个表示Bi。

Output

  一个数,表示最小的费用。

Sample Input

4

2 9 5 4

9 1 2 2

Sample Output

8

Data Constraint

Hint

【数据规模】

  对于20%的数据,1<=n<=100;

  对于50%的数据,1<=n<=3000;

  对于100%的数据,1<=n<=100000,1<=Ai,Bi<=10^9。

 想法:

 DP

 f[i]为到第i个城市的花费

 f[i]=min(f[j]+(i-j)*a[j])(j=1~i-1)

 这很明显是超时的

 其实不是没个j都对答案有贡献

 我们开一个决策队列,先将f[i]算出来(扫一遍队列),

 把i插入队尾

 如果队列里的决策点j和k,如果j
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: