==========dp==========
文章平均质量分 75
阿_波_
这个作者很懒,什么都没留下…
展开
-
背包问题模板
01背包 01背包在时间复杂度上都是N(N*V),在这个基础之上已经不能再进行优化了,在空间复杂度上,我们首先看一下复杂度为O(N*V)的程序for(int i = 1;i <= n;i++) for(int j = 0;j <= W;j ++) { if(j >= w[i]) dp[i...原创 2018-03-29 20:57:26 · 183 阅读 · 0 评论 -
RMQ问题原理及实现
写在前面 首先我们要明白RMQ表示的是什么:Range Minimum/Maximum Query(区间最小值/区间最大值),这里我们主要介绍的一种算法是ST算法,他预处理的复杂度为O(nlogn),查询复杂度为O(1),主要基于的思想就是动态规划。RMQ问题算法详解 我们知道这个算法是基于动态规划来进行的,我们就要首先说一下状态转移方程,我们定义:dp[i][j]:从...原创 2018-04-02 18:44:59 · 595 阅读 · 0 评论 -
DP计算最长公共子序列模板
本模板来自《挑战程序设计竞赛 第2版》#include<stdio.h>#include<string.h>char a[500],b[500];char num[501][501]; //记录中间结果的数组char flag[501][501]; //标记数组,用于标识下标的走向,构造出公共子序列void LCS(); //动态规划求解void get...原创 2018-03-28 19:53:34 · 189 阅读 · 0 评论 -
DP最长上升子序列问题模板
模板来自《挑战程序设计竞赛 第二版》复杂度为O(n^2)的方式:dp[i]:表示以a[i]为结尾的数组中最长的上升子序列的长度dp[i] = max(1,dp[j]+1{j<i && a[j] < a[i]})//不怕别人比你聪明,就怕别人比你聪明还比你努力#include<iostream>#include<string>...原创 2018-03-28 20:33:26 · 194 阅读 · 0 评论