我们知道,有些DP方程可以转化成DP[i]=f[j]+x[i]的形式,其中f[j]中保存了只与j相关的量。这样的DP方程我们可以用单调队列进行优化,从而使得O(n^2)的复杂度降到O(n)。可是并不是所有的方程都可以转化成上面的形式,举个例子:dp[i]=dp[j]+(x[i]-x[j])*(x[i...
分类:
其他好文 时间:
2014-05-17 14:19:06
阅读次数:
214
没什么多说的。栈:后进先出,LIFO队列:先进先出,
FIFO讲了递归时用到栈,和栈的顺序表示。队列讲了链式表示和循环队列(顺序表示)。实际上都可以用链式和顺序表示,看情况选吧。里面的例题都还挺不错的,自己做了一遍,都是按照书上的结构来的,现在才知道C++STL里都实现了这些功能了,直接调用就成.....
分类:
其他好文 时间:
2014-05-16 06:18:38
阅读次数:
215
最近又重新浏览了c++ primer , 感觉以前看的太浅显了,所以抽空又翻了翻,感觉里面很多的知识还是不是熟悉,正好今天看到复制控制这章的例题--消息处理示例,同时也把课后习题要求了顺带完成了。
贴一下代码,供大家参考,相互学习哈!
//Msg类
#ifndef MSG_H
#define MSG_H
#include "Folder.h"
#include
#include...
分类:
编程语言 时间:
2014-05-15 03:37:54
阅读次数:
368
题目链接:10253 - Series-Parallel Networks
白书的例题。
这题也是需要把问题进行转化,一个并联可以分为几个串联,然后串联可以分成边。
如此一来,最后叶子结点种数会是n,问题转化为去分配叶子结点,使得总和为n。
书上有两种方法,一种直接去递归,利用组合数学的方式去计算答案。
一种是推出递推式:
设dp[i][j]为一共j个叶子结点的树,子树的叶子最多的为i...
分类:
Web程序 时间:
2014-05-12 06:22:04
阅读次数:
447
题目链接:1073 - Glenbow Museum
白书上的例题,需要一定的推理。
首先要把问题转化,推理出n个点,R的个数为(n + 4) / 2, O的个数为(n - 4) / 2个,因为首先四个角必须为R,然后在中间添加O点,每有一个O点就要多一个R点,所以最后R点比O点多4。
然后问题就转化为给定n个R点和m个O点,求出有多少个序列,要求O点不连续,并且R的连续个数不能超过4,的序...
分类:
其他好文 时间:
2014-05-11 14:41:25
阅读次数:
293
题目链接:1362 - Exploring Pyramids
白书上的例题,思路是对于每个结点,往后遍历分为左右两边子树来考虑,左边的子树为去掉根节点剩下的子树,而右边是要算上根节点的,这样就不会有重复的情况出现,然后根据乘法原理,左右两边情况相乘为总情况数,然后计算这些总和。
f[i][j]表示[i,j]结点的情况种数,那么 f[i][j] = sum{f[i + 1][k - 1] * ...
分类:
其他好文 时间:
2014-05-11 07:02:11
阅读次数:
277
题目链接:11361 - Investigating Div-Sum Property
白书上的例题,不过没有代码,正好前几天写了一题数位DP的题目,这题也就相对轻松了。
dp[i][x][y]表示加到第i位,数字 % k,数位和 % k的组合情况数,那么现在要添加一个0 - 9的数字上去状态转移为
dp[i + 1][(x * 10 + num) % k][(y + num) % k],计...
分类:
其他好文 时间:
2014-05-11 05:23:33
阅读次数:
316
题目见http://125.221.232.253/JudgeOnline/problem.php?id=1073http://125.221.232.253/JudgeOnline/problem.php?cid=1073&pid=4有不少方法可以解决该题,这里使用hash来解决.
hash函数很...
分类:
其他好文 时间:
2014-05-10 01:03:19
阅读次数:
264
凸包:把给定点包围在内部的、面积最小的凸多边形。
本文介绍求解二维凸包的O(nlogn)的Andrew算法和少量例题,以及代码模板。...
分类:
其他好文 时间:
2014-05-07 22:55:55
阅读次数:
600
以前的模板和题目
白书例题,基本模板,多个串连接时的处理,二分加分组的处理。
注意n和m的值
n为字符个数
m为最大字符值+1
分组时,分出来的区间是[ ),左闭右开
idx[],的有效只是1-t-1,为t表示自己添加的字符
#include
#include
#include
#include
using namespace std;
const int maxn = ...
分类:
其他好文 时间:
2014-05-07 04:50:29
阅读次数:
250