DP专练3:征途

虽然只有1道题,但是含金量还是够够di

文章目录

  • 题目
  • 题解
  • 代码实现

题目

在这里插入图片描述

在这里插入图片描述

题解

我们直接对答案输出格式进行处理:设第 iii 天走的路程为 aia_iai,总路程为 S=∑i=1nleniS=\sum_{i=1}^nlen_iS=i=1nleni,那么 v=∑i=1m(ai−Sm)2mv=∑_{i=1}^m\frac{(a_i-\frac{S}{m})^2}{m}v=i=1mm(aimS)2

因为输出要乘以m2m^2m2,就变成了 ∑i=1m(ai−Sm)2∗m∑_{i=1}^m(a_i-\frac{S}{m})^2*mi=1m(aimS)2m

将求和 sigmasigmasigma 拆开,得到 m∗(∑i=1mai−∑i=1m2∗ai∗Sm+∑i=1mS2m2)m*\Big(∑_{i=1}^ma_i-\frac{∑_{i=1}^m2*a_i*S}{m}+∑_{i=1}^m\frac{S^2}{m^2}\Big)m(i=1maimi=1m2aiS+i=1mm2S2)

再把 mmm 丢进去,成为 m∗∑i=1mai−∑i=1m2∗ai∗S+∑i=1mS2mm*∑_{i=1}^ma_i-∑_{i=1}^m2*a_i*S+∑_{i=1}^m\frac{S^2}{m}mi=1maii=1m2aiS+i=1mmS2

上述式子就变了:m∗∑i=1mai−2∗S∗S+m∗S2mm*∑_{i=1}^ma_i-2*S*S+m*\frac{S^2}{m}mi=1mai2SS+mmS2

化简得,需要我们求 m∗∑i=1mai2−S2m*∑_{i=1}^ma_i^2-S^2mi=1mai2S2

因为 mmmSSS 都是已知的,要求出最小答案,即需要我们求得 ∑i=1mai2∑_{i=1}^ma_i^2i=1mai2 最小即可

我们要使得这个和最小,可以设 dp[j][i]dp[j][i]dp[j][i] 表示 j 天走了 i 段路的最优方案

则有,dp[j][i]=min⁡{dp[j−1][k]+(s[i]−s[k])2}(k∈[1,i−1]dp[j][i]=\min\Big\{dp[j-1][k]+(s[i]-s[k])^2\Big\}(k∈[1,i-1]dp[j][i]=min{dp[j1][k]+(s[i]s[k])2}(k[1i1],其中 sis_isi 表示前 iii 段路的前缀和。

这样,我们就可以直接对答案进行 DPDPDP,时间复杂度为 O(nm2)O(nm^2)O(nm2)

但是很显然,这样是不能把分拿满的。考虑优化。

对于这个式子,很显然,它的第一维是可以滚动的:我们设 g(i)=dp[j−1][i]g(i)=dp[j-1][i]g(i)=dp[j1][i]

对于 iiiaaaiiibbb 两个点,若 aaabbb 优,则

g(a)+(si−sa)2<g(b)+(si−sb)2g(a)+(s_i-s_a)^2 < g(b)+(s_i-s_b)^2g(a)+(sisa)2<g(b)+(sisb)2

⇒g(a)+sa2−2∗si∗sa<g(b)+sb2−2∗si∗sb\Rightarrow g(a)+s_a^2-2*s_i*s_a < g(b)+s_b^2-2*s_i*s_bg(a)+sa22sisa<g(b)+sb22sisb

⇒(g(a)+sa2)−(g(b)+sb2)sa−sb<2∗si\Rightarrow \frac{(g(a)+s_a^2)-(g(b)+s_b^2)}{s_a-s_b}<2*s_isasb(g(a)+sa2)(g(b)+sb2)<2si 【这一步成立的前提是因为 sss 是单调的】

可以发现,左边是一个斜率式子。

斜率优化 dpdpdp 即可。

代码实现

#include <cstdio>
#include <cstring>
#define MAXN 3005
int n, m, len;
int dp[MAXN][MAXN];
int s[MAXN], deq[MAXN * MAXN];int Find_y ( int u, int v, int j ) {int first = dp[j - 1][u] + s[u] * s[u];int second = dp[j - 1][v] + s[v] * s[v];return first - second;
}
int Find_x ( int u, int v ) {return s[u] - s[v];
}int main() {scanf ( "%d %d", &n, &m );for ( int i = 1;i <= n;i ++ ) {scanf ( "%d", &len );s[i] = s[i - 1] + len;}for ( int i = 1;i <= n;i ++ )dp[1][i] = s[i] * s[i];for ( int j = 2;j <= m;j ++ ) {int head = 1, tail = 0;for ( int i = 1;i <= n;i ++ ) {while ( head < tail && Find_y ( deq[head], deq[head + 1], j ) > 2 * s[i] * Find_x ( deq[head], deq[head + 1] ) )head ++;dp[j][i] = dp[j - 1][deq[head]] + s[i] * s[i] - 2 * s[i] * s[deq[head]] + s[deq[head]] * s[deq[head]];while ( head < tail && Find_y ( deq[tail], deq[tail - 1], j ) * Find_x ( i, deq[tail] ) > Find_y ( i, deq[tail], j ) * Find_x ( deq[tail], deq[tail - 1] ) )tail --;deq[++ tail] = i;}}printf ( "%d", m * dp[m][n] - s[n] * s[n] );return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云时代的.NET

编程语言从最初的0101机器码到汇编语言再到面向对象的编程&#xff0c;不断的发展&#xff0c;整个发展趋势呈现高内聚、低耦合、可重用、可理解的特点。最早编程是用机器码&#xff0c;人的大脑不像电脑&#xff0c;无法处理0101&#xff1b;后来汇编语言还是太费解&#xff0…

P6295-有标号 DAG 计数【多项式求逆,多项式ln】

正题 题目链接:https://www.luogu.com.cn/problem/P6295 题目大意 求所有nnn个点的弱联通DAGDAGDAG数量。 1≤n≤1051\leq n\leq 10^51≤n≤105 解题思路 先不考虑弱联通的限制&#xff0c;求nnn个点的DAGDAGDAG数量。 设为fif_ifi​&#xff0c;那么有式子 fn∑i1n(ni)2i(…

研究性学习:APP的隐私问题

文章目录写在前面背景&#xff08;problem&#xff09;一个实例(example)手机App用户输入隐私数据的识别与检测技术研究&#xff08;solution&#xff1f;&#xff09;&#xff08;官方&#xff09;概览背景介绍4.系统设计隐私政策引言1.收集信息2. 信息使用3. 信息披露4. 信息…

DP专练4:[SCOI 2010]股票交易(单调队列优化dp)

昨天晚上&#xff0c;初见它时&#xff0c;月黑风高&#xff0c;一个电脑&#xff0c;一支笔&#xff0c;一个人 今天秋高气爽&#xff0c;再一瞥&#xff0c;回眸间 我又来了&#xff0c;honey题目题解代码实现题目 题解 首先这种 iii 天与前面 jjj 天有关联&#xff0c;而…

【做题记录】[NOIP2016 普及组] 魔法阵

P2119 魔法阵 2016年普及组T4 题意&#xff1a; 给定一系列元素 \(\{X_i\}\) &#xff0c;求满足以下不等式的每一个元素作为 \(a,b,c,d\) 的出现次数 。 \[\begin{cases}X_a<X_b<X_c<X_d \\ X_a-X_b2\times (X_d-X_c) \\X_b-X_a<\dfrac{X_c-X_b}{3}\end{cases} \]…

P3812 【模板】线性基

P3812 【模板】线性基 题目描述 给定n个整数&#xff08;数字可能重复&#xff09;&#xff0c;求在这些数中选取任意个&#xff0c;使得他们的异或和最大 题解&#xff1a; 把所有数insert进入线性基&#xff0c;把线性基中所有元素xor起来 ans 代码&#xff1a; #incl…

“被狗啃”的按钮引发的开源社区信任危机

昨天&#xff0c;在国外民众还在欢度圣诞期间&#xff0c;开发者社区却对 Antd 开发团队发起了连番的炮轰。一觉醒来&#xff0c;他们发现由自己参与设计的、公司内网、办事系统等网页上&#xff0c;有一些按钮的上面多了一团白色的“积雪”&#xff0c;在白背景下&#xff0c;…

牛客练习赛89E-牛牛小数点【数论】

正题 题目链接:https://ac.nowcoder.com/acm/contest/11179/E 题目大意 定义f(x)f(x)f(x)表示1x\frac{1}{x}x1​的混循环节长度&#xff08;如果没有循环节就是000&#xff09;&#xff0c;TTT组询问给出l,rl,rl,r求 ∑ilrf(i)\sum_{il}^rf(i)il∑r​f(i) 1≤T≤100,1≤l≤r≤…

8.11模拟:数据结构

文章目录前言考场复盘T1 forwardT2 basketT4 square总结前言 320分 还不错啦 没有挂分还是很可贵的 &#xff08;暴力TLE就不怪我了&#xff09; T4反过来想其实就很可做了 逆向的思想需要培养&#xff08;今天T1、昨天T2也是&#xff09; 说实话今天早上状态不太好 特困生 不…

[COCI2017-2018#5] Pictionary(并查集+dfs)

贼ex的一道&#xff0c;卡了本仙女整整7个小时orz 思路容易理解&#xff0c;but码力very重要orz 我愿意花五毛钱提升我的码力&#xff0c;换个脑子也行&#xff0c;不换脸这张脸生得俊俏 luogu传送door 题目 在宇宙一个不为人知的地方&#xff0c;有一个星球&#xff0c;上面…

P4570 [BJWC2011]元素

题目描述&#xff1a; 每个矿石有序号和魔力值&#xff0c;每个矿石最多使用一次&#xff0c;且多个矿石序号不能异或为0的前提下&#xff0c;问最多可以得到多少魔力值 题解&#xff1a; 异或运算的最终结果只和用于运算的数的各位上1的数量有关&#xff0c;与各数字运算的…

Docker最全教程——从理论到实战(九)

在本系列教程中&#xff0c;笔者希望将必要的知识点围绕理论、流程&#xff08;工作流程&#xff09;、方法、实践来进行讲解&#xff0c;而不是单纯的为讲解知识点而进行讲解。也就是说&#xff0c;笔者希望能够让大家将理论、知识、思想和指导应用到工作的实际场景和实践之中…

【做题记录】CF1444A Division

CF1444A Division 题意&#xff1a; 给定 \(t\) 组询问&#xff0c;每组给两个数 \(p_i\) 和 \(q_i\) &#xff0c;找出最大的整数 \(x_i\) &#xff0c;要求 \(p_i\) 可被 \(x_i\) 整除&#xff0c;且 \(x_i\) 不可被 \(q_i\) 整除 。 题解&#xff1a; 呜呜呜这道题总共算下来…

CF891C-Envy【可撤销并查集】

正题 题目链接:https://www.luogu.com.cn/problem/CF891C 题目大意 nnn个点mmm条边的一张无向联通图&#xff0c;每次询问一个边集能否同时出现在同一棵最小生成树上。 1≤n,m,q,wi,∑k≤51051\leq n,m,q,w_i,\sum k\leq 5\times 10^51≤n,m,q,wi​,∑k≤5105 解题思路 考虑K…

[2019CSP多校联赛普及组第五周] 调度CPU (贪心)

来来来&#xff0c;走过路过不要错过题目题解代码实现1代码实现2题目 ⼩Y同学有⼀块超级CPU&#xff0c;它有两个超级核⼼A和B。 A核⼼可以同时处理多项任务&#xff0c;每项任务处理时间为x&#xff0c;B核⼼只能同时处理⼀项任务&#xff0c;每项任务处理时间为y。 这⼀天…

8.12模拟:dp递推

文章目录前言本次最大收获考场复盘T1 lectureT2 n-thlonT3 assignmentT4 recoverset总结前言 245分 100704035 不太满意qwq &#xff08;被KH暴打 &#xff09; 后三道题全是部分分 而且T2和T3关键性质都出来了&#xff0c;距离正解只差临门一脚 但是就差了这一脚 感觉今天T2、…

NumSharp v0.6.1 科学计算库发布,支持标量和隐式转换

NumSharp&#xff08;Numerical .NET&#xff09;可以说是C&#xff03;中的科学计算库。 它是用C&#xff03;编写的&#xff0c;符合.netstandard 2.0库标准。 它的目标是让.NET开发人员使用NumPy的语法编写机器学习代码&#xff0c;从而最大限度地借鉴现有大量在python代码的…

【做题记录】CF1451E2 Bitwise Queries (Hard Version)

CF1451E2 Bitwise Queries (Hard Version) 题意&#xff1a; 有 \(n\) 个数( \(n\le 2^{16}\) &#xff0c;且为 \(2\) 的整数次幂&#xff0c;且每一个数都属于区间 \([0,n-1]\) ) 可以通过询问交互库不超过 \(n1\) 次询问&#xff0c;每次询问编号为 \(i,j\) ( \(1\le i,j \l…

P4301 [CQOI2013] 新Nim游戏

P4301 [CQOI2013] 新Nim游戏 题目&#xff1a; 在传统的Nim游戏基础上加一步&#xff0c;在第一个回合中&#xff0c;第一个游戏者可以直接拿走若干个整堆的火柴。可以一堆都不拿&#xff0c;但不可以全部拿走。第二回合也一样&#xff0c;第二个游戏者也有这样一次机会。从第…

51nod1667-概率好题【容斥,组合数学】

正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId1667 题目大意 两个人。 第一个人有k1k_1k1​个集合&#xff0c;第iii个包括了范围[L1i,R1i][L1_i,R1_i][L1i​,R1i​]的整数。 第二个人有k2k_2k2​个集合&#xff0c;第iii个包括了范围[L2i,R2i][L2_i…