二分上界有多大开多大 二分上界有多大开多大 二分上界有多大开多大 重要的事情说三遍

又被bright神仙带着做题了

先无脑上wqs二分

我们可以把这个柿子画一下,区间的花费就变成((sigema(l~r)i s[i])+1)^2了

那么这个东西经过我艰苦的画柿子证明是满足四边形不等式的

然后就和贞鱼那题一样搞了?然后我就被卡常了qwq囧

其实是自己思维僵化得厉害

上个斜率优化不好吗2333333

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL; int n;LL s[],f[],g[];
int h,t,q[];
LL Y(int j){return f[j]+s[j]*s[j]-*s[j];}
LL X(int j){return s[j];}
void check(LL C)
{
h=,t=;q[++t]=;f[]=g[]=;
for(int i=;i<=n;i++)
{
while(h<t&&(Y(q[h+])-Y(q[h]))<=(X(q[h+])-X(q[h]))**s[i])h++;
f[i]=f[q[h]]+(s[i]-s[q[h]]+)*(s[i]-s[q[h]]+)+C;
g[i]=g[q[h]]+;
while(h<t&& (Y(q[t])-Y(q[t-]))*(X(i)-X(q[t])) >= (Y(i)-Y(q[t]))*(X(q[t])-X(q[t-])) )t--;
q[++t]=i;
}
}
int main()
{
int K;
scanf("%d%d",&n,&K);s[]=;
for(int i=;i<=n;i++)
scanf("%lld",&s[i]), s[i]+=s[i-]; LL l=,r=1e18,ans;
while(l<=r)
{
LL mid=(l+r)/;
check(mid);
if(g[n]>=K)
{
ans=f[n]-K*mid;
l=mid+;
}
else r=mid-;
}
printf("%lld\n",ans);
return ;
}

斜率优化

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL; int n;
LL s[],f[],g[];
LL val(int l,int r){return (s[r]-s[l]+)*(s[r]-s[l]+);}
LL cost(int j,int i){return f[j]+val(j,i);}//由j这个决策点更新i的花费
struct node
{
int l,r,id;
node(){}
node(int L,int R,int ID){l=L;r=R;id=ID;}
}q[];
void check(LL C)
{
int h=,t=;q[++t]=node(,n,);
for(int i=;i<=n;i++)
{
if(q[h].r<i)h++;
q[h].l=i;
f[i]=cost(q[h].id,i)+C;
g[i]=g[q[h].id]+; if(h>t||cost(i,n)<=cost(q[h].id,n))
{
while(h<=t&&cost(i,q[t].l)<=cost(q[t].id,q[t].l))t--;
if(h>t)q[++t]=node(i,n,i);
else
{
int l=q[t].l,r=q[t].r,ans;
while(l<=r)
{
int mid=(l+r)/;
if(cost(i,mid)>cost(q[t].id,mid))
{
ans=mid;
l=mid+;
}
else r=mid-;
}
q[t].r=ans;
q[++t]=node(ans+,n,i);
}
}
}
}
int main()
{
int K;
scanf("%d%d",&n,&K);s[]=;
for(int i=;i<=n;i++)
scanf("%lld",&s[i]), s[i]+=s[i-]; LL l=,r=1e18,ans;
while(l<=r)
{
LL mid=(l+r)/;
check(mid);
if(g[n]>=K)
{
ans=f[n]-K*mid;
l=mid+;
}
else r=mid-;
}
printf("%lld\n",ans);
return ;
}

四边形不等式优化

洛谷T51924 忘情的更多相关文章

  1. 洛谷P4983 忘情 (WQS二分+斜率优化)

    题目链接 忘情水二分模板题,最优解对划分段数的导数满足单调性(原函数凸性)即可使用此方法. 详细题解洛谷里面就有,不啰嗦了. 二分的临界点让人有点头大... #include<bits/stdc ...

  2. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  3. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  4. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  5. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  6. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  7. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

  8. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  9. 洛谷八月月赛Round1凄惨记

    个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...

随机推荐

  1. Luogu P1315 观光公交

    # 解题思路 一开始自己想了一个贪心,虽然贪心的主要思路是对的,但并不会统计游客用的旅行时间.所以就去题解里面看看,第一篇是最小费用最大流,会比较麻烦,所以就去看了看底下的贪心,第一篇贪心被卡掉了,看 ...

  2. Go:工厂模式

    Go的结构体没有构造函数,通常可以使用工厂模式来解决这个问题. 一个结构体的声明是这样的: package model type Student struct { Name string } 因为 S ...

  3. Java 文件操作大集合

    package com.sess.hny.sys.fileserver; import java.io.BufferedInputStream;import java.io.BufferedOutpu ...

  4. [学习资料] Tiny210(S5PV210) u-boot移植

    Tiny210(S5PV210) u-boot移植http://www.microoh.com/bbs/forum.php?mod=viewthread&tid=254&fromuid ...

  5. 开发调式时生成dump文件

    开发调式时,对程序生成dump文件:1:需要生成的时机,加Thread.sleep(600*1000).2:打开jvisualvm找到该程序进程号.3:jmap.

  6. caca需要用到x11作为图形输出

    编译错误:no output drivers were selected!. yum -y install xcb-proto yum -y install libxcb-devel.x86_64 l ...

  7. DBA的40条军规

    DBA操作规范 1.涉及业务上的修改/删除数据,在得到业务方.CTO的邮件批准后方可执行,执行前提前做好备份,必要时可逆. 2.所有上线需求必须走工单系统,口头通知视为无效. 3.在对大表做表结构变更 ...

  8. spring security 5.0 密码未加密报错

    使用spring security5.0后,配置文件中直接写普通的密码如:123456,会报错: java.lang.IllegalArgumentException: There is no Pas ...

  9. 【Intellij 】Intellij IDEA 添加jar包的三种方式

    一.直接复制:(不推荐) 方法:直接将硬盘上的jar包复制粘贴到项目的lib目录下即可. 注意: 1.对于导入的eclipse项目,该方式添加的jar包没有任何反应,用make编译项目会报错 2.对于 ...

  10. Linux下汇编语言学习笔记43 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...