prefix解题报告
------------------------------------------------------------------------------------------------------------------------------------------------
【题目】
  给你许多子串P和一个长字符串S,请问S的前缀中能用这些子串(可以重复使用子串)组合的最长的一个长度是多少?
【数据范围】
  P的长度在1~10之内,子串个数在1~200之内
  S的长度在1~200,000之内
【输入格式】
  首先给出用空白分割的各个子串P,以独处一行的'.'字符作为结束符
  然后给出S,分多行给出,每行不超过76个字符。注意,分行符不属于S。
【输入样例】
  A AB BA CA BBC
  .
  ABABACABAABC
【输出样例】
  11
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
  简单的DP。
  输入输出不多说,bool型数组d,定义如下:d[i]==ture表示S长度为i的前缀可以被P表示出来。
  如此一来,递推下去即可,从d[i]可以更新d[i+P[j].size()],直至更新到底。
  假设有K个子串,S串长度为N,则总时间复杂度为O(NK)。
------------------------------------------------------------------------------------------------------------------------------------------------
【总结】

  有一个很严重的问题,我的代码最后一个点评测时运行时间是0.99s~1.04s之间波动,因此可能超时、可能AC……这说明我的算法应当改进,或者进行常数优化,在此特别提醒读者!
  另外,提交过程中,有几个细节问题,导致没有一次AC。这里不加赘述,因为这些错误并无借鉴意义,仅仅是因为我这道题是写了一半,放了一周,再继续写完的。。。所以错误百出。

------------------------------------------------------------------------------------------------------------------------------------------------

【代码】

 /*
ID: icedrea1
PROB: prefix
LANG: C++
*/ #include <iostream>
#include <fstream>
using namespace std; int K;
string P[],S; bool d[]; int main()
{
ifstream in("prefix.in");
ofstream out("prefix.out"); string str;
for(in>>str;str!=".";in>>str) P[++K]=str;
//cout<<"K="<<K<<endl;
//for(int i=1;i<=K;++i) cout<<"P["<<i<<"]="<<P[i]<<endl;
while(in>>str) S+=str;
S="."+S;
//cout<<"12345678901234567890123456789012345678901234567890123456789012345678901234567890";
//cout<<"S.size="<<S.size()<<endl;
//cout<<S<<endl; d[]=true;
for(int i=;i!=S.size();++i)
if(d[i])
{
//cout<<"d["<<i<<"]=true"<<endl;
for(int j=;j<=K;++j)
if(S.find(P[j],i+)==i+) d[i+P[j].size()]=true;
}
for(int i=S.size();i>=;--i)
if(d[i]) { out<<i<<endl; break; } in.close();
out.close();
return ;
}

USACO Section2.3 Longest Prefix 解题报告 【icedream61】的更多相关文章

  1. USACO Section2.1 The Castle 解题报告

    castle解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  2. USACO Section2.1 Ordered Fractions 解题报告

    frac1解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  3. USACO Section2.1 Healthy Holsteins 解题报告 【icedream61】

    holstein解题报告 --------------------------------------------------------------------------------------- ...

  4. USACO Section2.2 Preface Numbering 解题报告 【icedream61】

    preface解题报告----------------------------------------------------------------------------------------- ...

  5. USACO Section2.1 Hamming Codes 解题报告 【icedream61】

    hamming解题报告----------------------------------------------------------------------------------------- ...

  6. USACO Section2.3 Controlling Companies 解题报告 【icedream61】

    concom解题报告------------------------------------------------------------------------------------------ ...

  7. USACO Section2.3 Money Systems 解题报告 【icedream61】

    money解题报告------------------------------------------------------------------------------------------- ...

  8. USACO Section2.3 Zero Sum 解题报告 【icedream61】

    zerosum解题报告----------------------------------------------------------------------------------------- ...

  9. USACO Section2.3 Cow Pedigrees 解题报告 【icedream61】

    nocows解题报告------------------------------------------------------------------------------------------ ...

随机推荐

  1. April 11 2017 Week 15 Tuesday

    Love is hard to get into, but harder to get out of. 相爱不易,相忘更难. The past are hurt, but I think we can ...

  2. 动态控制C4C UI元素的显示和隐藏

    C4C UI上UI元素的显示和隐藏可以通过Key User在Adaptation模式里通过编辑一些简单的rule去控制,诸如这种格式: if ( logic expression = true ) t ...

  3. 微信的 rpx

    微信小程序新单位rpx与自适应布局   rpx是微信小程序新推出的一个单位,按官方的定义,rpx可以根据屏幕宽度进行自适应,在rpx出现之前,web页面的自适应布局已经有了多种解决方案,为什么微信还捣 ...

  4. MMU CPU及思想

    要素: 1)CPU访问寻址地址空间: 2)内存不足以容纳所有进程数据: 3)MMU将进程数据分割,保留当前使用数据. http://baike.baidu.com/link?url=KHyp37Ysi ...

  5. spring boot学习1

    转:https://blog.csdn.net/jsyxcjw/article/details/46763639 1 开始 1.1 spring介绍 Spring Boot使开发独立的,产品级别的基于 ...

  6. aop 和castle 的一些 学习文章

    https://www.cnblogs.com/zhaogaojian/p/8360363.html

  7. barnes-hut算法 && Fast Multipole Methods算法

    barnes-hut算法 http://arborjs.org/docs/barnes-hut Fast Multipole Methods算法 http://www.umiacs.umd.edu/~ ...

  8. 最大独立集问题-maximal independent set problem

    原文链接 http://blog.csdn.net/xin_jmail/article/details/29597471 http://blog.csdn.net/xin_jmail/article/ ...

  9. Search in Rotated Sorted Array——LeetCode

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  10. ILSVRC2014检测总结

    ILSVRC 2014结束一段时间了.从下面的表格来看,基本都是RCNN的路子,但是这些牛队都做了改进.自己和人家比差的太远啊,努力. team results Spotlights and impr ...