摘要: 后缀自动机也是解决字符串问题的常用工具,犀利在O(N)的空间复杂度下存在给定串的后缀以及子串,而且支持在线的操作。POJ-1509Glass Beads题意:求一个字符串的最小表示的开始下标。分析:其实有一个O(N)的算法专门来解决这个问题,并且实现非常简单,不过后缀自动机同样能够解决这个问题。首先把这个串重复两次,然后从前往后一一将字符加入到后缀自动机中,最后从根开始向下遍历串的长度层即可。#include #include #include #include using namespace std;const int N = 10005;char str[N];struct SAM { . 阅读全文
posted @ 2013-08-25 22:06 沐阳 阅读(7044) 评论(3) 推荐(2) 编辑
摘要: 原文地址:http://blog.renren.com/blog/340275217/731966815作者:赵越之前对于cout与printf()混用的结果的认识,源于某年北京赛区某judge的总结。据其称,某队在比赛时某题的输出混用了cout与printf(),结果输出的顺序出错。其把原因归结为一个带缓冲而一个不带缓冲。对此金强提出了置疑,因为stdio.h中定义了像ungetc()这样的函数,其作用是将字符放回到输入流中。可见stdio中也是使用了缓冲的。那么为什么cout与printf()混用会发生问题呢?下面来做一些试验(环境:g++ (GCC) 3.2.3 (mingw speci 阅读全文
posted @ 2013-08-25 21:05 沐阳 阅读(1042) 评论(0) 推荐(0) 编辑