luogu P5504 [JSOI2011]柠檬】的更多相关文章

bgm(雾) luogu 首先是那个区间的价值比较奇怪,如果推导后可以发现只有左右端点元素都是同一种\(s_x\)的区间才有可能贡献答案,并且价值为\(s_x(cnt(x)_r-cnt(x)_{l-1})^2\),这是因为如果选出来的这种元素的端点的左右两边还有其他元素,那么显然的把那些其他的元素另外划分在别的区间里可以获得更优的答案 然后现在就可以\(O(n^2)\)了,转移大概为\(f_i=\min_{j<i,s_j=s_i} f_{j-1}+s_i(cnt(s_i)_i-cnt(s_i)_…
传送门 显然考虑 $dp$ ,发现从右往左和从左往右是一样的,所以只考虑一边就行 发现对于切的左右端点,选择的 $s0$ 一定要为左右端点的贝壳大小,不然这个端点不产生贡献还不如分开来单个贡献 所以设 $f[i]$ 表示当前把 $1$ 到 $i$ 的都切了,产生的最大贡献,设 $c[i]$ 表示位置 $i$ 及之前大小为 $s[i]$ 的柠檬个数,有转移: $f[i]=f[j-1]+s[i](c[i]-c[j]+1)^2,j \in [1,i]$,并且要满足 $s[i]=s[j]$ ,发现是个斜…
题目链接 bzoj4709: [Jsoi2011]柠檬 题解 斜率优化 设 \(f[i]\) 表示前 \(i\)个数分成若干段的最大总价值. 对于分成的每一段,左端点的数.右端点的数.选择的数一定是相同的.如果不相同则可以从这个段里删去这个数,答案会更优. 于是就有转移:\(f_i=f_{j-1}+a·(c_i-c_j+1)^2\ ,\ j\le i\ ,\ a_j=a_i\) ,其中 \(a\) 表示原序列,\(c\) 表示这个位置时这个数第几次出现 显然这个式子可以斜率优化,整理得:$ac_…
4709: [Jsoi2011]柠檬 https://www.lydsy.com/JudgeOnline/problem.php?id=4709 分析: 决策单调性+栈+二分. 首先挖掘性质:每个段选的数必须是起点或者终点,起点和终点的数必须是一样的.否则可以去掉起点或者终点的一个数,答案不会变差. 然后又n^2dp:f[i]=f[j]+cost(j,i),cost(j,i)=a[i]*(s[i]-s[j])^2.s[i]表示到i时候,a[i]的个数. 单独对每个数字考虑,因为后面存在一个平方,…
4709: [Jsoi2011]柠檬 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 779  Solved: 310[Submit][Status][Discuss] Description Flute 很喜欢柠檬.它准备了一串用树枝串起来的贝壳,打算用一种魔法把贝壳变成柠檬.贝壳一共有 N (1 ≤ N  ≤ 100,000) 只,按顺序串在树枝上.为了方便,我们从左到右给贝壳编号 1..N.每只贝壳的大小不一定相同, 贝壳 i 的大小为 si…
[BZOJ4709][Jsoi2011]柠檬 Description Flute 很喜欢柠檬.它准备了一串用树枝串起来的贝壳,打算用一种魔法把贝壳变成柠檬.贝壳一共有 N (1 ≤ N ≤ 100,000) 只,按顺序串在树枝上.为了方便,我们从左到右给贝壳编号 1..N.每只贝壳的大小不一定相同,贝壳 i 的大小为 si(1 ≤ si ≤10,000).变柠檬的魔法要求,Flute 每次从树枝一端取下一小段连续的贝壳,并选择一种贝壳的大小 s0.如果 这一小段贝壳中 大小为 s0 的贝壳有 t…
[LG5504][JSOI2011]柠檬 题面 洛谷 题解 考虑\(dp\),令\(f_i\)表示\(dp\)到第\(i\)位且在第\(i\)位分段的最大值. 我们令题面中的\(s_i\)为\(a_i\),那么对于一个转移点\(j\),显然\(a_i=a_j\),因为多余的颜色肯定无法产生贡献,不如不选. 令\(c_i\)为位置\(i\)的颜色第几次出现. 那么有转移方程: \[ f_i=f_{j-1}+a_i(c_i-c_j+1)^2 \] 推下式子: \[ f_i=f_{j-1}+a_i(c…
笔记-[JSOI2011]柠檬 [JSOI2011]柠檬 \(f_i\) 表示到第 \(i\) 只贝壳最多可以换得的柠檬数. 令 \(c_i=\sum_{h=1}^i[s_h=s_i]\). \[\begin{split} 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…
Description Flute 很喜欢柠檬.它准备了一串用树枝串起来的贝壳,打算用一种魔法把贝壳变成柠檬.贝壳一共有 N (1 ≤ N  ≤ 100,000) 只,按顺序串在树枝上.为了方便,我们从左到右给贝壳编号 1..N.每只贝壳的大小不一定相同, 贝壳 i 的大小为 si(1 ≤ si ≤10,000).变柠檬的魔法要求,Flute 每次从树枝一端取下一小段连续的贝壳,并 选择一种贝壳的大小 s0.如果 这一小段贝壳中 大小为 s0 的贝壳有 t 只,那么魔法可以把这一小段贝壳变成 s…
题目描述 给你一个长度为 $n$ 的序列,将其分成若干段,每段选择一个数,获得 $这个数\times 它在这段出现次数的平方$ 的价值.求最大总价值. $n\le 10^5$ . 输入 第 1 行:一个整数,表示 N. 第 2 .. N + 1 行:每行一个整数,第 i + 1 行表示 si. 输出 仅一个整数,表示 Flute 最多能得到的柠檬数. 样例输入 522523 样例输出 21 题解 斜率优化 设 $f[i]$ 表示前 $i$ 个数分成若干段的最大总价值. 显然对于分成的每一段,左端…