摘要: 有两个字符串A和B,求多少对属于A的子串组成B。若组成B的其中一个子串等于B[0...i](0<=i<n),那么另外一个就等于B[i+1...n-1].所以总共有n-1种形式。那么其实就是求B[0...i]和B[i+1...n-1]的值,之后再利用乘法原理求出答案。既然是两个串的模式匹配,KMP算法就再适合不过了。KMP算法的核心在于p[]数组,p[i]指的是s[0...p[i]]等于s[i-p[i]...i]。#include <cstring>#include <cstdio>#include <algorithm>#define MAXN 阅读全文
posted @ 2012-03-27 17:08 蚀 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 昨天做两场线上比赛,FOJ和SOJ,都只做了两题。FOJProblem 2074 Number of methods(数学)有一排石子,每次只可取走一个,第一次可取任取一个,之后取被取走石子相邻位置的石子,有多少种取法?一开始还看错题意,没注意"只能取被取走石子相邻位置的石子",WA了一次。若有n个石子,我们取走第i个石子,左边剩下i-1,右边剩下n-i个石子,之后我们每次只能取左边最右边的石子或右边最左边的石子,左边要取i-1次,右边要取n-i次,总共要取n-1次,若设左取一次的代号为0,右取一次的代号为1,取法就是一组由i-1个0和n-i个1组成的组合数。 Proble 阅读全文
posted @ 2012-03-26 11:57 蚀 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 2912 Average distance求一棵树的所有任意点对的距离之和总体思路是砍叶子节点,直到根节点。一开始想复杂了,不仅要记录点数,还要记录剩余的路径数,搞了一个晚上都没搞出来。睡觉的时候想到只用记录已删的点数就够了。O(n)#include<cstring>#include<cstdio>#include<algorithm>#include<cstdlib>#define MAXN 10010using namespace std;struct Graph{ int next,vex,dis;};Graph g[MAXN<< 阅读全文
posted @ 2012-03-24 10:07 蚀 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 3008 Gold Coins(刚开始以为会超时,会有数学方法,网上搜索了一下居然都是深度搜索)分解质因数之后深度搜索如果没有1 ≤ t ≤ n 这个条件可以直接用数学方法计算View Code #include<cstring>#include<cstdio>#include<algorithm>#include<cstdlib>#define MAXN 10010using namespace std;long long ans,n,k;long long a[MAXN],b[MAXN];void DFS(long long i, long 阅读全文
posted @ 2012-03-23 16:23 蚀 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 中文版TinyMCE下载地址:http://wt1.ouyaoxiazai.com/xiazaidian/tinymce.exe<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Con 阅读全文
posted @ 2012-03-14 22:25 蚀 阅读(999) 评论(0) 推荐(0) 编辑