动态规划
文章平均质量分 72
AC_XXZ
努力了不一定会成功,但不努力肯定会失败
展开
-
2015百度之星初赛2 1005 序列变换(LIS变形)
LIS(非严格):首先我想到了LIS,然而总觉得有点不对;每个数先减去它的下标,防止下面的情况发生:(转载) 3 加入序列是1,2,2,2,3,这样求上升子序列是3,也就是要修改2个,但是中间的两个2,变化范围又不能超过(1,3) 4 那么这样求的也就不对,但是减掉之后,相当于给中间重复的数留下了修改的空间 5 解释下为什么可以减而保持正确性:原创 2015-06-08 20:40:48 · 1132 阅读 · 0 评论 -
最长递增子序列的数量
数组A包含N个整数(可能包含相同的值)。设S为A的子序列且S中的元素是递增的,则S为A的递增子序列。如果S的长度是所有递增子序列中最长的,则称S为A的最长递增子序列(LIS)。A的LIS可能有很多个。例如A为:{1 3 2 0 4},1 3 4,1 2 4均为A的LIS。给出数组A,求A的LIS有多少个。由于数量很大,输出Mod 1000000007的结果即可。相同的数字在不同的位置,算作不同的,例原创 2015-08-24 21:32:00 · 1727 阅读 · 0 评论 -
石子归并
N堆石子摆成一条线。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。例如: 1 2 3 4,有不少合并方法 1 2 3 4 => 3 3 4(3) => 6 4(9) => 10(19) 1 2 3 4 => 1 5 4(5) => 1 9(14) => 10(24) 1 2 3 4 => 1原创 2015-08-24 21:13:52 · 1440 阅读 · 0 评论 -
整数拆分问题(从O(n^2优化到O(n*sqrt(n))
1. 将n划分成若干正整数之和的划分数。 2. 将n划分成k个正整数之和的划分数。 3. 将n划分成最大数不超过k的划分数。 4. 将n划分成若干奇正整数之和的划分数。 5. 将n划分成若干不同整数之和的划分数。1.将n划分成不大于m的划分法: 1).若是划分多个整数可以存在相同的: dp[n][m]= dp[n][m-1]+ dp[n-m][m] dp原创 2015-08-27 20:32:47 · 2558 阅读 · 0 评论 -
最长上升子序列
1209: 最长上升子序列Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 19 Solved: 10[Submit][Status][Web Board]Description一个数的序列ai,当a1 Input输入的第一行是序列的长度N (1 Output原创 2015-03-25 20:59:02 · 816 阅读 · 0 评论 -
51nod 求子段和问题总结(DP)
1049 最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。 例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。 Input 第1行:整数序列原创 2015-09-04 20:09:45 · 907 阅读 · 0 评论 -
51nod 1101 换零钱(DP)
N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元。 例如:5分钱换为零钱,有以下4种换法: 1、5个1分 2、1个2分3个1分 3、2个2分1个1分 4、1个5分 (由于结果可能会很大,输出Mod 10^9 + 7的结果) Input 输入1个数N,N = 100表示1元钱。(1 <= N <= 100000) Outpu原创 2015-09-04 19:47:56 · 1762 阅读 · 7 评论 -
51nod 1270 数组的最大代价(DP)
数组A包含N个元素A1, A2......AN。数组B包含N个元素B1, B2......BN。并且数组A中的每一个元素Ai,都满足1 (公式表示所有两个相邻元素的差的绝对值之和)给出数组B,计算可能的最大代价S。Input第1行:1个数N,表示数组的长度(1 <= N <= 50000)。第2 - N+1行:每行1个数,对应数组元素Bi(1原创 2015-09-04 19:37:56 · 768 阅读 · 0 评论 -
HDU2089(数位DP)
题意:给区间[a,b],求其中有多少个数不包含‘4’且不包含‘62’,1数位DP求解,dp[i][j]代表,i位数以j开头的数的情况比如dp[2][6]代表60,61,62,63,65,66,67,68,69;dp[i][j] = dp[i][j] + dp[i-1][k],其中0#include #include using namespace std;int d原创 2015-05-29 19:38:40 · 1214 阅读 · 0 评论 -
01串
1086: 01串Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 6 Solved: 2[Submit][Status][Web Board]Description01串是指仅由0和1组成的字符串。一个完美的01串,是指任意相邻字符都不相等的01串。也就是说,完美的01串应该拥有这样的形式:“010101...”或原创 2014-09-11 15:43:06 · 3972 阅读 · 0 评论 -
HDU3555(数位DP)
题意:求区间[a,b],包含49的数有多少,这题只需把hdu2089稍微改下就行;#include #include using namespace std;typedef long long LL;LL dp[100][100];void init(){ dp[0][0] = 1; for(int i = 1; i <= 20; i++) for原创 2015-05-29 19:43:01 · 662 阅读 · 0 评论 -
Codeforces Round #273 (Div. 2)
A. Initial Bettime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputThere are five people playing a game called "原创 2014-10-18 15:46:19 · 1723 阅读 · 0 评论 -
Codeforces Round #271 (Div. 2)
D. Flowerstime limit per test1.5 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputWe saw the little game Marmot made for Mole's原创 2014-10-21 20:47:23 · 1558 阅读 · 0 评论 -
Hbrust2181
无聊的小明Time Limit: 3000 MSMemory Limit: 32768 KTotal Submit: 4(4 users)Total Accepted: 4(4 users)Rating: Special Judge: NoDescription小明想用两个字母a和b原创 2014-12-01 18:52:26 · 1139 阅读 · 0 评论 -
2014ACM/ICPC亚洲区域赛现场赛D和K题解题报告
DominationTime Limit: 8 Seconds Memory Limit: 131072 KB Special JudgeEdward is the headmaster of Marjar University. He is enthusiastic about chess and often plays chess with his frie原创 2014-10-14 21:12:43 · 1462 阅读 · 3 评论 -
数塔
1208: 数字三角形Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 15 Solved: 10[Submit][Status][Web Board]Description7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 在上面的数字三角形中寻找一条从顶部到底边的路径,使得 路径上所经原创 2015-03-25 20:56:28 · 1555 阅读 · 0 评论 -
最长公共子序列
1210: 最长公共子序列Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 10 Solved: 8[Submit][Status][Web Board]Description给出两个字符串,求出这样的一个最长的公共子序列的长度:子序列中的每个字符都能在两个原串中找到,而且每个字符的先后顺序和原串中的先后顺序一致。原创 2015-03-25 21:01:30 · 882 阅读 · 0 评论 -
01背包问题吐血详解
背包问题我真是学一次忘一次,很多dp问题也是由这个衍生而来,今天终于痛下决心写个博客供自己日后参考问题描述:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路 :这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以原创 2014-10-18 13:29:20 · 93579 阅读 · 23 评论 -
白话算法之【动态规划入门】
动态规划入门什么是动态规划? 动态规划(Dynamic Programming,所以我们简称动态规划为DP)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(princip原创 2015-05-11 16:39:09 · 43086 阅读 · 24 评论 -
51nod 1294 修改数组
给出一个整数数组A,你可以将任何一个数修改为任意一个正整数,最终使得整个数组是严格递增的且均为正整数。问最少需要修改几个数? Input 第1行:一个数N表示序列的长度(1 <= N <= 100000)。 第2 - N + 1行:每行1个数,对应数组元素。(0 <= A[i] <= 10^9) Output 输出最少需要修改几个数使得整个数组是严格递增的。 Input示例 5 1原创 2015-09-04 19:45:39 · 843 阅读 · 0 评论