题意:你要从(0,0)点走到(n,m), 每次只能往 x 轴或者 y 轴正方向移动一个单位距离。
从(i,j)移动到(i,j+1)的代价为 ri,从(i,j)移动到(i+1,j)的代价为 cj。

求最小代价。

对于 20%的数据, n, m<=5000。
对于 100%的数据, n, m<=10^5,0<ri,ci<=10^8。

思路:杜教原题

• 建出r和c的下凸壳,每次走斜率大的那个。
• 证明?

• P q
• | |
• a--|-----|---
• b--|-----|---
• ra(q-p)+cp(a-b)<=rb(q-p)+cq(a-b)
• (ra-rb)(q-p)<=(cq-cp)(a-b)
• (ra-rb)/(a-b)<=(cq-cp)/(q-p)<=.......(more columns and
rows.
• 斜率?
• 每次走过路径斜率递增--->下凸
• 如何证明在下凸壳上?

下凸壳显然 假设当前是第x1行第y1列,下一个行和列是x2和y2,那么考虑是先沿行走还是先沿列走

先沿行走:r[x1]*(y2-y1)+c[y2]*(x2-x1)

先沿列走:r[x2]*(y2-y1)+c[y1]*(x2-x1)

r[x1]*(y2-y1)+c[y2]*(x2-x1)<r[x2]*(y2-y1)+c[y1]*(x2-x1)

(r[x2]-r[x1])/(x2-x1)>(c[y2]-c[y1])/(y2-y1)

于是先沿斜率大的走

 var x,y:array[..,..]of longint;
q1,q2:array[..]of longint;
r,c:array[..]of int64;
n,m,i,j,l1,l2:longint;
k1,k2:double;
ans:int64; function slope(i,j,k:longint):double;
begin
exit((y[i,k]-y[j,k])/(x[i,k]-x[j,k]));
end; function clac(x1,y1,x2,y2,k:longint):int64;
begin
if k= then exit(r[x1]*(y2-y1)+c[y2]*(x2-x1))
else exit(c[y1]*(x2-x1)+r[x2]*(y2-y1));
end; begin
assign(input,'masodik.in'); reset(input);
assign(output,'masodik.out'); rewrite(output);
readln(n,m);
for i:= to n do
begin
read(y[i,]); x[i,]:=i; r[i]:=y[i,];
end;
for i:= to m do
begin
read(y[i,]); x[i,]:=i; c[i]:=y[i,];
end;
for i:= to n do
begin
while (l1>)and(slope(i,q1[l1],)<=slope(q1[l1-],q1[l1],)) do dec(l1);
inc(l1); q1[l1]:=i;
end;
for i:= to m do
begin
while (l2>)and(slope(i,q2[l2],)<=slope(q2[l2-],q2[l2],)) do dec(l2);
inc(l2); q2[l2]:=i;
end;
i:=; j:=;
while (i<l1)and(j<l2) do
begin
k1:=slope(q1[i],q1[i+],);
k2:=slope(q2[j],q2[j+],);
if k1>k2 then
begin
ans:=ans+clac(q1[i],q2[j],q1[i],q2[j+],);
inc(j);
end
else
begin
ans:=ans+clac(q1[i],q2[j],q1[i+],q2[j],);
inc(i);
end;
end;
while i<l1 do
begin
ans:=ans+clac(q1[i],q2[l2],q1[i+],q2[l2],);
inc(i);
end;
while j<l2 do
begin
ans:=ans+clac(q1[l1],q2[j],q1[l1],q2[j+],);
inc(j);
end;
writeln(ans); close(input);
close(output);
end.

【ZJOI2017 Round1练习&BZOJ5350】D5T1 masodik(DP,斜率优化)的更多相关文章

  1. 【BZOJ-4518】征途 DP + 斜率优化

    4518: [Sdoi2016]征途 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 230  Solved: 156[Submit][Status][ ...

  2. 【BZOJ-3437】小P的牧场 DP + 斜率优化

    3437: 小P的牧场 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 705  Solved: 404[Submit][Status][Discuss ...

  3. 【BZOJ-1010】玩具装箱toy DP + 斜率优化

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 8432  Solved: 3338[Submit][St ...

  4. 【BZOJ】1096: [ZJOI2007]仓库建设(dp+斜率优化)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1096 首先得到dp方程(我竟然自己都每推出了QAQ)$$d[i]=min\{d[j]+cost(j+ ...

  5. BZOJ 1096: [ZJOI2007]仓库建设(DP+斜率优化)

    [ZJOI2007]仓库建设 Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶,工厂N在山脚.由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在 ...

  6. 学渣乱搞系列之dp斜率优化

    学渣乱搞系列之dp斜率优化 By 狂徒归来 貌似dp的斜率优化一直很难搞啊,尤其是像我这种数学很挫的学渣,压根不懂什么凸包,什么上凸下凸的,哎...说多了都是泪,跟wdd讨论了下,得出一些结论.本文很 ...

  7. DP斜率优化总结

    目录 DP斜率优化总结 任务安排1 任务计划2 任务安排3 百日旅行 DP斜率优化总结 任务安排1 首先引入一道题,先\(O(N^2)\)做法:分别预处理出\(T_i,C_i\)前缀和\(t[i],c ...

  8. HDU 3507 [Print Article]DP斜率优化

    题目大意 给定一个长度为\(n(n \leqslant 500000)\)的数列,将其分割为连续的若干份,使得 $ \sum ((\sum_{i=j}^kC_i) +M) $ 最小.其中\(C_i\) ...

  9. dp斜率优化

    算法-dp斜率优化 前置知识: 凸包 斜率优化很玄学,凭空讲怎么也讲不好,所以放例题. [APIO2014]序列分割 [APIO2014]序列分割 给你一个长度为 \(n\) 的序列 \(a_1,a_ ...

  10. BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9812  Solved: 3978[Submit][St ...

随机推荐

  1. iOS 集成银联支付(绕过文档的坑,快速集成)-转

    本文是投稿文章,作者:南栀倾寒当初集成支付宝的时候,觉得见了这么丑的代码,加上这么难找的下载地址,在配上几乎为零的文档,寒哥就要吐血了. 下午去集成银联,才知道血吐的早了. 下载地址:https:// ...

  2. (Android MVVM)使用Data Binding Library(1)

    Data Binding Library 用官方提供的Data Binding Library,可以最大限度的减少findViewById(),setOnClickListener()之类的胶水代码, ...

  3. 掌握Spark机器学习库-01

    第1章 初识机器学习 在本章中将带领大家概要了解什么是机器学习.机器学习在当前有哪些典型应用.机器学习的核心思想.常用的框架有哪些,该如何进行选型等相关问题. 1-1 导学 1-2 机器学习概述 1- ...

  4. 最全的Java面试宝典

    一. 前言部分 从享受生活的角度上来说:“程序员并不是一种最好的职业,我认为两种人可以做程序员,第一,你不做程序员,你就没有什么工作可做,或者说是即使有可以做的工作但是你非常不愿意去做:第二,你非常痴 ...

  5. [6818开发板]八核开发板|4G开发板|GPS开发板|嵌入式开发平台

    IMX6开发板(基本型):960元 IMX6开发板(豪华型):1460元 S5P4418 核心板可以无缝支持核心系统S5P6818,并保持底板设计不变,将兼顾更高端 的应用领域,为项目和产品提供更好的 ...

  6. 机器学习_决策树Python代码详解

    决策树优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据: 决策树缺点:可能会产生过度匹配问题. 决策树的一般步骤: (1)代码中def 1,计算给定数据集的香农熵: ...

  7. 20181017 work - Inno Setup 禅道 xp系统 楷体字体 win10倒计时 nwjs chosen

    win10 闹钟和时钟 用个倒计时 Inno Setup 编译器 把应用程序打包成安装程序 nwjs-v0.14.7-win-ia32 XP专用 chrome用的49的版本 作用是把浏览器地址的程序打 ...

  8. 纯CSS3来自定义单选框radio与复选框checkbox

    单选框(radio)自定义样式 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 ...

  9. node.js querystring类介绍

    querystring 模块提供了一些实用函数,用于解析与格式化 URL 查询字符串. 使用以下方法引入: const querystring = require('querystring'); 此类 ...

  10. [转载]MyBatis mapper文件中的变量引用方式#{}与${}的差别

    转载自:http://blog.csdn.net/szwangdf/article/details/26714603 默认情况下,使用#{}语法,MyBatis会产生PreparedStatement ...