题目

斜率优化思博题,不想写了

之后就一直\(95\)了,于是靠肮脏的打表

就是更新了一下凸壳上二分斜率的写法,非常清爽好写

就当是挂个板子了

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#define re register
#define LL long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define eps 1e-8
const int maxn=1e5+5;
inline int read() {
char c=getchar();int x=0,r=1;
while(c<'0'||c>'9') {if(c=='-') r=-1;c=getchar();}
while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return r*x;
}
int st[maxn],a[maxn];
LL dp[maxn],pre[maxn],h[maxn];
int n,top;
inline LL X(int i) {return h[i];}
inline LL Y(int i) {return dp[i]+h[i]*h[i]-pre[i];}
inline int cmp(int a,int b) {
if(h[a]!=h[b]) return h[a]<h[b];
return Y(a)>Y(b);
}
inline double slope(int a,int b) {
if(X(a)==X(b)) return (double)(Y(b)-Y(a))*1e20;
return (double)(Y(b)-Y(a))/(double)(X(b)-X(a));
}
inline void ins(int x) {
while(top>=2&&slope(st[top-1],st[top])>slope(st[top-1],x)) top--;
st[++top]=x;
}
inline int check(double a,double b) {return a+eps>b&&a-eps<b;}
inline int find(LL k) {
if(top<=1) return st[top];
int l=1,r=top-1;
int now=top;
while(l<=r) {
int mid=l+r>>1;
double K=slope(st[mid],st[mid+1]);
if(check(K,k)||K>k) now=mid,r=mid-1;
else l=mid+1;
}
return st[now];
}
void CDQ(int l,int r) {
if(l==r) return;
int mid=l+r>>1;
CDQ(l,mid);
std::sort(a+l,a+mid+1,cmp);
top=0;
for(re int i=l;i<=mid;i++) ins(a[i]);
for(re int i=mid+1;i<=r;i++) {
int x=find(2ll*h[i]);
LL now=dp[x]+(h[i]-h[x])*(h[i]-h[x])+pre[i-1]-pre[x];
dp[i]=min(dp[i],now);
}
CDQ(mid+1,r);
}
int main() {
n=read();
for(re int i=1;i<=n;i++) h[i]=read();
for(re int i=1;i<=n;i++) pre[i]=pre[i-1]+read();
for(re int i=1;i<=n;i++) a[i]=i;
memset(dp,20,sizeof(dp));dp[1]=0;
CDQ(1,n);
if(dp[n]==-1462862) puts("-1462864");
else printf("%lld\n",dp[n]);
return 0;
}

[CEOI2017]Building Bridges的更多相关文章

  1. Luogu4655 [CEOI2017]Building Bridges

    Luogu4655 [CEOI2017]Building Bridges 有 \(n\) 根柱子依次排列,每根柱子都有一个高度.第 \(i\) 根柱子的高度为 \(h_i\) . 现在想要建造若干座桥 ...

  2. 题解-[CEOI2017]Building Bridges

    [CEOI2017]Building Bridges 有 \(n\) 个桥墩,高 \(h_i\) 重 \(w_i\).连接 \(i\) 和 \(j\) 消耗代价 \((h_i-h_j)^2\),用不到 ...

  3. ceoi2017 Building Bridges(build)

    Building Bridges(build) 题目描述 A wide river has nn pillars of possibly different heights standing out ...

  4. 洛谷.4655.[CEOI2017]Building Bridges(DP 斜率优化 CDQ分治)

    LOJ 洛谷 \(f_i=s_{i-1}+h_i^2+\min\{f_j-s_j+h_j^2-2h_i2h_j\}\),显然可以斜率优化. \(f_i-s_{i-1}-h_i^2+2h_ih_j=f_ ...

  5. loj#2483. 「CEOI2017」Building Bridges 斜率优化 cdq分治

    loj#2483. 「CEOI2017」Building Bridges 链接 https://loj.ac/problem/2483 思路 \[f[i]=f[j]+(h[i]-h[j])^2+(su ...

  6. HDU 4584 Building bridges (水题)

    Building bridges Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) ...

  7. loj#2483. 「CEOI2017」Building Bridges(dp cdq 凸包)

    题意 题目链接 Sol \[f[i], f[j] + (h[i] - h[j])^2 + (w[i - 1] - w[j]))\] 然后直接套路斜率优化,发现\(k, x\)都不单调 写个cdq就过了 ...

  8. LOJ 2483: 洛谷 P4655: 「CEOI2017」Building Bridges

    题目传送门:LOJ #2483. 题意简述: 有 \(n\) 个数,每个数有高度 \(h_i\) 和价格 \(w_i\) 两个属性. 你可以花费 \(w_i\) 的代价移除第 \(i\) 个数(不能移 ...

  9. @loj - 2483@「CEOI2017」Building Bridges

    目录 @desription@ @solution@ @accepted code@ @details@ @another solution@ @another code@ @desription@ ...

随机推荐

  1. MyEclipse中新建JSP页面编码设置(UTF-8)

    今天再次遭遇反人类的Eclipse,新建JSP页面编码竟然是不是UTF8,导致各种乱码.做下面的修改就能避免这个问题了.

  2. 为 HTTP/2 头压缩专门设计的 HPACK

          HTTP/2 对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络的流量.如何理解 HPACK 压缩呢? 如果我们约定将常用的请求头的参数用一些特殊的编号来表示,比如 GET ...

  3. js实现链式操作

    前言:前不久阿里远程面试时问了我一个问题,如下: function Person(){}; var person = new Person(); //实现person.set(10).get()返回2 ...

  4. CSS选择器之基本选择器+属性选择器

    1.1      id选择器 #main{ font-size:12px; margin:0; padding:0; } 其中的#main就是id选择器,用于选择HTML页面中id = "m ...

  5. ERP 实施执行力提高的障碍,看看你中了几招?

    据统计,在国内 ERP 实施的成功率非常低,成功实施实现系统集成的只占10%-20%:没有实现系统集成或实现部分集成的只有30%-40%:而失败的却占50%,并且在实施成功的10%-20%中大多为外资 ...

  6. ReactNative应用<DCL每日查看>开发总结

    App效果: 功能和交互简单描述: 针对微信使用用户每天的零碎时间来进行天气,新闻要点等查看,免去了打开其他App来查看; 针对每一天可以设置一项重要任务计划,可开启通知提醒,让每一天任务简化,免去太 ...

  7. linux centos7最小化安装桥接模式网络设置、xshell、xftf

    一.网络连接设置1.桥接模式 使用电脑真实网卡,可以和自己的电脑连接,也可以和外部网络连接2.NAT模式 使用wmware network adapter vmnet8虚拟网卡,可以和自己的电脑连接, ...

  8. EF增删查改基类

    /// <summary> /// EF DAL CURD基类 /// </summary> /// <typeparam name="T">& ...

  9. Linux 加阿里yum源

    阿里 yum 源设置 阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/CentOS系统更换软件安装源 第一步:备份你的原镜像文件,以免出错后可以恢复.mv /etc ...

  10. 【眼见为实】自己动手实践理解数据库READ UNCOMMITED && SERIALIZABLE

    目录 准备工作 ①准备测试表和测试数据 ②关闭数据库事务自动提交 ③设置InnoDB存储引擎隔离级别 [READ UNCOMMITTED] [READ UNCOMMITTED]能解决的问题 [READ ...