Comet OJ - Contest #7 D 机器学习题 斜率优化 + 未调完
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 机器学习题 斜率优化 + 未调完的更多相关文章
- Comet OJ - Contest #11 A 水题
Code: #include <bits/stdc++.h> #define N 3000000 using namespace std; char str[N]; int main() ...
- Comet OJ - Contest #4--前缀和
原题:Comet OJ - Contest #4-B https://www.cometoj.com/contest/39/problem/B?problem_id=1577传送门 一开始就想着暴力打 ...
- Comet OJ - Contest #11 题解&赛后总结
Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最 ...
- Comet OJ - Contest #13-C2
Comet OJ - Contest #13-C2 C2-佛御石之钵 -不碎的意志-」(困难版) 又是一道并查集.最近做过的并查集的题貌似蛮多的. 思路 首先考虑,每次处理矩形只考虑从0变成1的点.这 ...
- Comet OJ - Contest #13 「火鼠的皮衣 -不焦躁的内心-」
来源:Comet OJ - Contest #13 芝士相关: 复平面在信息学奥赛中的应用[雾 其实是道 sb 题??? 发现原式貌似十分可二项式定理,然后发现确实如此 我们把 \(a^i\) 替换成 ...
- Comet OJ - Contest #13 「佛御石之钵 -不碎的意志-」(hard)
来源:Comet OJ - Contest #13 一眼并查集,然后发现这题 tmd 要卡常数的说卧槽... 发现这里又要用并查集跳过访问点,又要用并查集维护联通块,于是开俩并查集分别维护就好了 一开 ...
- Comet OJ - Contest #2 简要题解
Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...
- Comet OJ - Contest #2简要题解
Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/ ...
- Comet OJ - Contest #8
Comet OJ - Contest #8 传送门 A.杀手皇后 签到. Code #include <bits/stdc++.h> using namespace std; typede ...
随机推荐
- itchat初步解读登录(转)
原文:https://blog.csdn.net/coder_pig/article/details/81357810 itchat的登录采取的是通过itchat.auto_login()这个函数来完 ...
- Matlab——表达式 阵列与矩阵的创建
表达式 指令过长: 如果一个指令过长可以在结尾加上... 下一行继续写指令即可 若不想每次都显示运算结果,只需在运算式最後加上分号(:)即可 注释 基本的算术运算有: 加 (+).减 (-).乘 (* ...
- cocos2dx基础篇(14) 滚动视图CCScrollView
[3.x] (1)去掉 "CC" (2)滚动方向 > CCScrollViewDirection 改为强枚举 ScrollView::Dire ...
- 在linux服务器上自动备份数据库
脚本如下,没有任何问题: # !/usr/bin/pythonimport osimport timeimport datetimeimport pipesimport glob DB_HOST = ...
- 函数参数中经常见到的*args和**kwargs
在python中,这两个是python中的可变参数,*arg表示任意多个无名参数,类型为tuple;**kwargs表示关键字参数,为dict. 例如下面这个代码可以利用*args计算传入的n个数的平 ...
- python调用java代码 java虚拟机(jvm)
1.新建com文件夹,在里面新建 fibnq.java package com; public class fibnq { public fibnq(){} public int fb(int n){ ...
- Window7系统安装和使用MySql
win7系统MySql安装和使用教程 首先下载mysql安装包 点击下载mysql v5.7.1 解压 下载完毕后解压在D盘 路径为D:\mysql-5.7.13-winx64,然后进入这个目录,新建 ...
- 【Linux-设备树】.dtb文件的反汇编
在使用设备树时我们将**.dts文件利用dtc编译器编译为**.dtb文件. 在已知**.dtb文件的情况下我们有两种方法可以得到dts源码: 方法一:使用fdtdump工具进行反汇编 使用命令:ro ...
- P1177快速排序
这是一个快速排序的模板题.拿到题后便写了quicksort(确定一个基准数,利用两个哨兵,把大的放右边,小的放左边,再递归实现排序),但是竟然TLE了60pts(???),于是翻看dalao们的题解, ...
- 嗨翻C语言--这里没有蠢问题(一)
问:card_name[0]是什么意思?答:它是用户输入的第一个字符.如果用户输入了10,那么card_name[0]就将是1.问:总是得用/*和*/写注释吗?答:如果你的编译器支持C99标准,就可以 ...