posted @ 2015-11-07 20:15 LLGemini 阅读(290) 评论(0) 推荐(0) 编辑
摘要:
给出a,求递归式g(k)的初始条件g(0);可以看出来g(a) = 1,从后往前推。写个模拟程序可以看出来其实g(0) = 2^a,那么就是一个简单地快速幂取模问题了。#include #include #include #include #include #include #include #in... 阅读全文
摘要:
#include#includeusing namespace std;const int maxn = 100005;int n;int avai[maxn], need[maxn];bool dfs(int cur, int u, int f, bool lap){ if(cur == u... 阅读全文
posted @ 2015-09-08 18:40 LLGemini 阅读(291) 评论(0) 推荐(0) 编辑
摘要:
摘自网友,具体哪个忘记了,抱歉~定义:RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题: 对于长度为n的数列A,回答若干询问RMQ(A,i,j) (i,jO(nlogn)*/2 int dp[maxn][20];3 void initRMQ(int... 阅读全文
posted @ 2015-09-02 00:06 LLGemini 阅读(278) 评论(0) 推荐(0) 编辑
摘要:
【最长重复子串问题】可重叠最长重复子串 -- POJ 3261Disc: 给出包含n个元素的数组a,问其中最长可重叠重复子串的长度,要求该子串至少重复k次;输入保证至少存在一个重复k次的最长子串;Tips: 二分查找子串的长度,注意对该长度的子串是否存在K个重复子串的判定方法;代码: 1 /* ... 阅读全文
posted @ 2015-08-31 11:10 LLGemini 阅读(238) 评论(0) 推荐(0) 编辑
摘要:
1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn = 1002; 6 int sa[maxn], rank[maxn], height[maxn]; 7 int wa[maxn], wb[maxn], ... 阅读全文
posted @ 2015-08-30 17:52 LLGemini 阅读(332) 评论(0) 推荐(0) 编辑
摘要:
模板奉上int rank[maxn],height[maxn];void calheight(int *r,int *sa,int n){ int i,j,k=0; for(i=1;i1 且Rank[i]>1,一定有h[i]≥h[i-1]-1。(这条性质要好好理解!) 证明:设suf... 阅读全文
posted @ 2015-08-30 17:40 LLGemini 阅读(5089) 评论(0) 推荐(2) 编辑
摘要:
基本上一搜后缀数组网上的模板都是《后缀数组——处理字符串的有力工具》这一篇的注释,O(nlogn)的复杂度确实很强大,但对于初次接触(比如窝)的人来说理解起来也着实有些困难(比如窝就活活好了两天的光阴。。),看了那么多材料感觉《挑战程序设计》的后缀数组解释理解起来会相对容易很多,然而它的复杂度是O(... 阅读全文
posted @ 2015-08-28 11:24 LLGemini 阅读(1574) 评论(0) 推荐(2) 编辑