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. 洛谷P1347 排序

    这个题看到很多人写Topo排序,其实这道题第一眼看更像是一个差分约束的裸题QWQ... 令dis[x]表示x的相对大小(1是最小,n是最大),显然,对于一个关系A<B,我们有dis[A]< ...

  2. linux 通配符与正则表达式

    linux通配符和三剑客(grep.awk.sed)正则表达式是不一样的 通配符一般用户命令行bash环境,而linux正则表达式用于awk.grep.sed

  3. 自定义SpringBoot启动控制台图标

    使用过SpringBoot的小伙伴众所周知,在启动的过程中,在控制台会首先打印spring的图标以及版本号(这里以IDEA为例) 如果需要更改这个打印图标的话, 需要以下步骤: 1.打开SpringB ...

  4. (4.24)【mysql、sql server】分布式全局唯一ID生成方案

    参考:分布式全局唯一ID生成方案:https://blog.csdn.net/linzhiqiang0316/article/details/80425437 分表生成唯一ID方案 sql serve ...

  5. 将从model中获得的数据传到js函数中

    刚遇到了一种情况,从controller中获得的model是一个集合,需要将这个集合循环放到标签中,并且需要为这些标签添加点击事件,每个值传入对应的点击事件函数中,由于model中的值是通过${ite ...

  6. 洛谷 P2196 挖地雷 & [NOIP1996提高组](搜索,记录路径)

    传送门 解题思路 就是暴力!!! 没什么好说的,总之,就是枚举每一个起点,然后暴力算一遍以这个点为起点的所有路径,在算的过程中,只要比目前找到的答案更优,就有可能是最后的答案,于是就把路径更新一遍,保 ...

  7. 洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心)

    洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/132 ...

  8. while循环和字符串格式化

    小知识点 \n#换行 \t #制表 \r #回车 print(a,b,c,d,sep="\n")换行 sep默认空格 1.while--关键字(死循环) while 空格 条件: ...

  9. 搜索专题: HDU1428漫步校园

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  10. babel的初步了解

    前段时间开始研究ast,然后慢慢的顺便把babel都研究了,至于ast稍后的时间会写一篇介绍性博客专门介绍ast,本博客先介绍一下babel的基本知识点. 背景: 由于现在前端出现了很多非es5的语法 ...