Code:

#include <cstdio>
#include <algorithm>
#include <cstring>
#define setIO(s) freopen(s".in","r",stdin)
#define maxn 400005
#define inf 1000000009
#define ll long long
using namespace std;
int head,tail;
int S[maxn];
ll le[maxn],ri[maxn],sumv[maxn],pos[maxn];
ll sqr(ll x)
{
return 1ll*(1ll*x * 1ll*x);
}
struct Node
{
ll x,y;
}nd[maxn];
bool cmp(Node a,Node b)
{
return a.x<b.x;
}
ll Y(int f)
{
return (ll)(ri[f]+1ll*f*f);
}
ll X(int f)
{
return f;
}
double slope(int i,int j)
{
return (double)(Y(i)-Y(j))/(double)(X(i)-X(j));
}
void insert(int x)
{
if(tail<2)
{
if(tail==1)
{
if(X(x)==XS[++tail]=x;
}
else
{
S[++tail]=x;
}
return;
}
while(tail>1&&slope(S[tail-1], S[tail]) >= slope(S[tail-1], x)) --tail;
S[++tail]=x;
}
int main()
{
// setIO("input");
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%lld%lld",&nd[i].x,&nd[i].y);
sort(nd+1,nd+1+n,cmp);
nd[0].x=-inf;
for(int i=1;i<=n;++i) pos[i]=nd[i].x;
for(int i=1;i<=n;++i)
{
sumv[i]=sumv[i-1];
if(nd[i].y<0) sumv[i]-=nd[i].y;
le[i]=le[i-1];
if(nd[i-1].x!=nd[i].x) le[i]=sumv[i-1];
}
for(int i=1;i<=n;++i) sumv[i]=0;
nd[n+1].x=inf;
for(int i=n;i>=1;--i)
{
sumv[i]=sumv[i+1];
if(nd[i].y>0) sumv[i]+=nd[i].y;
ri[i]=ri[i+1];
if(nd[i+1].x!=nd[i].x) ri[i]=sumv[i+1];
}
head=1;
long long ans=100000000000000000;
for(int i=1;i<=n;++i) insert(i);
for(int i=1;i<=n;++i)
{
while(head<tail && pos[S[head]] < pos[i]) ++head;
while(head<tail && slope(S[head], S[head+1]) < 2*pos[i]) ++head;
if(head>tail) break;
ans=min(ans, le[i] + sqr( (pos[i] - pos[S[head]]) ) + ri[S[head]]);
// printf("%d %d %lld\n",i,S[head],ans);
}
printf("%lld\n",ans);
return 0;
}

  

Comet OJ - Contest #7 D 机器学习题 斜率优化 + 未调完的更多相关文章

  1. Comet OJ - Contest #11 A 水题

    Code: #include <bits/stdc++.h> #define N 3000000 using namespace std; char str[N]; int main() ...

  2. Comet OJ - Contest #4--前缀和

    原题:Comet OJ - Contest #4-B https://www.cometoj.com/contest/39/problem/B?problem_id=1577传送门 一开始就想着暴力打 ...

  3. Comet OJ - Contest #11 题解&赛后总结

    Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最 ...

  4. Comet OJ - Contest #13-C2

    Comet OJ - Contest #13-C2 C2-佛御石之钵 -不碎的意志-」(困难版) 又是一道并查集.最近做过的并查集的题貌似蛮多的. 思路 首先考虑,每次处理矩形只考虑从0变成1的点.这 ...

  5. Comet OJ - Contest #13 「火鼠的皮衣 -不焦躁的内心-」

    来源:Comet OJ - Contest #13 芝士相关: 复平面在信息学奥赛中的应用[雾 其实是道 sb 题??? 发现原式貌似十分可二项式定理,然后发现确实如此 我们把 \(a^i\) 替换成 ...

  6. Comet OJ - Contest #13 「佛御石之钵 -不碎的意志-」(hard)

    来源:Comet OJ - Contest #13 一眼并查集,然后发现这题 tmd 要卡常数的说卧槽... 发现这里又要用并查集跳过访问点,又要用并查集维护联通块,于是开俩并查集分别维护就好了 一开 ...

  7. Comet OJ - Contest #2 简要题解

    Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...

  8. Comet OJ - Contest #2简要题解

    Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/ ...

  9. Comet OJ - Contest #8

    Comet OJ - Contest #8 传送门 A.杀手皇后 签到. Code #include <bits/stdc++.h> using namespace std; typede ...

随机推荐

  1. hibernate 2 多对多映射

    一.实体类 1.Classes.java package cn.gs.wwg.entity; import java.util.Set; public class Classes { private ...

  2. CSS3——分组和嵌套 尺寸 display显示 position定位 overflow float浮动

    分组和嵌套  分组选择器 ——————>   嵌套选择器 能适用于选择器内部的选择器的样式 p{ }: 为所有 p 元素指定一个样式. .marked{ }: 为所有 class="m ...

  3. HTML——超级链接 表格 框架

  4. 【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer ...

  5. 右击main 方法运行正常,启动tomcat 后,spring boot 项目 出现参数字符串是乱码的情况

    PrintWriter out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "utf-8")) ...

  6. 把对像生成json并存储到文件

    1.创建实体对像json import com.alibaba.fastjson.annotation.JSONField; import java.util.Date; public class S ...

  7. [19/06/06-星期四] CSS基础_盒子模型

    一.盒子模型(框模型.盒模型) CSS处理网页时,它认为每个元素都在一个不可见的矩形盒子里. 为什么想象成盒子模型?因为把所有元素想象成盒子,那么我们对网页的布局就相当于摆放盒子.我们只需要把相应的盒 ...

  8. Java语言的发展历程

    前言 自1946年2月14日世界上首款计算机ENAC问世,第一代计算机语言“机器语言”便诞生了,它使用的是最原始的穿孔卡片,这种卡片上使用的语言只有专家才能理解,与人类语言差别极大.这种语言本质上是计 ...

  9. 【7.24校内交流赛】T1&T2

    T1: 一个脑洞很大的题,将输入的所有数异或起来输出就好了: (话说我为什么这么喜欢用异或啊) #include<bits/stdc++.h> using namespace std; i ...

  10. 关于代码手写UI,xib和StoryBoard

    代码手写UI 这种方法经常被学院派的极客或者依赖多人合作的大型项目大规模使用.Geek们喜欢用代码构建UI,是因为代码是键盘敲出来的,这样可以做到不开IB,手不离开键盘就完成工作,可以专注于编码环境, ...