ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Codeforces *2400 做题记录

2022-09-11 11:00:44  阅读:183  来源: 互联网

标签:题意 limits 记录 花费 Codeforces 2400 序列 dp dis


CF1715E 题解

题意

一个带边权无向图,可以沿着边走,需要边权的花费或从任意点 \(u\) 飞到 \(v\),需要 \((u-v)^2\) 的花费。求从点 \(1\) 到所有 \(i\) 的最少花费。最多飞 \(k\) 次。

分析

一眼最短路 + dp。

发现 \(k\) 很小,可以枚举飞的次数,对于点 \(u\),可以是走到 \(u\),这种情况可以用最短路更新答案;也可以是飞到 \(u\),此时可以 dp,\(dp_i\) 表示从 \(1\) 到 \(i\) 最小花费,转移方程很显然:

\[dp_i=\min\limits_{t=1}^n(dis_t+(i-t)^2) \]

,其中 \(dis_i\) 表示上个 \(k\) 算出的 \(1\) 到 \(i\) 最少花费。此时最外层循环 \(k\),中层循环 \(i\),内层循环 \(t\),时间复杂度 \(\mathcal{O}(kn^2)\),发现会 T,考虑优化。

发现这个式子是个典型的斜率优化形式,可以变形成:

\[dp_i=\min\limits_{t=1}^n(dis_t+(i-t)^2) \\ \ \ \ \ \ \ \ \ \ \ \ \ =\min\limits_{t=1}^n(dis_t+t^2+it)+i^2 \]

也就转化成了求 \(x=i\) 时所有直线 \(y=tx+(dis_t+t^2)\) 的最小值加上 \(i^2\) 的值。可以用李超线段树方便地求出。

code

CF1073E

题意

求 \([l,r]\) 内包含数码个数不超过 \(k\) 的数之和,\(l\leq r\leq10^{18},k\leq 10\)。

分析

数位 dp。

设计状态 \(dp_{i,j}\),\(dp_{i,j,0}\) 表示到第 \(i\) 位,包含的数码集为 \(j\) 时的数的个数,\(dp_{i,j,1}\) 表示数的和。

转移时将这位的 dp 值加上下一位的 dp 值,再加上这一位枚举的数乘上位值。具体见代码。

code

CF946G

题意

定义一个序列 A 是好的,当 A 满足从 A 中去掉一个位置之后剩下的序列形成了一个严格递增序列。 给出一个长度为 \(n\) 的序列,问最小需要改动多少个位置的值,使得这个序列变成好的。

分析

首先可以发现将一个序列 \(a_i\) 变为严格递增的修改次数等于序列 \(b_i=a_i-i\) 的最长不下降子序列长度。

证明:

一个序列 \(a_i\) 严格递增当且仅当对于任意 \(i,j (i<j)\),满足 \(a_j-a_i\leq j-i\),因为这样才能保证在 \([i,j]\) 内的两数间差大于 \(1\)。

于是问题就转化为求序列 \(b\) 去掉一个后的最长不降子序列长度。

\(dp_{i,0/1}\) 表示前 \(i\) 个数中扔掉一个/不扔的最长不降子序列长度。

首先考虑不新扔一个时的转移,有

\[dp_{i,0}=\max\limits_{j<i}\{dp_{j,0}\}+1(a_j-a_i\leq j-i),\\dp_{i,1}=\max\limits_{j<i}\{dp_{j,1}\}+1(a_j-a_i\leq j-i) \]

若新扔一个,可以发现扔的元素后面的下标都减 \(1\) 则有

\[dp_{i,1}=\max\limits_{j<i-1}\{dp_{j,0}\}+1(a_j-a_i\leq j-i+1) \]

,树状数组维护即可。

code

标签:题意,limits,记录,花费,Codeforces,2400,序列,dp,dis
来源: https://www.cnblogs.com/lxy-2022/p/CF2400-zuo-ti-ji-lu.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有