[BZOJ4709][JSOI2011]柠檬 决策单调性优化dp
题解:
解法1:
单调栈优化
首先发现一个性质就是
如果当前从i转移比从j转移更加优秀
那么之后就不会从j转移
所以我们考虑利用这个性质
我们要维护一个队列保证前一个超过后一个的时间单调不减
怎么来维护呢
我们计算s[t-2]超过s[t-1]的时间t1,s[t-1]超过i的时间t2,如果t1<t2就说明了s[t-1]没有用了
另外再更新的时候我们算一下相邻两个哪个比较有用,要是前面哪个就弹栈
解法2:
f[i]=max(f[j−1]+a[j]×(s[i]−s[j]+1)^2)
我们先尝试一下一般的斜率优化,会发现是不行的
因为会出现s[i]^2和s[i]两项
我们转化一下这个式子
f[j−1]+(s[j]−1)2∗color=2∗s[i]∗color∗(s[j]−1)+f[i]−s[i]∗v[i]
把左边看成y,右边(s[j]-1)看成y,2*s[i]*color看成系数,后面的看成b
问题就变成了一条直线切割的b最大
显然凸包维护就可以了
代码:
#include <bits/stdc++.h>
using namespace std;
#define IL inline
#define ll long long
#define rint register int
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
#define me(x) memset(x,0,sizeof(x))
const int INF=1e9;
const int N=2e5+;
int n;
ll f[N];
vector<int> g[N];
int s[N],a[N],cnt[N];
IL ll calc(int x,int y)
{
return f[x-]+1ll*a[x]*y*y;
}
IL int find(int x,int y)
{
int h=max(s[x],s[y]),t=n;
while(h<t)
{
int mid=(h+t)/;
if (calc(x,mid-s[x]+)>=calc(y,mid-s[y]+)) t=mid;
else h=mid+;
}
return(h);
}
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n;
rep(i,,n)
{
int x;
cin>>x;
a[i]=x; s[i]=++cnt[x];
int k1=g[x].size();
while (k1>=&&find(g[x][k1-],g[x][k1-])<=find(g[x][k1-],i))
g[x].pop_back(),k1--;
g[x].push_back(i); k1++;
while (k1>=&&find(g[x][k1-],g[x][k1-])<=s[i]) g[x].pop_back(),k1--;
f[i]=calc(g[x][k1-],s[i]-s[g[x][k1-]]+);
}
cout<<f[n];
return ;
}
[BZOJ4709][JSOI2011]柠檬 决策单调性优化dp的更多相关文章
- BZOJ4709: [Jsoi2011]柠檬(决策单调性)
		题意 题目链接 Sol 结论:每次选择的区间一定满足首位元素相同.. 仔细想想其实挺显然的,如果不相同可以删掉多着的元素,对答案的贡献是相同的 那么设\(f[i]\)表示到第\(i\)个位置的最大价值 ... 
- 决策单调性优化dp 专题练习
		决策单调性优化dp 专题练习 优化方法总结 一.斜率优化 对于形如 \(dp[i]=dp[j]+(i-j)*(i-j)\)类型的转移方程,维护一个上凸包或者下凸包,找到切点快速求解 技法: 1.单调队 ... 
- Lightning Conductor 洛谷P3515 决策单调性优化DP
		遇见的第一道决策单调性优化DP,虽然看了题解,但是新技能√,很开森. 先%FlashHu大佬,反正我是看了他的题解和精美的配图才明白的,%%%巨佬. 废话不多说,看题: 题目大意 已知一个长度为n的序 ... 
- CF868F Yet Another Minimization Problem 分治决策单调性优化DP
		题意: 给定一个序列,你要将其分为k段,总的代价为每段的权值之和,求最小代价. 定义一段序列的权值为$\sum_{i = 1}^{n}{\binom{cnt_{i}}{2}}$,其中$cnt_{i}$ ... 
- 2018.09.28 bzoj1563: [NOI2009]诗人小G(决策单调性优化dp)
		传送门 决策单调性优化dp板子题. 感觉队列的写法比栈好写. 所谓决策单调性优化就是每次状态转移的决策都是在向前单调递增的. 所以我们用一个记录三元组(l,r,id)(l,r,id)(l,r,id)的 ... 
- [BZOJ4850][JSOI2016]灯塔(分块/决策单调性优化DP)
		第一种方法是决策单调性优化DP. 决策单调性是指,设i>j,若在某个位置x(x>i)上,决策i比决策j优,那么在x以后的位置上i都一定比j优. 根号函数是一个典型的具有决策单调性的函数,由 ... 
- BZOJ2216 Poi2011 Lightning Conductor 【决策单调性优化DP】
		Description 已知一个长度为n的序列a1,a2,...,an. 对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p - sqrt( ... 
- BZOJ4899: 记忆的轮廓【概率期望DP】【决策单调性优化DP】
		Description 通往贤者之塔的路上,有许多的危机. 我们可以把这个地形看做是一颗树,根节点编号为1,目标节点编号为n,其中1-n的简单路径上,编号依次递增, 在[1,n]中,一共有n个节点.我 ... 
- 2018.10.14 NOIP训练 猜数游戏(决策单调性优化dp)
		传送门 一道神奇的dp题. 这题的决策单调性优化跟普通的不同. 首先发现这道题只跟r−lr-lr−l有关. 然后定义状态f[i][j]f[i][j]f[i][j]表示猜范围为[L,L+i−1][L,L ... 
随机推荐
- 【转】C++标准转换运算符static_cast
			static_cast<new_type> (expression) 虽然const_cast是用来去除变量的const限定,但是static_cast却不是用来去除变量的static引用 ... 
- 带jdk15类似的jar配置
			针对部分jar文件名带有jdk15结尾的依赖配置时,需要添加<classifier>标签进行区分 比如针对:json-lib-2.4-jdk15.jar的jar依赖配置 <depen ... 
- Mysql   数据库安装与配置详解
			目录 一.概述 二.MySQL安装 三.安装成功验证 四.NavicatforMySQL下载及使用 一.概述 MySQL版本:5.7.17 下载地址:http://rj.baidu.com/soft/ ... 
- [MySQL]InnoDB引擎的行锁和表锁
			1.行锁和表锁 在mysql 的 InnoDB引擎支持行锁,与Oracle不同,mysql的行锁是通过索引加载的,即是行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描, 行锁则 ... 
- 第一篇----mysql体系
			mysql体系: 解释: 调用: 1.connectors:连接器 (远程调用mysql,Native很常用的mysql远程连接工具.其它是可以调用mysql支持的一些语言和方法) mysql结构 2 ... 
- CodeCraft-19 and Codeforces Round #537 (Div. 2) 题解
			传送门 D. Destroy the Colony 首先明确题意:除了规定的两种(或一种)字母要在同侧以外,其他字母也必须在同侧. 发现当每种字母在左/右边确定之后,方案数就确定了,就是分组的方案数乘 ... 
- LuoGu  P2863 [USACO06JAN]牛的舞会The Cow Prom
			题目传送门 这个题还是个缩点的板子题...... 答案就是size大于1的强连通分量的个数 加一个size来统计就好了 #include <iostream> #include <c ... 
- 用VS制作的windows服务安装包 安装完后如何让服务自动启动
			vs 服务做成安装包,如何安装以后启动服务,只要在类名为projectinstaller的类中重写commit事件即可 public override void Commit(IDic ... 
- Net 4.5 WebSocket 在 Windows 7, Windows 8 and Server 2012上的比较
			.Net 4.5 WebSocket Server Running on Windows 7? Net 4.5 WebSocket Server 可以运行在 Windows 7,但是Net 4.5的 ... 
- C# 将Excel转换为PDF
			C# 将Excel转换为PDF 转换场景 将Excel转换为PDF是一个很常用的功能,常见的转换场景有以下三种: 转换整个Excel文档到PDF转换Excel文档的某一个工作表到PDF转换Excel文 ... 
