【CEOI2017】Building Bridges【任意坐标斜率优化】【李超线段树】

题意:有 nnn 个柱子,每个柱子有高度 hih_ihi。你需要在柱子间修桥,在 i,ji,ji,j 间修桥代价为 (hi−hj)2(h_i-h_j)^2(hihj)2,桥梁只能在柱子处相交,未安装桥的柱子需要拆除,代价为 wiw_iwi(可能为负数)。求让 111nnn 连接的最小代价。

n≤105,hi,∣wi∣≤106n\leq 10^5,h_i,|w_i|\leq 10^6n105,hi,wi106

显然是斜率优化

fif_ifi 表示从 111 修到 iii 的最小代价,ssswww 前缀和。

fi=min⁡1≤j<i{fj+(hi−hj)2+si−1−sj}f_i=\min_{1\leq j<i}\{f_j+(h_i-h_j)^2+s_{i-1}-s_j\}fi=1j<imin{fj+(hihj)2+si1sj}

fi=min⁡1≤j<i{fj+hi2−2hihj+hj2+si−1−sj}f_i=\min_{1\leq j<i}\{f_j+h^2_i-2h_ih_j+h^2_j+s_{i-1}-s_j\}fi=1j<imin{fj+hi22hihj+hj2+si1sj}

fi=hi2+si−1+min⁡1≤j<i{−2hj⋅hi+fj+hj2−sj}f_i=h^2_i+s_{i-1}+\min_{1\leq j<i}\{-2h_j\cdot h_i+f_j+h_j^2-s_j\}fi=hi2+si1+1j<imin{2hjhi+fj+hj2sj}

每个决策 jjj 看成斜率为 −2hj-2h_j2hj,截距为 fj+hj2−sjf_j+h_j^2-s_jfj+hj2sj 的直线, hih_ihi 看成自变量,李超线段树求最小值即可。

复杂度 O(nlog⁡n)O(n\log n)O(nlogn)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cctype>
using namespace std;
const int N=1e6,MAXN=N+5;
typedef long long ll;
inline int read()
{int ans=0,f=1;char c=getchar();while (!isdigit(c)) (c=='-')&&(f=-1),c=getchar();while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();return f*ans;
}
ll k[MAXN],b[MAXN];
inline ll calc(int i,int x){return k[i]*x+b[i];}
#define lc p<<1
#define rc p<<1|1
int mn[MAXN<<2];
void modify(int p,int l,int r,int v)
{int mid=(l+r)>>1;if (!mn[p]) return (void)(mn[p]=v);if (calc(mn[p],l)<=calc(v,l)&&calc(mn[p],r)<=calc(v,r)) return;if (calc(mn[p],l)>=calc(v,l)&&calc(mn[p],r)>=calc(v,r)) return (void)(mn[p]=v);if (calc(mn[p],mid)>calc(v,mid)) swap(mn[p],v);if (calc(mn[p],l)>calc(v,l)) modify(lc,l,mid,v);else modify(rc,mid+1,r,v);
}
void query(int p,int l,int r,int k,ll& ans)
{if (mn[p]) ans=min(ans,calc(mn[p],k));if (l==r) return;int mid=(l+r)>>1;if (k<=mid) query(lc,l,mid,k,ans);else query(rc,mid+1,r,k,ans);
}
ll h[MAXN],s[MAXN],f[MAXN];
int main()
{int n=read();for (int i=1;i<=n;i++) h[i]=read();for (int i=1;i<=n;i++) s[i]=s[i-1]+read();k[1]=-2*h[1],b[1]=h[1]*h[1]-s[1];modify(1,0,N,1);for (int i=2;i<=n;i++){query(1,0,N,h[i],f[i]=1e18);f[i]+=h[i]*h[i]+s[i-1];k[i]=-2*h[i],b[i]=h[i]*h[i]+f[i]-s[i];modify(1,0,N,i);}cout<<f[n];return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314900.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【牛客NOIP模拟】路径难题【建图】【最短路证明】

题意&#xff1a;一张 nnn 个点 mmm 条边的无向图&#xff0c;边带距离&#xff0c;可以坐出租车&#xff0c;花费为距离除以常数 rrr 向上取整&#xff1b;也可以坐公交车&#xff0c;每路车行驶路线给定&#xff0c;无论坐多少站花费都为 cic_ici​ &#xff08;每路车可能不…

Codeforces Round #595 (Div. 3) F. Maximum Weight Subset 树形dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; n≤200n\le200n≤200 思路&#xff1a; 明显的树形dpdpdp&#xff0c;所以考虑一下dpdpdp状态。 这个题状态挺神的。。可能是因为我太菜了&#xff0c;看了半天才看懂。 算法111: 复杂度O(n3)O(n^3)O(n3) …

利用ICSharpCore搭建基于.NET Core的机器学习和深度学习的本地开发环境

每个人都习惯使用Python去完成机器学习和深度学习的工作&#xff0c;但是对于习惯于某种特定语言的人来说&#xff0c;转型不是那么容易的事。这两年我花了不少时间在Python&#xff0c;毕竟工作的重心也从移动开发转为机器学习和深度学习。感谢我的老板给我很大的空间去开拓新…

【牛客NOIP模拟】牛半仙的妹子序列【DP】【Segment Tree Beats】

题意&#xff1a;排列的极长上升子序列个数 n≤2105n\leq 2\times 10^5n≤2105 显然有个 dp fn∑i<n,pi<pn,∄i<j<ns.t. pi<pj<pnfif_n\sum_{i<n,p_i<p_n,\nexists i<j<n\text{ s.t. }p_i<p_j<p_n}f_ifn​i<n,pi​<pn​,∄i<j&l…

Acwing 252. 树 点分治

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 好久没写淀粉质了&#xff0c;心血来潮复习一下。 淀粉质通常用来统计路径个数&#xff0c;将路径分为子树内的和子树之间的。子树内的递归处理&#xff0c;子树间的存下信息来每次都处理即…

CLR与JVM

首先要纠正垃圾回收在于JVM和.NET的CLR的平台功能而不是语言本身。存在一些历史差异主要是因为.Net的设计是从java&#xff08;和其他基于gc的平台&#xff09;演变中吸取教训改良后的结果。CLR一开始就设计成了分代垃圾回收&#xff0c;但是初始JVM没有分代垃圾收集器。第一代…

【牛客NOIP模拟】 牛牛的RPG游戏【二维偏序】【任意坐标斜率优化】【CDQ 分治】【李超线段树】

题意&#xff1a; nmn\times mnm 的网格图&#xff0c;每个点有两个权值 vali,j,bufi,jval_{i,j},buf_{i,j}vali,j​,bufi,j​&#xff0c;从 (1,1)(1,1)(1,1) 开始只能向下或向右走到 (n,m)(n,m)(n,m) &#xff0c;在某个位置时可以选择触发该位置的事件&#xff08;也可不触发…

Free tour II SPOJ - FTOUR2 点分治 + 树状数组

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你一个有nnn个点的树&#xff0c;有mmm个点拥堵&#xff0c;连接两个点的一条边有一个美丽值&#xff0c;让你选择一个路径&#xff0c;使其经过的拥堵点数不超过kkk且美丽值最大。 n≤2e5,m≤n,k≤mn\le2…

使用Mutex进行线程处理

Mutex就像一个C&#xff03;锁(lock)&#xff0c;但它可以跨多个进程工作。换句话说&#xff0c;Mutex可以是计算机范围的&#xff0c;也可以是应用程序范围的。Mutex是一个同步原语&#xff0c;也可用于进程间同步。当两个或多个线程需要同时访问共享资源时&#xff0c;系统需…

【NOIP模拟】开車【回退贪心】【multiset】

题意&#xff1a;有 1∼n1 \sim n1∼n nnn 个城市排成一行&#xff0c;给定每个城市的单位距离油价和两个城市间的距离、油箱容量&#xff0c;求 111 到 nnn 最小代价。 用 multiset 来维护当前油箱中的油的价格。 在每个城市假装把油加满。如果发现这个城市的油比油箱里的一…

Educational Codeforces Round 75 (Rated for Div. 2) D. Salary Changing 二分 + check

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 直接算不好算&#xff0c;考虑二分这个中位数midmidmid。 考虑如何checkcheckcheck&#xff0c;这个分情况来就好了&#xff1a; (1)mid>a[i].r(1)mid>a[i].r(1)mid>a[i].r&#…

【Linux】Linux常见指令解析上

目录 1. 前言2. ls指令3. pwd指令4. cd指令3.1 cd常见快捷指令 4. touch指令5. mkdir指令6. rmdir指令 && rm指令 &#xff08;重要&#xff09;6.1 rmdir指令6.2 rm指令 7. man指令 1. 前言 这篇文章我们将详细介绍一下Linux下常见的基本指令。 2. ls指令 语法: ls [选…

CSP2020 赛前总结

比赛策略与思路 暴力不好写&#xff0c;没法对拍 ≠\neq​ 稳了签到题要求稳&#xff0c;可以当熟悉环境。但也要注意速度&#xff0c;为后面的题腾出时间。正解调不出来就写暴力&#xff0c;一是确认题意、换下脑筋&#xff0c;二是提供对拍&#xff0c;三是拿到保底分。正…

PYPL 7月榜单公布:Java份额出现下降趋势

PYPL(PopularitY of Programming Language&#xff0c;编程语言流行指数) 7 月份的榜单已发布&#xff0c;目前包含四个排行榜&#xff0c;囊括编程语言、IDE、ODE(Online IDE) 以及数据库四大领域。PYPL 是非常流行的参考指标&#xff0c;其榜单数据的排名均是根据榜单对象在 …

CSP-S 2020 游记

本博客建立于 2020 年 11 月 6 日晚&#xff0c;于次日正式认证后更新涉及题目的内容并公开。本人未提前知晓认证试题&#xff0c;请读者不必恐慌。 Day -4 久违地 AK 了一场模拟赛。 Day -2 因为模拟赛不给大样例&#xff0c;T3 T4都A了&#xff0c;反而挂了 SB 模拟和欧拉…

Codeforces Round #593 (Div. 2) D. Alice and the Doll 暴力 + 二分

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 还以为这个题有什么高深的算法&#xff0c;结果就是个暴力。 由于n∗mn*mn∗m达到了1e101e101e10的级别&#xff0c;所以直接暴力肯定是不行的&#xff0c;考虑有很多空格&#xff0c;我们…

远古魔力 | 在Windows 10和Azure App Service里跑上世纪的ASP

ASP&#xff08;没有.NET&#xff09; 即 Active Server Pages &#xff08;动态服务器页面&#xff09;是一项由微软公司在1996年推出的技术&#xff0c;能够在IIS中运行动态网站。也许许多90后及千禧一代程序员并没有听说过它&#xff0c;但很多老程序员曾经用ASP编写了诸如D…

【LOJ6072】苹果树【折半搜索】【矩阵树定理】【二项式反演】

题意&#xff1a;有好坏两种点共 nnn 个&#xff0c;每个好点有权值&#xff0c;把这 nnn 个点连成一棵树&#xff0c;一个好点为有用的当且仅当它至少与一个好点相邻&#xff0c;求所有有用的点的权值和不超过 limlimlim 的方案数。 n≤40n\leq 40n≤40 这题网上的容斥方法基…

P2375 [NOI2014] 动物园 kmp fail指针/倍增

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 由kmpkmpkmp中失配数组nenene的含义我们知道&#xff0c;ne[i],ne[ne[i]],...ne[i],ne[ne[i]],...ne[i],ne[ne[i]],...都是iii的相等的前后缀&#xff0c;但是可能有重叠的部分&#xff0c…

DDD“上吊绳驱动开发”,开发要想不被“吊死”,该如何自救?

话题缘起01今天在DevOps案例深度研究讨论群里&#xff0c;群友们围绕一种开发模式展开了讨论&#xff1a;DDD&#xff08;Deadline Driven Development&#xff09;&#xff0c;期限驱动开发&#xff0c;大家似乎更愿意将其翻译成“上吊绳驱动开发”。这种开发模式是说在接到新…