首页 > 其他分享 >Frog 3 题解

Frog 3 题解

时间:2023-07-20 11:44:21浏览次数:39  
标签:单增 int 题解 Frog 斜率 include define

Frog 3

题目大意

题意都这么明确了还要这个干什么。

存在 \(n\) 个点,每个点有一个属性 \(h_i\),\(h_i\) 单增,从点 \(i\) 移动到点 \(j(j>i)\) 的代价是 \((h_i-h_j)^2+C\),其中 \(C\) 是给定的常数,求从点 \(1\) 移动到点 \(n\) 的最小代价。

思路分析

斜率优化 DP 板题。

设 \(f_i\) 表示从点 \(1\) 移动到点 \(i\) 的最小代价,容易列出状态转移方程:

\[f_i=\min_{j<i}(f_j+(h_i-h_j)^2+C) \]

直接转移是 \(O(n^2)\) 的,考虑斜率优化:

\[\begin{aligned}f_i&=f_j+h_i^2-2h_ih_j+h_j^2+C\\(f_i-h_i^2)&=(f_j+h_j^2+C)-(2h_i)(h_j)\end{aligned} \]

将第 \(i\) 个状态视为平面上的点 \((h_i,f_i+h_i^2+C)\),问题转化为求斜率固定的直线的截距的最小值,考虑到 \(h_i\) 单增,故点的横坐标单增,斜率也单增。使用单调队列维护下凸壳即可。

代码

#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <algorithm>

using namespace std;
const int N=200200;
#define int long long
#define y(i) (i[f]+i[h]*i[h]+C)
#define x(i) (i[h])
#define k(i) (2*i[h])

int n,C,hh,tt;
int q[N],f[N],h[N];

double slope(int i,int j){
    return 1.0*(y(i)-y(j))/(x(i)-x(j));
}

signed main(){
    scanf("%lld%lld",&n,&C);
    for(int i=1;i<=n;i++) scanf("%lld",&i[h]);
    hh=1;tt=1;hh[q]=1;
    for(int i=2;i<=n;i++){
        while(hh<tt&&slope(hh[q],(hh+1)[q])<k(i)) hh++;
        i[f]=hh[q][f]+(i[h]-hh[q][h])*(i[h]-hh[q][h])+C;
        while(hh<tt&&slope(i,(tt-1)[q])<slope((tt-1)[q],tt[q])) tt--;
        (++tt)[q]=i;
    }
    cout<<n[f]<<'\n';
    return 0;
}

标签:单增,int,题解,Frog,斜率,include,define
From: https://www.cnblogs.com/TKXZ133/p/17567915.html

相关文章

  • SP10582 题解
    题目链接题意简述给定一个有\(n\)个数的数组,求从第一个数字开始,向后每\(k\)个数字的最大值。题目分析看到没有人用ST表做那我就来发一个吧。这道题可以用ST表做。它可以在经过\(O(N\logN)\)的预处理后,以\(O(1)\)的时间在线回答下标在\(l\)到\(r\)之间的数......
  • 【题解】Luogu[P2607] [ZJOI2008] 骑士
    题目说给定\(n\)个点\(n\)个关系,也就是\(n\)条边,显然是基环树,又因为没有规定一定连通,于是我们可以将题目简化为给定一个基环树森林,点有点权,相邻的两个点不能同时选,问最大点权和。part1我们先考虑如果没有环,只是树,该怎么做。这一部分很简单,令\(f_{i,0/1}\)表示以\(i\)......
  • 基站建设 题解
    基站建设题目大意在平面上存在\(n\)个点,第\(i\)个点的坐标为\((x_i,0)\),具有一个发射半径\(r_i\)和一个费用\(v_i\)。连接具有方向性,当且仅当\(j<i\)且点\(i\)的接收范围与点\(j\)的发射范围相切时点\(i\)才能连接到点\(j\)。第\(i\)个点的发射范围是指一......
  • [ARC104E] Random LIS 题解
    [ARC104E]RandomLIS题解Link吐了,一下午就写了这一个题……主要是题解都说的很草率。然后上课的时候貌似讲的方法不是很能做(也许是我太菜了),总之我得写篇题解整理整理。首先\(n\)很小,可以直接爆搜所有相对大小,即我们去搜索\(1\)到\(n\)的排名,排名可以一样(即\(a_i\)相......
  • RTSP流媒体服务器LntonNVR(源码版)云服务平台下载录像后无法拖动时间轴的问题解决方案
    LntonNVR安防视频云服务平台是基于RTSP/Onvif协议的视频接入、处理及分发平台,可以分发出RTSP、RTMP、WS-FLV、HTTP-FLV、HLS、WebRTC等格式的视频流,可实现在全终端(PC、手机、平板、电子大屏/电视墙等)播放监控视频。有用户反馈,在使用LntonNVR下载录像时,下载后的录像时间无法拖动时间......
  • 【小学期实训】附加题题解——Good Karma
    [状压dp+容斥原理]实训附加题——GoodKarma目录[状压dp+容斥原理]实训附加题——GoodKarma题目描述题目输入格式输出格式数据范围样例输入1样例输出1样例输入2样例输出2样例解释2Solution题目描述题目链接题目「天空度假山庄」中有一个\(n\)点\(m\)边的无向图,图中点......
  • 【小学期实训】附加题题解——最高段位
    [dp状态设计]实训附加题——最高段位目录[dp状态设计]实训附加题——最高段位题目描述背景题目输入格式输出格式数据范围样例输入1样例输出1样例输入2样例输出2样例解释2样例输入3样例输出3Solution题目描述题目链接背景香风智乃除了喜欢玩瓶中船之外,还喜欢打竞技游戏。有......
  • CF786E ALT 题解
    为什么你们第一眼都能想到最小割,我第一眼都只能想到费用流。为什么你们的做法都这么短,我一写就是\(5KB\)。费用流有一个基本矛盾,就是守卫只需拥有一只狗和每一个人都需要守卫有狗的基本矛盾。由于需求与供给不平衡,所以流量不好确定。如果有人费用流过了来长沙火车站,疯狂星期四......
  • [SDOI2010] 代码拍卖会 题解
    [SDOI2010]代码拍卖会题解题目描述一个\(n,n\le10^{18}\)位数,仅由\(1\sim9\)组成,后一位数字一定大于等于前一位数字。求这些数中可以被\(m,m\le500\)整除的有多少,对\(999911659\)取模。解析这个数一定形如\(112334455677788999\)可以把它拆成\[\begin{aligned}......
  • 黑群晖NAS7.0+安装问题解决经验分享
    感谢网上各种帖子及分享,为大家提供一个解决思路,机器配置多种多样,解决办法也仅供参考;1、引导后,无法找到群晖  遇到无法找到群晖的情况,首先要排除引导不兼容的问题。在bios中分别设置传统引导模式和UEFI引导模式尝试启动试下。最新版7.0.1的引导文件是两种启动方式都支持的,理......