
动态规划
文章平均质量分 61
Piink
可英雄也有打不下的江山
展开
-
背包问题总结(01背包+完全背包+多重背包)
一、01背包题目有 N 件物品和一个容量为 V 的背包。放入第 i 件物品需要的容量是 Ci,得到的价值是 Wi。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。基本代码一维数组dp[j]表示体积为j的最大价值for(int i=0;i<N;i++) for(int j=V;j>=c[i];j--) dp[j]=max(dp[j],dp[j-c[i]]+w[i]);二维数组dp[原创 2021-07-24 16:45:50 · 654 阅读 · 0 评论 -
「一本通 4.2 例 1」数列区间最大值(求区间最大值+RMQ问题模板+ST算法+动态规划)
题目描述输入一串数字,给你 M个询问,每次询问就给你两个数字 X,Y,要求你说出 X 到 Y这段区间内的最大数。输入格式第一行两个整数N,M 表示数字的个数和要询问的次数;接下来一行为 N个数;接下来 M行,每行都有两个整数 。输出格式输出共 M行,每行输出一个数。样例输入10 23 2 4 5 6 8 1 2 9 71 43 8输出58数据范围与提示对于全部数据1<=N<=10^ 5, 1<=M<=10^ 6,1<=X<=Y<原创 2021-05-31 21:26:17 · 872 阅读 · 0 评论 -
登山 OpenJ_Bailian - 2995( 动态规划 )
五一到了,PKU-ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?InputLine 1: N (2 <= N <= 1000) 景点数Line 2: N个整数,每个景点的海拔Output最多能浏览的景点数原创 2021-04-07 21:20:07 · 188 阅读 · 0 评论 -
Common Subsequence HDU - 1159( 动态规划 最长公共子序列)
A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = <x1, x2, …, xm> another sequence Z = <z1, z2, …, zk> is a subsequence of X if there exists a strictly increasing sequence原创 2020-09-25 14:02:24 · 153 阅读 · 1 评论 -
「一本通 5.1 例 2」能量项链 ( 区间 dp + 头尾处理 + 环处理 )
题目描述原题来自:NOIP 2006在 Mars 星球上,每个 Mars 人都随身佩带着一串能量项链。在项链上有 N颗能量珠。能量珠是一颗有头标记和尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记必定等于后一颗珠子的头标记。因为只有这样,通过吸盘——Mars 人吸收能量的器官的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可被吸盘吸收的能量。如果一颗能量珠头标记为 m,尾标记为 r,后一颗能量珠头标记为r ,尾标记为n ,则聚合后释放出 m * r *n Mars单原创 2021-03-10 22:02:26 · 697 阅读 · 0 评论 -
「一本通 5.1 例 1」石子合并 ( 区间dp + 环的处理 + 非贪心算法 )
题目描述将 n堆石子绕圆形操场排放,现要将石子有序地合并成一堆。规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分。请编写一个程序,读入堆数 n及每堆的石子数,并进行如下计算:选择一种合并石子的方案,使得做n-1 次合并得分总和最大。选择一种合并石子的方案,使得做n-1 次合并得分总和最小。输入格式输入第一行一个整数 ,表示有 n 堆石子。第二行 n个整数,表示每堆石子的数量。输出格式输出共两行:第一行为合并得分总和最小值,第二行为合并得分总和最大原创 2021-03-10 20:59:23 · 419 阅读 · 0 评论 -
不要62 HDU - 2089( 打表计算前缀和 +数位dp )
杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。不吉利的数字为所有含有4或62的号码。例如:62315 73418 88914都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。Input输入的原创 2021-02-04 20:17:31 · 144 阅读 · 1 评论 -
Chef Monocarp CodeForces - 1437C ( DP )
Chef Monocarp has just put n dishes into an oven. He knows that the i-th dish has its optimal cooking time equal to ti minutes.At any positive integer minute T Monocarp can put no more than one dish out of the oven. If the i-th dish is put out at some min原创 2020-11-12 21:31:22 · 307 阅读 · 0 评论 -
「一本通 1.3 例 1」数的划分(DP)
将整数 n 分成 k 份,且每份不能为空,问有多少种不同的分法。当 n=7,k=3 时,下面三种分法被认为是相同的:1,1,5; 1,5,1; 5,1,1【输入格式】一行两个数 n , k。【输出格式】一行一个整数,即不同的分法数。【样例输入】7 3【样例输出】4【样例解释】四种分法为:1,1,5;1,2,4;1,3,3;2,2,3。【数据范围与提示】6≤n≤200,2≤k≤6。思路:代码:#include<stdio.h>int dp[210][10];in原创 2020-10-25 08:04:53 · 299 阅读 · 0 评论 -
跑跑卡丁车 HDU - 1494(动态规划)
跑跑卡丁车是时下一款流行的网络休闲游戏,你可以在这虚拟的世界里体验驾驶的乐趣。这款游戏的特别之处是你可以通过漂移来获得一种加速卡,用这种加速卡可以在有限的时间里提高你的速度。为了使问题简单化,我们假设一个赛道分为L段,并且给你通过每段赛道的普通耗时Ai和用加速卡的耗时Bi。加速卡的获得机制是:普通行驶的情况下,每通过1段赛道,可以获得20%的能量(N2O).能量集满后获得一个加速卡(同时能量清0).加速卡最多可以储存2个,也就是说当你有2个加速卡而能量再次集满,那么能量清零但得不到加速卡。一个加速卡只能维原创 2020-09-26 10:57:50 · 257 阅读 · 0 评论