人太蠢,,看了一天的KMP。。
刚开始看训练指南的,,后来才惊奇的发现原来刘汝佳写的f数组并不是Next数组!
总觉得和之前看过的完全不一样。。。
后来又百度了一下KMP,研究了很久,然后用自己的逻辑写了一份
http://blog.chinaunix.net/uid-23767307-id-5033555.html
这个人把KMP大篇幅的讲了,,大家可以看看。。
个人认为...
分类:
编程语言 时间:
2015-08-13 23:44:39
阅读次数:
214
1.最长上升子序列2.最长公共子序列对于两个序列X={x1,x2,x3...xi...},Y={y1,y2,y3...yi...}3.最长上升公共子序列以下摘自刘汝佳《最长公共上升子序列(LCIS)的O(n^2)算法》预备知识:动态规划的基本思想,LCS,LIS。问题:字符串a,字符串b,求a和b的...
分类:
其他好文 时间:
2015-08-12 21:12:00
阅读次数:
111
算法竞赛入门经典第二版的365页例题11-5噪音,应该是“之和”换成“取最大值”,“取最小值”还是取最小值
如果我错了,请大家务必指点...
分类:
其他好文 时间:
2015-08-12 11:35:20
阅读次数:
150
该题需要用数据结构来优化DP ,具体方法就是之前第八章讲的(用数据结构优化算法,紫书P241),使用一个数组和两个指针维护一个单调队列, 可以在O(n)的时间内求出滑动窗口中的最小值 。
有了这个优化我们就可以快速的求出dp[i-1][j](x-d
然而刘汝佳就是不这么做,他只用了一个指针,连维护优先队列的数组都没开,就“隐式的”求出了最小值 。
具体做法是:
1.先维护窗口左边界,别让指...
分类:
其他好文 时间:
2015-08-06 22:35:01
阅读次数:
154
刘汝佳大白书p61页
#include
#include
#include
#include
#include
using namespace std;
#define INF 0x3f3f3f3f
#define N 21
struct point
{
double x, y, z;
} P[N];
double x[N], y[N];
double d[1 <...
分类:
其他好文 时间:
2015-08-05 20:24:08
阅读次数:
134
这是刘汝佳《算法竞赛入门经典第二版》的一道例题,只看书上的解释并没有理解,随后结合着代码才理解了。
解题思路:用d[i][j]表示序列1移走i个元素和序列2移走j个元素的最小“代价”, 这个代价指的是由那些已经移出的字母合并而来的序列中已经出现但尚未结束的字母对总距离和的贡献。比如说一个合并而来的序列中有两个那样的字母,第一个在这个序列中后面有3个字母,另一个字母后面有2个字母,那么此时的代价就...
分类:
其他好文 时间:
2015-07-31 20:29:00
阅读次数:
1978
这道题不得不说是一道水题,只要你看过刘汝佳的白书的话,相信秒杀还是没问题的,题意是A和B两个人玩游戏,有1~n一堆数,每个人轮流从中取走一个数,并把他和他的所有的约数擦去。擦去最后一个数的人赢,A先开始,问谁会赢。
分析:本题的结论有些出乎意料,除了n=0是先手必败之外,其他的情况都是先手必胜。证明如下。
如果后手能赢,也就是后手有必胜策略,使得先手无论去哪第一次取哪一个数,后手都能获得最后的胜...
分类:
其他好文 时间:
2015-07-28 00:59:15
阅读次数:
163
枚举,由已知条件推得y大于k,小于等于2KAC代码:#include"iostream"#include"cstring"using namespace std;const int maxn=20002;int a[maxn];int b[maxn];int main(){ int i,y; ...
分类:
其他好文 时间:
2015-07-27 18:04:25
阅读次数:
112
为了彻底理解树状数组,试着用树状数组做了下普通平衡树而树状数组只能离线做,或者保证值的大小在数组可承受的范围内也是可以的,因为要求离线是因为必须事前对所有数离散化。然后我们看刘汝佳蓝书上的图利用如下代码,可以找到所有前缀和中第一个大于等于k的1 int kth(int k) {2 int a...
分类:
其他好文 时间:
2015-07-21 23:54:23
阅读次数:
216