上一页 1 ··· 3 4 5 6 7 8 下一页
摘要: 题目链接:http://codeforces.com/problemset/problem/126/B 大意:给一个字符串,问最长的既是前缀又是后缀又是中缀(这里指在内部出现)的子串。 我自己的做法是用KMP的next数组,对所有既是前缀又是中缀的位置计数,再从next[n]开始走next,也即枚举 阅读全文
posted @ 2016-03-01 21:26 活在夢裡 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/633/G 大意是一棵树两种操作,第一种是某一节点子树所有值+v,第二种问子树中节点模m出现了多少种m以内的质数。 第一种操作非常熟悉了,把每个节点dfs过程中的pre和post做出来,对序列做线段树。维护取 阅读全文
posted @ 2016-02-29 23:36 活在夢裡 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/633/C 大意就是给个字典和一个字符串,求一个用字典中的单词恰好构成字符串的匹配。 比赛的时候是用AC自动机写的,就是对于trie中每一个节点,判断是否为终结点,以及当前字符所在位置p减去trie中这个节点 阅读全文
posted @ 2016-02-29 23:28 活在夢裡 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 大意是有一排石子,每一堆有a[i]个,目标状态每一堆有b[i]个,每一步可以从一堆中取出一个石子转移到相邻的一个,其中1和n也算相邻也即环形。问最少步数。 比赛的时候写了个按照步数贪心的做法,FST了,当时想的贪心是从1到n/2枚举步数,for每一个需要石子的堆i,从(i+d)%n与(i-d)%n中 阅读全文
posted @ 2016-02-29 23:15 活在夢裡 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/609/E 大致就是有一棵树,对于每一条边,询问包含这条边,最小的一个生成树的权值。 做法就是先求一次最小生成树,标记最小生成树上的边,对于这些边,直接就是原始最小生成树。否则必然可以在去掉u到v路径上最长边 阅读全文
posted @ 2016-02-02 20:34 活在夢裡 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 大意是有n段路,每一段路有个值a,通过每一端路需要1s,如果通过这一段路时刻t为a的倍数,则需要等待1s再走,也就是需要2s通过。 比较头疼的就是相邻两个数之间会因为数字不同制约,一开始想a的范围是2-6,处理这几个数字互相之间的关系,还是想岔了。 正解应当是开60个线段树,因为2-6的LCM是60 阅读全文
posted @ 2016-02-02 19:55 活在夢裡 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 无意看到的LeetCode新题,不算太简单,大意是给一个数组,询问多少区间和在某个[L,R]之内。首先做出前缀和,将问题转为数组中多少A[j]-A[i] (j>i)在范围内。 有一种基于归并排序的做法,在每次归并完左右两个子区间后,当前区间两部分分别都已经排序完毕,基于有序这一点,扫描后半段区间,对 阅读全文
posted @ 2016-02-02 00:45 活在夢裡 阅读(1811) 评论(0) 推荐(1) 编辑
摘要: 沿着一条条斜线DP即可,dp[k][i][j]表示第k步,一端在第j列,另一端在第i列,构成回文的个数,沿着四个方向推下去即可。 1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 #include <string> 阅读全文
posted @ 2016-01-31 21:10 活在夢裡 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 抽空在vjudge上做了这套题。剩下FZU 2208数论题不会。FZU 2205这是个想法题,每次可以在上一次基础上加上边数/2的新边。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #includ... 阅读全文
posted @ 2015-11-25 00:31 活在夢裡 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 这题主要有了中间的一些连通块的限制,不太好直接用二分图最大独立集做。考虑到图比较小,可以作补图求最大团来求解。 1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 #include <string> 5 #includ 阅读全文
posted @ 2015-11-25 00:13 活在夢裡 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 本题要求第k小的distinct子串,可以根据height数组,二分出这个第k小子串所在后缀的位置信息。由于题目要求子串起始下标尽可能小。所以再在rank数组中,二分出与当前后缀LCP大于等于所求子串长度的范围。通过RMQ求出这个范围中最小的sa。 1 #include 2 #include ... 阅读全文
posted @ 2015-11-25 00:03 活在夢裡 阅读(1156) 评论(0) 推荐(0) 编辑
摘要: 集训队论文中有求不同子串个数的做法,就是扫一遍height数组,过程中根据height数组进行去重。对于本题也是雷同的,只是每一次不是根据与排名在上一位的LCP去重,而是与上一次统计对答案有贡献的后缀进行比较去重。几组数据abacaba 7abbacaa 7baabcaa 5 1 #include... 阅读全文
posted @ 2015-11-24 23:54 活在夢裡 阅读(462) 评论(0) 推荐(0) 编辑
摘要: 题意有一些绕,但其实就是对于不断变化的i,求以j(0=j 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #... 阅读全文
posted @ 2015-11-24 23:16 活在夢裡 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 给出若干模式串,再给出若干询问串,求每个询问串作为多少个模式串的子串出现。 如果一个串是另一个串的子串,则一定是另一个串某个前缀的后缀或者某个后缀的前缀。根据字典树的性质,将模式串的每一个后缀插入字典树中,同时更新字典树中节点的cnt值。这里需要注意不要重复累加贡献,可以在字典树中新增一个num的信 阅读全文
posted @ 2015-11-09 22:29 活在夢裡 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 枚举子串长度,根据height分组,如果本组sa最小值与sa最大值之差超过枚举的长度,则本组对于答案贡献为1。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 ... 阅读全文
posted @ 2015-11-09 21:28 活在夢裡 阅读(265) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 下一页