摘要:
【题目描述】 给定两个字符串,有两个操作 1--把其中一个串的某个位置的字符变换; 2--询问以某个位置开头的两个串完全相同的最大长度。 【分析】 可以两个字符串的相关信息转化为长为l的一个序列x(l=max(l1,l2)),若在i处两字符相同则x[i]=1否则x[i]=0, 每次更新就是线段树的单点更新,最后的询问就是从i开始的连续的最长的1的长度。 这题的更新很简单,问题是如何处理询问。 我的... 阅读全文
posted @ 2012-08-03 21:51
dreamxr
阅读(136)
评论(0)
推荐(0)
摘要:
【题目描述】给定两个字符串,有两个操作1--把其中一个串的某个位置的字符变换;2--询问以某个位置开头的两个串完全相同的最大长度。【分析】可以两个字符串的相关信息转化为长为l的一个序列x(l=max(l1,l2)),若在i处两字符相同则x[i]=1否则x[i]=0,每次更新就是线段树的单点更新,最后的询问就是从i开始的连续的最长的1的长度。这题的更新很简单,问题是如何处理询问。我的办法是记录区间内以左端点开始的最长的连续1的长度,询问的时候,如果点n正好被左端点开始的连续1序列覆盖,则递归结束。否则继续递归左儿子或者右儿子。另外还要处理下横跨区间的问题(具体见代码)。 1 #include&l 阅读全文
posted @ 2012-08-03 21:51
dreamxr
阅读(130)
评论(0)
推荐(0)
浙公网安备 33010602011771号