网上找一些-试题解题报告_第1页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

隐含的码【关键字】最小覆盖序列、动态规【本文从模型的简化入手详细阐述了本题的思考过程和算法,【正文IOI1000000题目关键是抓住重点理顺关系简化模型下面就先对本题的模型进行化。1规模依然大得惊人,需要进一步简化。所以希望尽可能的缩短覆盖序列的长度,最好每个覆盖序列不止是“右侧最与其他覆盖序列“它的长度也不会超过1000,而它的所字长度仍与原来一样同样是一个最优解因此完全可以抛弃所有不“最小覆盖序列”10000,所以“最小覆盖序10000。这个规模已经在可承受范围之内了。2、“最小覆盖序列集”的建立和,本题的文本文件容量大应该尽可能地减少读入次数最好是只读一就得到所“最小覆盖序列考虑到覆盖序列长度不超过1000可以开1000,。这种算法在情况下所耗费的时间是1000000*100*1000,显然不行。它的缺整个码字,浪费太多来看另一种算法,它的基本思想是利用存在覆盖序列侧最小,如果能在缓冲区内找到整个码字,那么就把这个覆盖序列“最小。Buffer:Array[1..MaxLength]OfChar;{文本缓冲区}Pos:Array[1..MaxN]OfByte;{码字匹配指针}Sray[1..MaxN]OfLongInt;{覆盖序列起始位置表}Cur:LongInt;{PosIfp>MaxLengthThenp:=1Fori:=1toNDoIfiPos[i]ThenIfPos[i]=1ThenStart[i]:=Cur;IfThenIf能在缓冲区内找到整个码字把这个覆盖序列“最小覆盖序列”表中;PosStartUntilEoln(Fin);单从程序循环结构上看这种算法情况下所耗费时间也是1000000*100*1000000*100*k,k<<1000。实际的测试证明了这种算法效率远码字查询得到因此不需要保存其它信息了综上所述,对于每“最小覆盖序列”最终只要保存三个信息就足够了。所需空间一共是。这道题要求的是码字长度总和最大,是一个最优化问题尝试着使用动f(a)=1a。(N)就是所要求的最优解(N=“最小覆盖序列”总数。定义L[i]=第i个码字

(](

a的序列

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论