首页 > 其他分享 >C121 李超树+DP P4655 [CEOI2017] Building Bridges

C121 李超树+DP P4655 [CEOI2017] Building Bridges

时间:2024-05-14 21:43:34浏览次数:30  
标签:Building P4655 Bridges CEOI2017 DP 李超树

视频链接:C121 李超树+DP P4655 [CEOI2017] Building Bridges_哔哩哔哩_bilibili

 

 

 

Luogu P4655 [CEOI2017] Building Bridges

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

#define ll long long
#define ls u<<1
#define rs u<<1|1
const int N=100005,M=1000005;

ll h[N],s[N],k[N],b[N],f[N];
int n,tr[M<<2]; //优势线段的编号

ll Y(int id,int x){ //求Y值
  return k[id]*x+b[id];
}
void change(int u,int l,int r,int id){ //修改
  int mid=l+r>>1;
  if(Y(id,mid)<Y(tr[u],mid)) swap(id,tr[u]);
  if(Y(id,l)<Y(tr[u],l)) change(ls,l,mid,id);
  if(Y(id,r)<Y(tr[u],r)) change(rs,mid+1,r,id);
}
ll query(int u,int l,int r,int x){ //查询
  if(l==r) return Y(tr[u],x);
  int mid=l+r>>1;
  ll ans=Y(tr[u],x);
  if(x<=mid) return min(ans,query(ls,l,mid,x));
  else return min(ans,query(rs,mid+1,r,x));
}
int main(){
  scanf("%d",&n); 
  for(int i=1;i<=n;++i)scanf("%lld",h+i);
  for(int i=1;i<=n;++i)scanf("%lld",s+i),s[i]+=s[i-1];
  k[0]=0,b[0]=1e18; //第0条线段
  k[1]=-2*h[1];
  b[1]=h[1]*h[1]-s[1];
  change(1,1,M,1); //插入第一条线段
  for(int i=2;i<=n;++i){
    f[i]=h[i]*h[i]+s[i-1]+query(1,1,M,h[i]);
    k[i]=-2*h[i];
    b[i]=f[i]+h[i]*h[i]-s[i];
    change(1,1,M,i);
  }
  printf("%lld",f[n]);
}

 

标签:Building,P4655,Bridges,CEOI2017,DP,李超树
From: https://www.cnblogs.com/dx123/p/18188869

相关文章

  • pyqt5报错记录:ERROR: Failed building wheel for PyQt5-sip
    问题:pipinstallpyqt5Collectingpyqt5UsingcachedPyQt5-5.15.10-cp37-abi3-win_amd64.whl.metadata(2.2kB)CollectingPyQt5-sip<13,>=12.13(frompyqt5)UsingcachedPyQt5_sip-12.13.0.tar.gz(123kB)Installingbuilddependencies...doneGettingr......
  • microsoft全球GlobalMLBuildingFootprints下载方法
    website:https://github.com/microsoft/GlobalMLBuildingFootprints?tab=readme-ov-filePython代码Start"""Thissnippetdemonstrateshowtoaccessandconvertthebuildingsdatafrom.csv.gztogeojsonforuseincommonGIStools.Youwillneedtoi......
  • 【论文随笔】基于会话的推荐系统构建方法调查(Survey On Methods For Building Sessio
    前言今天读的论文为一篇于2023年发表在国际开放信息技术杂志(InternationalJournalofOpenInformationTechnologies)的论文,文章是关于构建基于会话的推荐系统(Session-basedRecommenderSystems,SBRS)的方法的综述。文章首先介绍了推荐系统在处理大量信息领域(如在线商店、电......
  • Building an Automatically Scaling Web Application
    2024年春季云计算课业1:构建一个自动伸缩的Web应用程序截止日期:2024年4月15日,星期一1目标和范围在这项任务中,我们将为(非常)琐碎的Web构建一个小型的自动伸缩测试平台应用任务的目标是熟悉伸缩Web的各个方面应用程序,这将提高您对低级/基本实现的理解云系统的详细信息。正如我们在......
  • 解决出现javax.net.ssl.SSLHandshakeException: PKIX path building failed 或 sun.se
    From: https://www.cnblogs.com/luoxiao1104/p/16671501.html当我们从网络上根据url下载文件的时候可能会出现一下异常错误信息: javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:......
  • [Container] Building and Running Container Images
    Stepstocreateandruncontainers:1.CreateaDockerfile2.UsetheDockerfiletocreateacontainerimage3.UsethecontainerimagetocreatearunningcontainerDockerfileexampleFROMalpine#DefinesthebaseimageCMD["echo","Hel......
  • Codeforces Round 933 Rudolf and k Bridges
    原题链接:Problem-E-Codeforces题目大意:给一个行为n列为m的河流二维数组,数字代表河流的深度。题目要求连续建造k座桥,桥的定义是从第一列到第m列,每隔d需要按照支架,安装支架的代价是深度+1。问安装最少需要多少代价?思路:单调队列优化dp,dp数组只需要一维,dp[i]的含义是从1到i建......
  • Qt开发,报错:Error while building/deploying project untitled (kit: ....)
    1、问题描述 Qt开发,编译时,报错如下:1Cannotfindfile:F:\linux\...\Console.pro.213:49:47:进程"D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\qmake.exe"退出,退出代码2。3Errorwhilebuilding/deployingprojectConsole(kit:DesktopQt5.14.2MSVC201764bit)4......
  • Java遇到PKIX path building failed错误的解决办法
    Java调用HTTPS可能出现如下错误:PKIXpathbuildingfailed:sun.security.provider.certpath.SunCertPathBuilderException:unabletofindvalidcertificationpathtorequestedtarget。测试验证测试是否会出现本问题可以使用如下命令:javaSSLPokejira.example.com443......
  • IfcBuildingElementProxyTypeEnum
    IfcBuildingElementProxyTypeEnum类型定义此枚举定义IfcBuildingElementProxy或IfcBuildngElementProxyType的可用泛型类型。 IFC2x3 新枚举IFC4更改枚举器PROVISIONFORVOID。DEPRECATION枚举器COMPLEX、ELEMENT、PARTIAL将不再使用。 EnumerationdefinitionConsta......