
------动态规划------
文章平均质量分 75
M_GSir
这个作者很懒,什么都没留下…
展开
-
hdu 4283 (区间dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4283题目大意:以下思路转自(http://www.tuicool.com/articles/jyaQ7n)当中思路已经很明确有n个男屌丝事先按1,2,3,,,,,,n的顺序排好,每个人都有一个不开心值unhappy[i],如果第i个人第k个上台找对象,那么该屌丝男的不开心值就会为(k-1)原创 2016-11-03 12:13:37 · 639 阅读 · 0 评论 -
数位动态规划(acm hdu 3555 ,hdu 2089,hdu 4278)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3555题意:给定一个上界n,求在1-n中有多少个数含有49题解:因为数值太大,考虑用数位dp,按照每一位进行考虑,对于每一位i考虑dp[i][0]:在i位时不含49的数,dp[i][1]:在i位时不含49的数中含第i位为9的数(只要考虑第i+1为4就可以凑出49),dp[i][2]在i位时累计含原创 2016-08-04 09:33:17 · 433 阅读 · 0 评论 -
动规<树形dp>+dfs (hdu 1520)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520题目解释:给定一些人的开心指数,要求开心指数总数和最大,只有当这个的上司不在时才能获得开心指数方法:动态规划+dfs,先找到没有上司的人,每个有可以被选也可以不被选,判断被选和不被选的最大值,逐级累加,被选时下属一定不会开心,不被选时下属可以被选也可以不被选代码:#include原创 2016-08-01 18:37:14 · 603 阅读 · 0 评论 -
rmq-st算法<区间最大最小>(hdu 5875)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5875题意:给定一个数组,并给出[l,r],要求求出A(l)%A(l+1)%......%A(r)的值,当l==r时 直接等于A(l)题解:这道题的意思就是每次找到区间内最靠近l的且比当前ans小的进行取模,每次都这么取,知道到r,可以利用rmq算法先用o(nlogn)进行预处理,然后查找时的复原创 2016-09-16 11:47:18 · 391 阅读 · 0 评论 -
最长递增公共子序列dp(hdu 1423 hdu 4512)
问题描述:就是求两个数字数组的最长递增公共子序列,o(n*n)的复杂度,结合题目解释题目:http://acm.hdu.edu.cn/showproblem.php?pid=1423题意:给两个数字数组,求其最长的递增公共子序列的长度解释:dp[i][j]是基于dp[i-1][j],就是基于上一个数字的遍历结果的基础进行遍历,解释在代码中,ans的作用是保存1-j的上一行的最长递增原创 2016-08-10 19:27:19 · 465 阅读 · 0 评论 -
最长递增序列(hdu 5748)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5748题意:就是求以各个数字为结尾的最长递增序列(包括本身),输出每个数字为结尾的最长递增序列的长度方法:M[i]表示序列长度为i的结尾最小的值,d[i]保存已第i为结尾的最长递增序列的长度,从第一个数开始往后判断,每次维护时先判断是否大于当前最长递增子序列的末尾值,若大于则扩充M的长度len,原创 2016-08-07 11:01:52 · 410 阅读 · 0 评论 -
动态规划(acm hdu 5791) 求公共子序列
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5791题目解释:求公共子序列,给你连个串,可以不连续取,但必须按照顺序取子序列思路:类似于求最大公共子序列,如果a[i]=b[j],dp[i][j]=dp[i-1][i]+dp[i][j-1]+dp[i-1][j-1]-2dp[i-1][j-1]+1+dp[i-1][j-1] 即考虑原创 2016-08-03 22:17:45 · 413 阅读 · 0 评论 -
背包问题(01背包 + 完全背包 + 多重背包)
背包九讲:https://yunpan.cn/cMTIQHeafPeBH 访问密码 1e4f01背包问题:题目:http://poj.org/problem?id=3624题意:相当于给定n个价值为v[i],重量为w[i]的东西,求在不超过最大重量的情况下的最大价值,输入说明:先输入物品数n和最大重量m 然后输入n行,表示第i物品的重量和价值题解:01背包代码:原创 2016-09-07 21:05:55 · 604 阅读 · 0 评论 -
超大01背包(hdu 5887)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5887题意:01背包,就是收集草药,每个收集和整理的过程需要时间,整理收集完一个草药会获得一定的分数,要求在限定时间内整理和收集的草药得到的分数最高,就是数据范围有点大,到10的9次方题解:范围太大,不能用一般的数组存下,10的9次方,内存会爆,可以采用减少内存的办法,即是每次记录可以达到的重量原创 2016-09-17 19:22:23 · 1469 阅读 · 0 评论 -
数位dp(dfs版)
题目:http://acm.split.hdu.edu.cn/showproblem.php?pid=3555题意:给定一个上限n,求1--n中存在多少个数,数中含有49题解:dfs数位dp,此题一共三种状态:st:0:前一个数为4的状态,此位加9就可满足题意;1:前面数字中已经含有49;2:前面中没有49并且前一位不是4状态转移:状态49其他数字原创 2016-09-22 09:34:28 · 575 阅读 · 0 评论 -
数位dp续(给定区间求除以某个值余数一定的dp)dfs版
题目:http://acm.split.hdu.edu.cn/showproblem.php?pid=3652题意:给定一个上限n,求在1--n中满足含有13并且可以被13整除的数的个数题解:数位dp,具体见下,不懂可参见上一篇模板代码:#include#include#include#include#includeusing namespace std;long l原创 2016-10-05 21:48:58 · 464 阅读 · 0 评论 -
求最长连续递增公共子序列
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5904题意:求最长连续递增公共子序列题解:代码:#include#include#include#include#include#include#define N 100050using namespace std;int v_a[N]; //记录第一个数字数组int v原创 2016-11-09 22:04:00 · 454 阅读 · 0 评论 -
区间DP经典三道题目
题目:NYOJ 746:http://acm.nyist.NET/JudgeOnline/problem.PHP?pid=746题意:给定一个数,要求拆成m个数相乘,求最大的结果是多少代码:#include#include#include#include#define MAX 30using namespace std;long long dp[MAX][MAX原创 2017-06-17 15:33:25 · 575 阅读 · 0 评论