这道是个典型的AC自动机。 在trie的基础上添加fail指针,指向类似于KMP的next处。 大意是求一段文字中出现过多少某字典的词。 主要用于多串匹配。 #include <stdio.h> #include <ctype.h> #include <string.h> #include
下午闲来无事,突然想起收藏夹里尘封多年的题目,都是些比较感兴趣的题目,随便看了道2829 binary strings。 链接:http://cstest.scu.edu.cn/soj/problem.action?id=2829 大意是: 给定一个初始字符串(不超过20位),和目标字符串,给定操作步骤,求初始字符串到目标字符串的最少操作次数。 操作步骤:对字符串某一段连续区间
先来无事,切道水题。 题目网址如下:http://cstest.scu.edu.cn/soj/problem.action?id=4150 最长递增子序列的变种。 代码如下: #include <stdio.h> #include <ctype.h> #include <string.h&g
1.子序列最大和问题: 给你一串序列x1,x2,……,xn,求max(i,j){xi+……+xj}。 枚举i,j时间复杂度O(N*N)。 简单dp: 设d[i]表示以i结尾的最大序列和。 则ans=max(d[i])。 d[i] = max(d[i-1]+x[i],x[i]); O(N*N) -> O(N) . 2.最大
第一轮因为没有时间就没做了。据说较第二轮难一些。 第二轮题目确实比较水。 A题 高斯消元,具体思路还不完全会。待之后补充。 B题 二分答案+并查集。 C题 简单dp D题 暴力枚举即可。 简单分析及代码: B:题目大意是给N(N<=1000)个网页,分成k个聚类,要求类与类之间的网页的差异值至少都为t,求最大的t,每个类至少要有一个网页,差异值计算类似于几何距离。
soj1678的字符界面版本。 通过计算空格从底向上推即可。 源码: #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> /***************************
昨天没事干,本来切了2道水题,可以oj又挂了就没交上。今天交WA了一次,因为一个参数写错了= =简单总结一下。 题目大意: 抽象出如下序列: 1, 1、1,2, 1、1、1,1、2,3.... 第i串序列要么其和比前面的长,要么字典序比前面的大。 序列和显然从1,2,3,……,n。 序列长度为i时,其个数有 f[i] = f[i-1
明天软考,但是今天还是手痒,在soj又切了道水题1663,看cauchy做了,故也来切掉。 题目意思是一串合法的表达式字符串,仅包括大写字母,+,-,(,),空格,tab字符,把多余的括号去掉。如:(A+(B+C)+(D-E)) ->A+B+C+D-E 或者((B))->B 思路: 1.堆栈操作字符串括号屁屁额 2. pos[top] = index ;//记录括
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号