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. 用seaborn对数据可视化

    以下用sns作为seaborn的别名 1.seaborn整体布局设置 sns.set_syle()函数设置图的风格,传入的参数可以是"darkgrid", "whiteg ...

  2. [每天一课] 今天就讲一讲关于vue-cli 脚手架里 如何调用API

    既然vue-resource停更了,就不讲了,但是效果也是差不多了 今天主要讲一下关于axios的方式来调用API,按照vue-cli的模式,这个当然得先引入一个axios这个模块了.那当然得走一遍终 ...

  3. django学习——通过HttpResponseRedirect 和 reverse实现重定向(转载)

    人分类: django   用django开发web应用, 经常会遇到从一个旧的url转向一个新的url,也就是重定向. HttpResponseRedirect:构造函数的第一个参数是必要的 — 用 ...

  4. 安装最新版Elasticsearch报错

    1 问题:ERROR: bootstrap checks failed max file descriptors [4096] for elasticsearch process likely too ...

  5. JS的for循环包裹异步函数的问题

    有个循环,循环一个异步回调,为啥回调引用的循环值都是最后一步循环的循环值?然后,又有些时候无论什么循环值都得不到? var arr = [1,3,5,7,9]; var arrLength = arr ...

  6. Kubernetes 入门-学习-nginx安装-dashboard安装

    一.入门 1.Kubernetes中文社区---http://docs.kubernetes.org.cn/ 2.Kubernetes集群组件: - etcd 一个高可用的K/V键值对存储和服务发现系 ...

  7. Linux vim程序编辑器

    Tips: 在 vi 里面, [tab] 这个按钮所得到的结果与空格符所得到的结果是不一样的,特别强调一下! 一般模式 移动光标 30↓ 向下移动30行 40→ 向右移动40个字符 gg 移动到档案第 ...

  8. Python学习笔记-列表的增删改查

  9. VB.net删除节点,数据库,文件

    Private Sub mnuDel_Click()'删除节点Dim sKey As String'Dim sFile As StringDim oFS As FileSystemObjectDim ...

  10. pandas进阶

    pandas是基于numpy构建的库,在数据处理方面可以把它理解为numpy的加强版,由于numpy主要用于科学计算,特长不在于数据处理,我们平常处理的数据一般带有列标签和index索引,这时pand ...