DP
Vwsrenzk
这个作者很懒,什么都没留下…
展开
-
L3-001 凑零钱 (01背包)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805054207279104L3-001凑零钱(30 分)韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有104枚来自各个星球的硬币,需...原创 2019-02-27 21:05:51 · 563 阅读 · 1 评论 -
HDU - 6630 permutation 2 2019杭电多校(DP写法)
题意:有三个正整数n,x,y。请计算有多少个排列1∼n满足以下条件:p1 = x pn = y 且相邻数字绝对值不超过2。思路:从x开始肯定要先往下走到1,然后往上到x+1。y肯定得往上到n然后往下到y-1。(x和y为端点要特判)。所以能变的数字只有区间[x+2,y-2],且满足端点相邻数字绝对值小于2.设区间长度为len。dp[0][i]代表i和i+1不交换的...原创 2019-08-06 09:19:23 · 299 阅读 · 0 评论 -
HDU-6578 Blank(DP)2019暑假杭电多校第一场
题意:一行有n个空格编号1~n;每一个空格中填入0,1,2,3中的一个数字。且满足m个限制l,r,x:满足在区间[l,r]正好有x种不同的数字。有多少种方法可以填充空格以满足所有条件?思路:dp[i][j][k][t]代表填完t个空格之后。4个数字出现的位置排序后为(i,j,k,t)的方法。可以得到4个转移方程:dp[j][k][t][t+1] += dp[i][j][k][cnt];...原创 2019-07-23 10:32:05 · 217 阅读 · 0 评论 -
HDU 4123 Bob’s Race(树形DP二次扫描换根法,rmq,取尺)
题意:给定一颗生成树,编号为1-n,每个顶点可以作为起点走最长的一段距离(未知)对于每个询问q,找到最长的一段连续编号的顶点使得编号中的最长距离的最大值与最小值的差小于q。思路:首先用树形dp二次扫描换根法求出每个顶点作为起点能走的最长距离,用RMQ算法预处理一下就能很快查询区间内最大值和最小值。(预处理出log数组求logn,自带的log函数太慢了会超时)。最后对于每个查询使用取尺算法,就可以...原创 2019-07-26 08:33:14 · 289 阅读 · 0 评论 -
poj 2240 Arbitrage(Bellman-ford)
题意:给出n种货币,以及m种货币转换汇率。(例如USDollar 0.5 BritishPound 意思为1us=0.5br但是在题目里面0.5br不能换成1us)。问你能不能通过不停转换来赚钱。(看懂的已经发财了~)Bellman-ford算法:通过n-1轮松弛判断有没有环。以第一种货币为起点,dis[i]代表1元第一种货币能换这么多元第i种货币。所有在松弛时越大越好。把Bellman-fo...原创 2019-07-25 18:00:36 · 301 阅读 · 0 评论 -
[kuangbin带你飞]专题十二 基础DP1
A - Max Sum Plus Plus (HDU 1024)题意:将n个数取m段且不相交,求m段数字和最大值;dp[i][j]:前i个数字分成j段的最大值。边界dp[0][0] = 0;dp[i][j] = max(maxx[j - 1] + a[i], dp[i-1][j] + a[i]);//maxx[j]代表前i个数取j段的最大值。#include<iostream>...原创 2019-07-19 21:39:39 · 251 阅读 · 0 评论 -
codeforces 1153D Serval and Rooted Tree(思维)
题意:给一个n节点的树,有k个叶子结点,给每个叶子结点附上1到k的值,每个节点可以是他所有的子节点的最大值(第二行输入为1)或者最小值(0);问根节点1的最大值是多少;思路:数组d[i]保存节点i要浪费多少数字,(比如节点i有2个叶子结点,且节点i只能取他的子节点的最小值,则节点i只能取第二大的那个儿子,即浪费了一个数字);所以如果节点i为取最大值,d[i]=min(d[y])(y为所有i的儿...原创 2019-05-26 21:34:54 · 163 阅读 · 0 评论 -
poj 3093 Margaritas on the River Walk(背包)
题意:物品数n和背包容量v,以及n个物品的体积,问有多少种方案是再也装不下其他物品的;思路:按体积从小到大排序,枚举每个物品作为刚好不能再放下的情况。对于每个物品刚好放不下的情况,肯定是因为拿了比它小的所有物品,因为对于每种方案你判断它是不是一种答案,是通过判断该种方案没有拿的物品里面最小的物品还能不能再拿。能拿则不是答案,不能拿的话其他的物品肯定也不能拿。所以dp数组为 dp[拿到...原创 2019-03-29 11:41:23 · 199 阅读 · 0 评论 -
DP训练Codeforces
滴滴滴滴813D:题意:给出长度为n nn的序列,从中找出2 22个子序列,满足每个子序列相邻两数之间要么相差1 11,要么同余于7 77,求这两个子序列的最长长度和。#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ul;const int...原创 2019-04-06 20:01:52 · 465 阅读 · 0 评论 -
POJ 1179 Polygon 区间DP (详细题解)
POJ 1179 Polygon 组合DP欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入...原创 2019-03-27 18:19:01 · 239 阅读 · 0 评论 -
Gym - 102001J - Future Generation (DP)
题意:给你N(1≤N≤15) 个字串S1,…,SN(1≤|Si|≤15)。现在请你对于每一个字符串Si,找出一个非空的子序列Ai,使得A1,A2,…,AN依照字典顺序是严格递增的。输出最大的|A1|+|A2|+⋯+|AN|之值。若无解的话要输出-1。题解:对于每个字符串有 1<<|Si| 个子串,最多是2的十五次方(32 768),因为数据不大,所以直接暴力求所...原创 2019-03-26 19:26:06 · 699 阅读 · 0 评论 -
codeforces 946D Timetable(DP)
题意:一个星期有n天,每天m小时,一小时一节课,每天一个01字符串0代表没课,1代表有课,一个星期可以翘k节课,一天在学校的时间为你去上的第一节课到最后一节课,问你一个星期最少的在学校待的时间。思路:对于每天,暴力出数组t,t[i]=x代表该天上i小时课最少x小时在学校。就可以dp出dp数组。dp[i]=x代表这个星期上i节课最少多少小时在学校。转移方程 dp[i] = min(dp[i]...原创 2019-03-23 02:15:53 · 225 阅读 · 0 评论 -
HDU - 3535 AreYouBusy(DP)
题意:(把题目意思改为背包解释了)n组物品,一个大小为T的背包。对于每组物品,有物品的数量m,和类型s,s=0意思为该组最少放一个物品到背包。s=1意思为最多放一件到背包。s=2意思为随便放(但是每个物品只能放一次)。思路:0类型时就是一个(HDU - 3033)题目,建议先去写这个题;将dp初始化为-INF,dp[0]的所有数初始化为0,因为可以选多个,就把那个典型分组背包的第二重...原创 2019-03-22 20:52:29 · 281 阅读 · 0 评论 -
POJ3666 Making the Grade(DP)
题意:给定长度为n的序列a,构造长度为n的序列b,满足b单调;最小化思路:在满足S最小化的情况下,一定存在一种构造序列B的方案,使得B中的数值都在A中出现过;dp[i][j]表示完成前i个数的构造,bi=j时,S的最小值。 dp[i][j] = min{dp[i-1][k]+ abs(ai-j) }(k=0->j);因为一定是a里面出现的数字,可以进行离散化,另外决策集合只增加不减少...原创 2019-03-22 14:24:36 · 211 阅读 · 0 评论 -
HDU - 5534 Partial Tree(dp)
题意:给你n个节点,连成一棵树,如果节点的度为i,则该节点的价值为f【i】。求树的最大价值。思路:首先该树的总度数为2*(n-1),所以刚开始想到了二维dp,dp[i][j]为将j个度分给i个节点。最后dp[n][2*n-2]为答案,但是这样的时间复杂度为n的立方(超时)。看了题解才知道既然每个节点的度数最小是1,所以不妨先给每个节点分配一个节点,题目就变成了将n-2随意分配。就是算法导论的钢...原创 2019-03-20 18:29:04 · 163 阅读 · 0 评论 -
CodeForces - 366C Dima and Salad(dp)
C. Dima and Salad题意:给n个水果和k值,每个水果有a和b两种属性。选一些水果使suma比sumb为k。求max suma;题解:求出每个水果的x = a-b*k。当选中的水果的x值之和为0时,就是比值为k的条件,因此题目就转换为01满背包问题,dp【0】就是答案。a就是每个水果的价值。方法1:分别dp x值为正数和负数时,dp[j+x[i]] = max(dp[...原创 2019-03-20 01:07:13 · 292 阅读 · 0 评论 -
Robberies HDU - 2955(dp)
题意:你去抢银行,给你n个银行,每个银行有被抓的概率和能抢到的钱,给你一个最大的概率,当你被抓的总概率小于这个概率时可以认为你是安全的。。问你在安全的情况下能抢的最多的钱是多少。题解:刚开始想成最简单的背包问题,因为体积(概率)是浮点数,所以疯狂将概率*100,*1000.等等来直接计算,发现不行。题目的思路是dp[i] = x; i 为抢到的钱,x为不被抓的最大概率。(我因为没有仔细理解题目...原创 2019-03-19 20:47:15 · 114 阅读 · 0 评论 -
Codeforces (div2 E)1238E Keyboard Purchase(状态压缩DP)
题意:有一串密码你需要经常输入,长度为n(1e5)由前m(20)个小写字母组成。你需要买一个键盘即m个字母的排列,当你在输入该密码的时候,你手指(单指打字)移动的总距离最小。移动的距离就是密码每相邻2个字母在键盘上的距离总和。问你最小距离。思路:首先预处理d[i][j]为i和j在该密码相邻的次数。dp[se]表示当集合se在键盘的左侧(不考虑se的顺序,只考虑某字母有没有在se里面)其他不在...原创 2019-10-10 21:52:10 · 253 阅读 · 0 评论