CSP201509-1:数组分段】的更多相关文章

引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的“计算机职业资格认证”考试,针对计算机软件开发.软件测试.信息管理等领域的专业人士进行能力认证.认证对象是从事或将要从事IT领域专业技术与技术管理人员,以及高校招考研究生的复试对象. l  问题描述 给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段? l  输入格式 输入的第一行包含一个整数n,表示数列中整数的个数. 第…
闲言少叙,直接切入主题. 一.Linux下的多文件编译(Ubuntu系统). 对于小程序来说,往往一个.c文件就足够了,里面包含了各种主函数和功能函数,以及函数的声明等等.但是这样的弊端主要有两点,一是可读性较差,所有程序都在一个文件中造成检查和分析时候很不方便,特别是对于较大的工程来说,是无法想象的.第二点就是保密性,在工作中,我们要将程序交给客户,但是我们并不想让客户知道我们的源代码,所以要用这种方式将功能函数以.o的文件(二进制码)交给客户,确保自己的劳动成果不被别人剽窃,可以做到保护知识…
题目链接 题意:训练指南P223 分析:二分长度,把所有字符串连成一个字符串,中间用不同的字符分隔(这是为了保证匹配长度始终在一个字符串内).height数组分段,vis数组标记哪些字符串被访问了,如果可行,更新长度最大值,以及所有符合条件的子串的起点,最后要按字典序从小到大输出.虽然写的有些搓,比LRJ慢几倍,其中还有RE,WA等错误,但是通过自己的思考与debug,终于AC还是很开心的. #include <bits/stdc++.h> const int N = 1001 * 100 +…
题目链接 题意:可重叠的 k 次最长重复子串.给定一个字符串,求至少出现 k 次的最长重复子串,这 k 个子串可以重叠. 分析:与POJ 1743做法类似,先二分答案,height数组分段后统计 LCP>=m 的子串的个数. #include <cstdio> #include <cstring> #include <algorithm> const int N = 2e4 + 5; int sa[N], rank[N], height[N]; int t[N],…
题目链接 题意:给定n个数字,求超过5个数字的,最长的,变化相同的,不相交的重复子串 分析:男人8题中的一题!数列相邻两项做差,形成新数列,即求数列中的最长重复子串(不可相交). 后缀数组+二分答案.假如二分得到答案L,如何知道它是可行的呢? 因为对于排序后的后缀,Lcp ( Suffix ( List [ i ] ) , Suffix ( List [ i - 1 ] ) ) 是所有与Suffix ( List [ i ] )的LCP值中最大的一个. 因为 Height [ i ] 表示的是排…
这道题和UVa 12206一样,求至少重复出现k次的最长字串. 首先还是二分最长字串的长度len,然后以len为边界对height数组分段,如果有一段包含超过k个后缀则符合要求. #include <cstdio> #include <cstring> #include <algorithm> using namespace std; + ; + ; int s[maxn]; int sa[maxn], height[maxn], rank[maxn]; int t[m…
用来存放字符量的数组称为字符数组.字符串可以看作一个数组,它的元素是字符型的. 字符数组的定义 形式与前面介绍的数值数组相同.例如: char c[10]; 由于字符型和整型通用,也可以定义为int c[10]但这时每个数组元素占2个字节的内存单元. 字符数组也可以是二维或多维数组.例如: char c[5][10]; 即为二维字符数组. 字符数组的初始化 字符数组也允许在定义时作初始化赋值.例如: char c[10]={'c', ' ', 'p', 'r', 'o', 'g', 'r', '…
题目链接:hdu_3518_Boring counting 题意: 给你一个字符串,让你找不重叠且出现大于1次以上的字串个数 题解: 后缀数组height数组的应用,我们枚举字串的长度,然后将height数组分段,符合条件就ans++ 为什么要这样做,因为height数组存的是相邻排名后缀的最大前缀数,如果height的值大于等于我们枚举的长度len, 那么有可能这一段存在有两个以上的该长度的字串,然后我们统计这个段的开头长度l和结束长度r,如果r-l>=len,说明这段必有 大于一个以上的该长…
1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include <stdlib.h> int main() { int a1=20, a2=345, a3=700, a4=22; int b1=56720, b2=9999, b3=20098, b4=2; int c1=233, c2=205, c3=1, c4=6666; int d1=34, d2=0, d3…
Php常用的数组函数 键值操作 Array_values($arr) 获取数据的值 Array_keys($arr) 获取数组的key Array_flip($arr) 数组键值反转 In_array(‘apple’, $arr) 数组中是否存在 array_key_exists(‘apple’, $arr) Array_search(‘apple’, $arr) 数组中检索apple返回键名 指针操作 Current($arr) 返回当前指针当前单元和pos()相同 Key($arr) 返回当…