![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
_pkm_
love coding
展开
-
HDU 5904 LCIS(dp)
题目链接 题意:给出2个序列找出2个序列的最长的上升子序列,要求元素是连续的 使用dp[i]:表示数字i结尾的最长的连续的上升子序列长度。 dp[i] = max(dp[i], dp[i-1]+1)//#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<algorithm>#include<vector>原创 2016-10-22 00:10:35 · 262 阅读 · 0 评论 -
HDU 4352 XHXJ's LIS(状态压缩+数位dp)
题目链接 求区间里面的数,满足数位上的数是严格的长度为k的上升子序列的个数上升子序列使用nlogn的计算方式,因为是严格的上升子序列,所以只会有0-9,10个数字。在某一个上升的子序列中,每个数字只会出现一次,使用f[i][s]:表示将数字i加入状态s可以到达的新的状态s’,这个f函数,可以直接暴力预处理,然后就是裸的数位dp了#include<cstdio>#include<algorithm原创 2016-09-22 13:45:54 · 280 阅读 · 0 评论 -
Codeforces Beta Round #51 D. Beautiful numbers(数位dp)
题目链接问区间[L,R] 之间有多少个数满足,这个数能够整除这个数的每一个数位,比如36可以整除3和6,所以是符合要求的数字。直接看来,一个数每一位还没有确定的时候,就无法知道这个数能不能整除自己的每一位。假如这个数是可以整除自己的每一位,也就是说这个数是自己每一位的公倍数,比如一个满足的数X组成是abc的形式,那么X是a的倍数,b的倍数,c的倍数,也就是X%lcm(a,b,c)==0。然后1-9的原创 2016-09-22 10:36:44 · 282 阅读 · 0 评论 -
HDU 5898 odd-even number(数位dp)
题目链接题意就是,数位是奇数的连续的长度是偶数,数位是偶数的连续的长度是奇数,比如 2,4,6, 8,11,13,15,17。。直接数位dp, 加一个z标识,是不是前缀都是0。 dp[i][s][len]:第i位是奇数还是偶数,以及连续的长度。#include <bits/stdc++.h>#define LL long longusing namespace std;#define cl(原创 2016-09-21 15:08:46 · 322 阅读 · 0 评论 -
HDU 5900 QSC and Master (区间dp,记忆化搜索)
题目链接题意:类似消消乐,给出n组键值对,每次选择键的gcd不是1的相邻的2个合并,然后可以获得这2个键对应的值和,消去的部分后,剩下的可以看做是相邻的。比如3 2 2 3消去2 2 那么3 3就是相邻的区间dp了,因为最终值和每次抉择是有关的,贪心是不可以的, 容易想到的是对于一个区间[i,j],枚举每一次选择的位置k,然后计算出所有的可能再取最大值,当然直接暴力,时间是不够的,原因在于计算过原创 2016-09-20 18:54:55 · 386 阅读 · 0 评论 -
HDU 4283 You Are the One (区间DP,记忆化搜索)
题目链接题目的意思是:有一个队列,每个人有一个愤怒值D,如果他是第K个上场,不开心指数就为(K-1)*D。但是边上有一个小黑屋(栈),可以一定程度上调整上场程序 学习一下区间dp的问题 dp[i][j]: 表示区间[i,j]的不开心值最小。 当前只考虑这一段区间里面的人的话,也就是这j-i+1个人出栈的名次是[1,j-i+1], 那么假设第i个人是第k个出栈的话,那么[i+1,i+k-1]的原创 2016-09-20 00:47:04 · 378 阅读 · 0 评论 -
HDU 1421 搬寝室 (dp)
题目链接 题意:给出n个数,每次选择出来k对(x,y),代价是(x-y)的平方,然后问代价最小的取法。 首先肯定的是,选择排序之后再一起的代价应该是比较小的,但是会有1 2 34 35 36 这样的情况,1-2间距小,但是2-34很大。用dp[i][j]:{\rm{dp}}[i][j]:表示前i个数据中选择j的最小代价,考虑第i个要么选择要么不选择,不选择就是dp[i−1][j]dp[i - 1原创 2016-11-29 18:25:17 · 286 阅读 · 0 评论