笔记-[JSOI2011]柠檬
笔记-[JSOI2011]柠檬
\(f_i\) 表示到第 \(i\) 只贝壳最多可以换得的柠檬数。
令 \(c_i=\sum_{h=1}^i[s_h=s_i]\)。
f_i=&\max\{f_{j-1}+s_i(c_i-c_j+1)^2\}(s_i=s_j,j\le i)\\\\
f_i=&f_{j-1}+s_i(c_i^2+c_j^2+1-2c_ic_j+2c_i-2c_j)\\\\
f_i=&f_{j-1}+s_ic_i^2+s_ic_j^2+s_i-2s_ic_ic_j+2s_ic_i-2s_ic_j\\\\
f_{j-1}+s_jc_j^2-2s_jc_j=&2s_ic_ic_j+f_i-s_ic_i^2-2s_ic_i-s_i\\\\
\end{split}
\\
\therefore
\begin{cases}
y=f_{j-1}+s_jc_j^2-2s_jc_j\\
k=2s_ic_i\\
x=c_j\\
b=f_i-s_ic_i^2-2s_ic_i-s_i\\
\end{cases}
\\
\Huge y=kx+b
\]
搞定。
Code
#include <bits/stdc++.h>
using namespace std;
//Start
#define re register
#define il inline
#define mk make_pair
#define pb push_back
#define db double
#define lng long long
#define fi first
#define se second
const int inf=0x3f3f3f3f;
const lng INF=0x3f3f3f3f3f3f3f3f;
//Data
const int N=10000;
int n;
vector<int> s,cnt(N+7),c;
vector<lng> f;
//DP
template<typename T>il T p2(re T x){return x*x;}
il db X(re int j){return c[j];}
il db Y(re int j){return f[j-1]+p2((lng)c[j])*s[j]-(lng)2*c[j]*s[j];}
il db slope(re int k,re int t){return (Y(t)-Y(k))/(X(t)-X(k));}
il lng F(re int i,re int j){return f[j-1]+p2((lng)c[i]-c[j]+1)*s[i];}
vector<int> que[N+7];
#define q que[R]
#define r que[R][0]
il lng DP(){
f.pb(0);
for(re int R=1;R<=N;R++) q=vector<int>(cnt[R]+7);
for(re int i=1,R=s[i];i<=n;R=s[++i]){
while(r>=2&&slope(q[r-1],i)>=slope(q[r-1],q[r])) r--; q[++r]=i;
while(r>=2&&F(i,q[r])<=F(i,q[r-1])) r--; f.pb(F(i,q[r]));
}
return f[n];
}
//Main
int main(){
scanf("%d",&n),s.pb(0),c.pb(0);
for(re int i=1,x;i<=n;i++) scanf("%d",&x),s.pb(x),c.pb(++cnt[x]);
printf("%lld\n",DP());
return 0;
}
\]
笔记-[JSOI2011]柠檬的更多相关文章
- bzoj4709: [Jsoi2011]柠檬 斜率优化
题目链接 bzoj4709: [Jsoi2011]柠檬 题解 斜率优化 设 \(f[i]\) 表示前 \(i\)个数分成若干段的最大总价值. 对于分成的每一段,左端点的数.右端点的数.选择的数一定是相 ...
- 4709: [Jsoi2011]柠檬
4709: [Jsoi2011]柠檬 https://www.lydsy.com/JudgeOnline/problem.php?id=4709 分析: 决策单调性+栈+二分. 首先挖掘性质:每个段选 ...
- 【BZOJ】4709: [Jsoi2011]柠檬
4709: [Jsoi2011]柠檬 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 779 Solved: 310[Submit][Status][ ...
- 【BZOJ4709】[Jsoi2011]柠檬 斜率优化+单调栈
[BZOJ4709][Jsoi2011]柠檬 Description Flute 很喜欢柠檬.它准备了一串用树枝串起来的贝壳,打算用一种魔法把贝壳变成柠檬.贝壳一共有 N (1 ≤ N ≤ 100,0 ...
- 【LG5504】[JSOI2011]柠檬
[LG5504][JSOI2011]柠檬 题面 洛谷 题解 考虑\(dp\),令\(f_i\)表示\(dp\)到第\(i\)位且在第\(i\)位分段的最大值. 我们令题面中的\(s_i\)为\(a_i ...
- bzoj4709 [jsoi2011]柠檬
Description Flute 很喜欢柠檬.它准备了一串用树枝串起来的贝壳,打算用一种魔法把贝壳变成柠檬.贝壳一共有 N (1 ≤ N ≤ 100,000) 只,按顺序串在树枝上.为了方便,我们 ...
- 【bzoj4709】[Jsoi2011]柠檬 斜率优化
题目描述 给你一个长度为 $n$ 的序列,将其分成若干段,每段选择一个数,获得 $这个数\times 它在这段出现次数的平方$ 的价值.求最大总价值. $n\le 10^5$ . 输入 第 1 行:一 ...
- BZOJ4709 Jsoi2011 柠檬【决策单调性+单调栈】
Description Flute 很喜欢柠檬.它准备了一串用树枝串起来的贝壳,打算用一种魔法把贝壳变成柠檬.贝壳一共有 N (1 ≤ N ≤ 100,000) 只,按顺序串在树枝上.为了方便,我们从 ...
- bzoj 4709: [Jsoi2011]柠檬
Description Flute 很喜欢柠檬.它准备了一串用树枝串起来的贝壳,打算用一种魔法把贝壳变成柠檬.贝壳一共有 N (1 ≤ N ≤ 100,000) 只,按顺序串在树枝上.为了方便,我们从 ...
随机推荐
- SpringBoot微服务框架
springboot 是什么? 配置如何编写 yaml 自动装配原理 集成Web开发 集成数据库Druid 分布式开发:Dubbo(RPC)+zookeeper swagger:接口文档 任务调度 S ...
- 02、Spring-HelloWorld
0. 环境准备 1) jar包 jar包我会帮大家准备好的,所以不用担心找不到Jar包 链接:https://pan.baidu.com/s/1JJcYaspK07JL53vU-q-BUQ 提取码: ...
- Docker 初始
1. Docker 是什么? 官网的介绍是"Docker is the world's leading software container platform." 官方给Docke ...
- 快速安装jumpserver开源堡垒机
一 安装centos 7.X操作系统 二.选择极速安装(注意配置需要是4G2核) https://jumpserver.readthedocs.io/zh/master/install/setup_b ...
- mysql case when语句的使用
case具有两种格式.简单case函数和case搜索函数. 简单函数 CASE [col_name] WHEN [value1] THEN [result1]-ELSE [default] END 搜 ...
- 如何用ABBYY FineReader 识别表格
ABBYY FineReader有着强大的OCR文字识别功能,不但可以将文件转换为文本文档或Word文档,也可以识别PDF文件或者图片上的表格,并且转换为Excel文件. 下面小编就使用ABBYY F ...
- C++基础知识篇:C++ 存储类
存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期.这些说明符放置在它们所修饰的类型之前.下面列出 C++ 程序中可用的存储类: auto register static extern m ...
- redis cluster下的pipeline
因为key在cluster分布在不同的slot,可能在不同的机器,部分redis的客户端(比如jedis)是不支持pipeline的 针对jedis我们可能要先把这些key对应的slot手机起来,得到 ...
- Oracle11gR2 RAC voting disk error
故障现象:2+3节点配置,alert日志中提示vote盘错误,集群无法拉起来. 分析过程:Oracle 11g RAC依据OLR,OCR,VOTE磁盘进行节点信息注册,维护集群状态以及完成选举投票.其 ...
- LeetCode 004 Median of Two Sorted Arrays
题目描述:Median of Two Sorted Arrays There are two sorted arrays A and B of size m and n respectively. F ...