类似于斜率优化的东西,果真CF的E以后才会考点算法啊。

感觉这种优化应该很常见,但这题直线只有第一象限的,但是插入,和查找操作是不变的,按极角排序后就可以直接用这个模板了。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std; typedef long long ll; struct Line
{
ll a,b;
ll get(ll x)
{
return a*x+b;
}
}; struct Convex_Hull
{
int size;
Line ls[];
void init()
{
size=;
}
bool is_bad(int one,int two,int three)//目前凸包集为xxx12 要将3插入,判断是否删除2
{
Line l1=ls[one],l2=ls[two],l3=ls[three];
return (l2.b-l1.b)*(l1.a-l3.a)>=(l3.b-l1.b)*(l1.a-l2.a);//我这样肯定可以!
}
void add_line(ll a,ll b)
{
ls[size++] = Line{a,b};//这样写也可以?
while(size>= && is_bad(size-, size-, size-) )
{
ls[size-] = ls[size-]; size--;
}
}
ll query(ll x)
{
int b=-,d=size-;
while(d-b > )
{
int mid=(b+d)/;
if( ls[mid].get(x) <= ls[mid+].get(x) )
{
b = mid;
}
else d = mid;
}
return ls[d].get(x);
}
}; #define N 200200 ll sum[N];
ll ans,tans;
Convex_Hull cv;
int g[N]; int main() {
int n;
cin>>n;
sum[]=;
for(int i=;i<=n;i++)
{
scanf("%d",g+i);
sum[i] = sum[i-]+g[i];
ans += (ll)i*g[i];
}
cv.init();
for(int i=;i<=n;i++)
{
cv.add_line(i-, -sum[i-]);
tans = max(tans,cv.query(g[i])+sum[i-]-(ll)i*g[i]);
} //第二遍,逆着写。
cv.init();
for(int i=n-;i>=;i--)
{
cv.add_line(-(i+), -sum[i+]);
tans = max(tans,cv.query(-g[i])+sum[i]-(ll)i*g[i]);
}
cout<<ans+tans<<endl;
return ;
}

convex hull trick CF344.E的更多相关文章

  1. 凸包(Convex Hull)构造算法——Graham扫描法

    凸包(Convex Hull) 在图形学中,凸包是一个非常重要的概念.简明的说,在平面中给出N个点,找出一个由其中某些点作为顶点组成的凸多边形,恰好能围住所有的N个点. 这十分像是在一块木板上钉了N个 ...

  2. Convex Hull 实现理论+自制Python代码

    Convex Hull 概述 计算n维欧式空间散点集的凸包,有很多的方法.但是如果要实现快速运算则其难点在于:如何快速判断散点集的成员是否是在凸集的内部.如果可以简化判断的运算过程,则可以极大简化迭代 ...

  3. OpenCV入门之寻找图像的凸包(convex hull)

    介绍   凸包(Convex Hull)是一个计算几何(图形学)中的概念,它的严格的数学定义为:在一个向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包.   在图像处理过程中,我们 ...

  4. 2D Convex Hulls and Extreme Points( Convex Hull Algorithms) CGAL 4.13 -User Manual

    1 Introduction A subset S⊆R2 is convex if for any two points p and q in the set the line segment wit ...

  5. Monotone Chain Convex Hull(单调链凸包)

    Monotone Chain Convex Hull(单调链凸包)算法伪代码: //输入:一个在平面上的点集P //点集 P 按 先x后y 的递增排序 //m 表示共a[i=0...m]个点,ans为 ...

  6. convex hull

    1 什么是convex hull 就是凸包,是计算几何中的一个概念,计算几何是计算机图形学的基础之一. 对于二维平面来说是这样的:对于二维平面上的点集,凸包是位于最外层的点构成的包围其它所有的点的凸多 ...

  7. opencv::凸包-Convex Hull

    概念介绍 什么是凸包(Convex Hull),在一个多变形边缘或者内部任意两个点的连线都包含在多边形边界或者内部. 正式定义:包含点集合S中所有点的最小凸多边形称为凸包 Graham扫描算法 首先选 ...

  8. Convex Hull | Set 1

    Given a set of points in the plane. the convex hull of the set is the smallest convex polygon that c ...

  9. 2018牛客网暑假ACM多校训练赛(第三场)I Expected Size of Random Convex Hull 计算几何,凸包,其他

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-I.html 题目传送门 - 2018牛客多校赛第三场 I ...

随机推荐

  1. No goals have been specified for this build 解决方案

    运行maven报错:[ERROR] No goals have been specified for this build. You must specify a valid lifecycle ph ...

  2. [Spring boot] A quick REST API Guide

    Controller: Code below shows a basic Controller to handle GET, POST; DELETE, PUT requests. package h ...

  3. iOS 调用第三方地图进行导航

    //支持的地图 { _model = model; //支持的地图 NSMutableArray *maps = [NSMutableArray array]; //苹果原生地图-苹果原生地图方法和其 ...

  4. 怎样写APP计划书-20150313早读课

    我们每天都会收到拥有APP创意的人们的电话和邮件,他们想知道把这样的APP做出来需要多少钱.在Calvium,我们尽可能帮助他们,但有时候 做这样的报价真的很难.询问一款APP的价值,就和询问一条绳子 ...

  5. UITabBarController超强拓展

    代码地址如下:http://www.demodashi.com/demo/11901.html 一.运行效果图 二.项目结构截图 三.主要API 我们主要关注的是TLTabBarController, ...

  6. Log4j介绍,log4j.properties配置详解

    http://www.cnblogs.com/simle/archive/2011/09/29/2195341.html本文主要解释log4j的配置文件各个配置项的含义,内容是从网上转载的 1.Log ...

  7. select/poll/epoll原理探究及总结

    select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作.但select ...

  8. Mac 上的传奇效率神器 Alfred 3

    下载地址:https://www.alfredapp.com/ 第三方教程:https://www.jianshu.com/p/e9f3352c785f 一.内置快捷键介绍 1.默认快捷呼出热键是: ...

  9. Sql语句查询XML - 小结

    --两种方式查询 DECLARE @varXML XML, @varXML1 XML --.xml数据源为属性方式 SET @varXML = '<PARAM> <Row FID = ...

  10. 阿里云RDS备份的tar格式包恢复到本地自建数据库

    说明 阿里云RDS-mysql数据库是通过percona-Xtrabackup进行备份的,所以恢复时也需要安装该软件. 另外注意的是:你自己下载的MySQL版本要和阿里云上的MySQL版本一致,不然会 ...