- 博客(5)
- 收藏
- 关注
原创 HDU5246 超级赛亚ACMer
此是一道贪心题目。。。是特么贪心吗? 日后重新更新下,此题待更之。。。 typedef long long LL; const int maxn = 10005; LL arr[maxn]; LL m, k; int n; int main() { int T, kase = 1; scanf("
2015-06-26 19:26:15 461
原创 ZJU2136 Longest Ordered Subsequence
这是一道经典的最长上升子序列问题,首先确定阶段和状态。然而每个阶段仅仅有一个状态,使用一位数组递推。 令 dp[i] 表示以 i 结尾的最长上升子序列的长度,则有dp[i] = { max(dp[j]) + 1 | 0 <= j <i, seq[i] > seq[j] }边界 dp[0] = 1 表示首个为结尾的最长串长度为1。#define LOCAL #include <iostream> #
2015-06-24 19:47:52 542
转载 最长上升子序列nlogn算法
这题目是经典的DP题目,也可叫作LIS(Longest Increasing Subsequence)最长上升子序列 或者 最长不下降子序列。很基础的题目,有两种算法,复杂度分别为O(n*logn)和O(n^2) 。 A. O(n^2)算法分析如下: (a[1]...a[n] 存的都是输入的数) 1、对于a[n]来说,由于它是最后一个数,所以当从a[n]开始查找时,只存在长度为
2015-06-24 18:41:52 498
原创 动态规划题目总结(持续更新)
暂且按照《训练指南》上的顺序写,每种题型对应HDU上的一道或者几道题目数字三角形数字三角形其实是在枚举每个阶段中的状态,此状态就是能从前一阶段已经解决的最大和问题中配合当前的状态得到的当前最大和。设 d(i, j) 表示第 i 阶段的第 j 个状态(格子)出发能得到的最大和,得到了一个状态转移方程: d(i, j) = a(i, j) + max{ d(i + 1, j), d(i + 1, j
2015-06-19 12:42:16 601 2
原创 My Standard Code Library
=============图论=============匈牙利算法// 时间复杂度为 O(n4) 的匈牙利算法,可继续优化到 O(n3) // 等我来优化之int W[maxn][maxn], n; int Lx[maxn], Ly[maxn]; // 顶标 int left[maxn]; // left[i]为右边第 i 个点的编号 bool S[maxn], T
2015-06-09 17:03:21 549
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人