
DP
_缘之空_
不要害怕落日的黑暗,因为明天的太阳还会照常升起
展开
-
【题解】 P1594 护卫队
首先因为处理完前面的车队之后后面的车队不会影响前面的车队,所以无后效性可以用动态规划。设 dp[i]dp[i]dp[i] 表示前 iii 个车的最小时间,转移时就枚举 jjj 把车队分成之前的和 jjj 到 iii 两段,把两段加起来。取枚举所有 jjj 所对应的值的最小值,注意判断区间内总重不能超过桥。dp[i]=min(dp[j−1]+L/st)dp[i] = min(dp[j-1] + L / st)dp[i]=min(dp[j−1]+L/st)其中 LLL 为桥长, ststst 为 jjj原创 2021-01-07 22:05:52 · 283 阅读 · 0 评论 -
【题解】CF514E Darth Vader and Tree
题意翻译有一个无限大的有根树,树上的每一个节点都有n个子节点 (1≤n≤105)( 1 \leq n \leq 10^5 )(1≤n≤105),任意一个节点它的第iii个子节点之间的距离为di(1≤di≤109)d_i( 1 \leq d_i \leq 10^9 )di(1≤di≤109)。给出一个数x(0≤x≤10)x(0 \leq x \leq 10)x(0≤x≤10),求有多少个节点到根节点的距离小于等于xxx ( 答案模1e9+71e9+71e9+7 )。题解首先可以想到一个很简单的DP原创 2020-11-20 23:26:26 · 224 阅读 · 1 评论 -
区间DP总结
2.1.3 区间DP2.1.3.1 基本概念 区间DP,顾名思义是在区间上DP,它以“区间长度”作为DP的“阶段”,使用两个坐标(区间的左、右端点)描述每个维度。它的主要思想就是先在小区间进行DP得到最优解,然后再利用小区间的最优解合并求大区间的最优解。2.1.3.2 核心思路 既然让我求解在一个区间上的最优解,那么我把这个区间分割成一个个小区间,求解每个小区间的最优解,再合并小区间得到大区间即可。所以在代码实现上,我可以枚举区间长度 lenlenlen 为每次分割成的小区间长度(((由短到原创 2020-11-13 21:46:39 · 315 阅读 · 0 评论 -
【题解】石子合并
有nnn堆石子排成一条直线,每堆石子有一定的重量。现在要合并这些石子成为一堆石子,但是每次只能合并相邻的两堆。每次合并需要消耗一定的体力,该体力为所合并的两堆石子的重量之和。问最少需要多少体力才能将n堆石子合并成一堆石子?假设只有2堆石子,显然只有1种合并方案。不管怎么合并,总之最后总会归结为2堆,如果我们把最后两堆分开,左边和右边无论怎么合并,都必须满足最优合并方案,整个问题才能得到最优解。m[i][j]={0i=jmin(m[i][k]+m[k+1][j])+w[i][j]i<jm[i]原创 2020-11-13 21:03:54 · 337 阅读 · 0 评论 -
【题解】戳西瓜
有 n 个西瓜,编号为 000 到 n−1n-1n−1 ,每个西瓜上都标有一个数字,这些数字存在数组 numsnumsnums 中。现在要求你戳破所有的西瓜。每当你戳破一个西瓜iii时,你可以获得 nums[left]∗nums[i]∗nums[right]nums[left]*nums[i]*nums[right]nums[left]∗nums[i]∗nums[right] 个硬币。这里的 leftleftleft 和 rightrightright 代表和 iii 相邻的两个西瓜的序号。注意当你戳破了西原创 2020-11-13 21:01:16 · 230 阅读 · 0 评论 -
【题解】CF489E Hiking
题目描述一个旅行者正在计划沿着河水进行一场水上远足。经过探测,他已经探明了这条河上适合晚上休息的n个地点,记录了这些地点与出发点的距离。上述的每一个地点都有一个美丽度。也就是说,对于第i个地点,它和起点的距离为xix_ixi,它的美丽度为bib_ibi。上述的每一个地点都在出发点的下游,且这个旅行者在旅行的时候只会顺流而下。简言之,我们可以把河流看成一个数轴,出发点的坐标是0,第i个地点的坐标是xix_ixi。旅行者只会沿正方向前进。这个旅行者对他一天的前进距离,设定了一个基准值lll,原创 2020-10-05 08:11:08 · 1020 阅读 · 5 评论 -
分离与合体
题目描述经过在机房里数日的切磋,LYD 从杜神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试……杜神牛造了 个区域,他们紧邻着排成一行,编号 。在每个区域里都放着一把 OI 界的金钥匙,每一把都有一定的价值,LYD 当然想得到他们了。然而杜神牛规定 LYD 不能一下子把他们全部拿走,而是每次只可以拿一把。为了尽快得到所有金钥匙,LYD 自然就用上了刚学的分离与合体特技。一开始 LYD 可以选择 中的任何一个区域进入,我们不妨把这个区域记为 。进入后 LYD 会在 区域发生分离,从而分离成两原创 2020-07-19 20:11:34 · 281 阅读 · 0 评论 -
前缀单词(好题)
题目描述一组单词是安全的,当且仅当不存在一个单词是另一个单词的前缀,这样才能保证数据不容易被误解。现在你手上有一个单词集合,你需要计算有多少个子集是安全的。注意空集永远是安全的。输入格式第一行一个数表示集合的大小,以下n行。每行一个由构成的字符串。输出格式安全子集的个数。样例输入 #13hellohellhi输出 #16首先:设dp[i]表示前i个集合以i结尾的集合数核心代码:dp[i] = dp[j](1<=j<i且a[i]与a[j]不互为前缀)+ 1 (原原创 2020-06-05 22:28:23 · 326 阅读 · 0 评论 -
最长公共上升子序列
1.O(n*m2)比较好理解,不展开叙述。状态转移方程为 :①F[i][j] = F[i-1][j] (a[i] != b[j])②F[i][j] = max { F[i-1][k] }+1 (0<k<j&&b[K]<b[j]) = max { F[i-1][k] }+1 (0<= k< j&&b[k]<a[i])上代码#include<algorithm>#include<cstdio>using原创 2020-06-05 22:19:04 · 198 阅读 · 0 评论 -
夏季特惠【第五周】
这是一道水题,板的不能再板。题目描述Steam2019年夏季促销开始了!⼩Y同学决定⼊⼿⼀些游戏,⼩Y同学⼀共有x元的预算,该平台上所有的n个游戏均有折扣,标号为i的游戏的原价ai元,现价只要bi元(也就是说该游戏可以优惠ai−bi元,每款游戏最多只能购买⼀次),并且⼩Y同学购买该游戏能获得快乐值为wi。由于优惠的存在,⼩Y作为剁⼿党可能做出⼀些冲动消费导致最终买游戏的总费⽤超过预算,但只要满足获得的总优惠金额不低于超过预算的总金额,那在⼩Y同学⼼理上就不会觉得吃亏(买到就是赚到!真⾹!)。现在⼩Y原创 2020-06-05 22:42:33 · 508 阅读 · 2 评论 -
(数位DP) 绝世好题
题目描述给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&b(i-1)!=0(2<=i<=len)。输入格式输入文件共2行。第一行包括一个整数n。第二行包括n个整数,第i个整数表示ai。输出格式输出文件共一行。包括一个整数,表示子序列bi的最长长度。样例样例输入31 2 3样例输出2数据范围与提示n<=100000,ai<=2*10^9真是一道绝世好(水)题。首先是 80~90分 的做法。设dp[i] 为以 i 结尾的最原创 2020-06-19 23:24:36 · 461 阅读 · 1 评论 -
偏树
题目描述告诉你有n个结点,f(i) 表示度为i的结点的凉爽值,现在你需要做的就是加 n-1 条边,构成一棵树,并使得这棵树的每个结点的凉爽值之和,即coolness最大,输出最大的coolness。输入格式第一行:一个正整数T,代表样例个数。接下来,共T个样例:n( > 100)n - 1 个整数,代表f(i)输出格式coolness值。样例样例输入232 145 1 4样例输出519由于有n-1条边,那么,这棵树的总的度数便是2n-2,又由于每个点至少有一个度,原创 2020-06-06 22:53:25 · 280 阅读 · 0 评论 -
三角形牧场
题目描述奶牛建筑师Hei想建造围有漂亮白色栅栏的三角形牧场。她拥有N(3≤N≤40)块木板,每块的长度Li(1≤Li≤40)都是整数,她想用所有的木板围成一个三角形使得牧场面积最大。请帮助Hei小姐构造这样的牧场,并计算出这个最大牧场的面积。输入格式第1行:一个整数N第2…N+1行:每行包含一个整数,即是木板长度。输出格式仅一个整数:最大牧场面积乘以100然后舍尾的结果。如果无法构建,输出-1。样例样例输入511334样例输出692数据范围与提示692=舍尾后的(100原创 2020-06-07 23:11:35 · 359 阅读 · 1 评论 -
dp种树的艺术
题目描述有N棵高度不一样的树要种成一行,为了让种树更加有艺术性,制定一个种树规则,希望从左边看过去只能看到L棵树,从右边看过去只能看到R棵树,请问有多少种不同的种树方案。输入格式输入包含多组数据。首先第一行包含一个整数t,表示数据的组数。之后t行,每行包含三个数N,L,R,以空格隔开,表示树的棵数N以及从左边看过去的棵数L和从右边看过去的棵数R。输出格式共t行,每行一个数,表示每组数据所对应的种树的方案数。答案可能很大,请对 998244353取模。样例样例输入24 1 24 2 1原创 2020-06-11 22:11:28 · 289 阅读 · 0 评论 -
P5189 [COCI 2010] ZUMA
题目描述译自 COCI 2010.03.06 T4. ZUMAMirko 将颗弹子排成一排,依次编号为 。 号弹子的颜色为 。他发现,如果他触摸 颗连续的弹子,且这些弹子的颜色相同,魔法会使这些弹子消失;此后,这 颗弹子前面的弹子便与这颗弹子后面的弹子相邻。Mirko 家里有很多弹子,他想在这颗弹子之间(也可以在开头的弹子前面或末尾的弹子后面)插入尽可能少的弹子,使得这颗弹子+插入的所有弹子消失。输入格式第一行:。第二行:。输出格式一行,一个整数,表示他至少要插入几颗弹子。样例原创 2020-06-09 23:35:41 · 417 阅读 · 5 评论 -
忙碌(分组背包)
题目描述魔法世界历史上曾发生过多次大规模灭绝战争。例如疯狂屠杀世界人口约2亿人以至于荣登“吉尼斯世界纪录”的蒙帝国铁骑军,其幕后推手即是天顶星人。但在人类文明生死存亡之际,总会涌现出许许多多的英雄人物奋起抗争,拯救人民于水火之中。现在,抵御天顶星人进攻的重任落在了魔法学院众师生的肩上。这天墨老师安排了n组工作让楚继光完成,时间为T,每个工作组中有m个工作,每一组工作有个分类值为s,如s是0表示组内至少要做一件工作,如s是1表示组内最多做一件工作,s是2表示组内工作随意完成,每项工作均有需花费的时间和获得原创 2020-06-08 22:38:57 · 8371 阅读 · 1 评论