《Line Up》解题报告

合集下载

sven's sudokupad题目

sven's sudokupad题目

sven's sudokupad题目Sven's Sudokupad: A Fun and Challenging PuzzleSudoku is a beloved puzzle game that has gained tremendous popularity worldwide. Sven's Sudokupad offers a unique twist to this classic game, providing an array of challenging puzzles that will keep players engaged and entertained for hours.With Sven's Sudokupad, players can enjoy an immersive puzzle-solving experience right at their fingertips. The app features a user-friendly interface, making it easy for both beginners and seasoned Sudoku enthusiasts to dive right into the game.Included in Sven's Sudokupad are hundreds of different Sudoku puzzles, varying in difficulty levels from easy to expert. This ensures that there is a puzzle suitable for everyone, regardless of their skill level. Whether you are a Sudoku beginner looking to improve your logical thinking skills or an experienced player seeking a real mental challenge, Sven's Sudokupad has got you covered.The game utilizes a grid layout with numbers ranging from 1 to 9. The objective is to fill in the empty spaces of the grid so that each row, column, and 3x3 sub-grid containsall the numbers from 1 to 9 without repetition. It may sound simple, but solving these puzzles requires critical thinking, attention to detail, and patience.Sven's Sudokupad provides a range of helpful features to assist players along the way. If you find yourself stuck, you can utilize the hint system, which offers strategic hints to nudge you in the right direction without giving away the solution entirely. This feature allows players to maintain a sense of accomplishment while also receiving a little boost when needed.Furthermore, the app keeps track of your progress, allowing you to monitor your improvement over time. You can easily go back and review completed puzzles or challenge yourself with timed puzzles to test your speed and accuracy.Overall, Sven's Sudokupad offers an engaging and addictive puzzle experience suitable for puzzle enthusiasts of all ages. Whether you want to relax and unwind or sharpen your analytical skills, this app provides the perfect platform to dive into the world of Sudoku. Download Sven's Sudokupad today and get ready to conquer an endless array of puzzles from the comfort of your own device.。

博采英语参考答案

博采英语参考答案

博采英语参考答案博采英语参考答案在学习英语的过程中,我们常常会遇到各种难题和困惑。

为了解决这些问题,很多人会选择博采英语参考答案。

这些参考答案可以是教科书上的范文,也可以是老师提供的模板,甚至是互联网上的资源。

然而,博采英语参考答案并不是一种完美的解决方案。

在这篇文章中,我将讨论博采英语参考答案的利与弊,并探讨如何更好地利用这些参考答案来提高英语水平。

首先,博采英语参考答案的好处是显而易见的。

通过参考答案,我们可以了解到一些优秀的写作技巧和表达方式。

这些参考答案往往是经过精心编写和修改的,具有较高的质量和准确性。

通过学习这些参考答案,我们可以提高自己的写作水平,提升语言表达能力。

此外,博采英语参考答案还可以帮助我们更好地理解教材内容,掌握知识点。

然而,博采英语参考答案也存在一些问题。

首先,有些参考答案可能过于简单化或机械化。

这些答案可能只是简单地列举了一些词汇和句型,缺乏灵活性和创造性。

如果我们过于依赖这些答案,就会导致我们的写作变得呆板和缺乏个性。

其次,有些参考答案可能存在错误或不准确的地方。

毕竟,每个人的写作风格和观点都有所不同,所以我们不能盲目地接受所有的参考答案。

最后,博采英语参考答案可能会让我们陷入依赖性。

如果我们过于依赖这些答案,就会失去自主学习和思考的能力。

那么,如何更好地利用博采英语参考答案呢?首先,我们应该将参考答案作为学习的参考和借鉴,而不是简单地照搬和抄袭。

我们可以学习参考答案中的一些优秀的表达方式和写作技巧,然后根据自己的理解和观点进行改写和创作。

其次,我们应该多样化地使用不同的参考答案资源。

可以从教科书、老师提供的参考答案以及互联网上的资源中进行选择和比较,从而得到更全面和准确的参考。

同时,我们也应该保持批判性思维,对参考答案进行评估和分析,判断其是否合理和可行。

最后,我们应该注重自主学习和思考。

参考答案只是辅助工具,我们应该通过自己的努力和思考来提高英语水平。

只有这样,我们才能真正掌握英语,提高自己的写作能力。

Bstation解题报告sgu枚举堆

Bstation解题报告sgu枚举堆

试题翻译SGU148B-Station试题描绘在离着名的国家Berland 不远的地方,有一个水下工作站。

这个工作站有N 层。

已知:是第 i 层装有 W i的水,最多能够容纳 L i的水,恐惧分子炸毁第 i 层的代价是P i。

第 i 层一旦被炸毁,该层所有的水都将倾注到第 i+1 层。

假如某一层的水量超出了它的容量 (即 L i),那么该层就将自动被破坏,所有的水也会倾注到下一层。

Pivland 的恐惧分子想要用最少的钱毁掉第 N 层,此刻他雇用你来计算,需要炸毁哪些层。

输入第一行有一个自然数 N(1<=n<=15000)。

接下来的 N 行,每行 3 个整数Wi,Li,Pi(0<=Wi,Li,Pi<=15000) 。

输出输出需要炸毁的层的编号。

样例Input3100010001010002210100Output12解题报告B-Station 解题报告【题意剖析】令 S i=W1+W2+ +W i(特其他 S0=0)。

不如设恐惧分子炸毁的第高层是第p 层(第一层是最高层,第 N 层是最基层)。

由于恐惧分子的目标是破坏第N 层,因此水一定从第 p 层向来泻下去。

假如存在一个 i,知足 W p p+1i-1i<=Li,也就是说前方几层的水所有泄下+W+ +W+W来也没法把第 i 层自动冲垮,那么就一定要使用炸药把它炸开了。

因此恐惧分子需要炸毁的层的会合就是Bomb[p]={p} ∪{i|i>pS i p-1i}令 Q i i i ,那么:-S <=L=S -LBomb[p]={p} ∪{i|i>pQ i<=S p-1}我们列举 p,而后看哪些层需要炸毁。

这样就获得了一个O(n2)的算法。

【设计算法】n<=15000,O(n2)的算法效率太低。

注意到 S p是跟着 p 的增添而递加的,察看两个会合:Bomb[p]={p} ∪{i|i>pQ i<=S p-1}Bomb[p-1]={p-1} ∪{i|i>p-1Q i<=S p-2}由于 S p-2p-1,因此{i|i>p-1Q ip-2Bomb[p]。

喜马拉雅攀登计划第六周作业文本分析

喜马拉雅攀登计划第六周作业文本分析

喜马拉雅攀登计划第六周作业文本分析下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!喜马拉雅攀登计划第六周作业文本分析1. 引言在喜马拉雅攀登计划的第六周作业中,我们分析了一篇关于高海拔心理影响的文本。

acm中dp问题简单入门讲解

acm中dp问题简单入门讲解

ACM暑期集训报告院系:专业:年级:学号:姓名:日期:西南交通大学目录目录.................................................. 错误!未定义书签。

第1章动态计划(dp) ............................ 错误!未定义书签。

简介.................................................... 错误!未定义书签。

教师内容................................................ 错误!未定义书签。

大体dp——背包问题..................................... 错误!未定义书签。

假设干经典dp及常见优化.................................. 错误!未定义书签。

类似题目................................................. 错误!未定义书签。

参考文献........................................... 错误!未定义书签。

附录1 暑期集训心得体会............................. 错误!未定义书签。

第1章动态计划(dp)(题目采纳2号黑体居中,下空1行)简介(题目采纳四号黑体,正文内容采纳小四号字体,倍行距)在解决问题的时候咱们常常碰到这种问题:在多种方式的操作下咱们如何取得一个最优的方式让咱们取得中意的结果。

这时咱们大多人的思想确实是贪婪。

不错贪婪确实是一个不错的算法,第一他简单容易想到,咱们在操作起来也比较容易。

此刻我推荐几道咱们oj上的贪婪算法的题:soj1562药品运输 soj1585 Climbing mountain。

为了引入动归算法我先拿药品运输这道题简单说一下贪婪算法。

例如1:药品运输(题目采纳小四号Times New Roman字体)Description大地震后,某灾区急需一批药品,此刻有N种药品需要运往灾区,而咱们的运输能力有限,此刻仅有M辆运输车用来运输这批药品,已知不同的药品对灾区具有不同的作用(“作用”用一个整数表示其大小),不同的药品需要的运输力(必要的车辆运载力)不同,而不同的车辆也具有不同的运输力。

高三英语看图作文讲评

高三英语看图作文讲评

宅男午夜tv wபைடு நூலகம்
[单选,共用题干题]某流水线浮点加法器分为五级,若每一级所需要的时间分别是6ns、7ns、8ns、9ns和6ns,则此流水线的最大加速比为(1)。若每一级的时间均为7ns,则最大加速比为(2)。空白(2)处应选择A.4.1B.5.0C.5.6D.6.2 港口货物作业合同 患者男性,4岁,家长发现其喜近视。国际标准视力表检查双眼远视力为0.5,近视力检查为J3,眼部未见明显器质性病变。对于患者的诊断最有帮助的检查是()A.遮盖试验B.VEP检查C.检影D.角膜地形图E.A超 男,25岁,左腰痛,疑有上尿路结石,拟摄尿路平片。检查前应做的准备是A.尿常规B.血常规C.肠道准备D.碘过敏试验E.心电图检查 一般检查细菌形态最常用的是。A.荧光显微镜B.暗视野显微镜C.电子显微镜D.普通光学显微镜E.相差显微镜 阿米巴性肝脓肿的首选治疗是A.穿刺抽液B.经皮肝穿刺脓肿置管闭式引流术C.应用抗阿米巴药物D.切开引流E.首先反复穿刺吸脓 什么是路政管理方法? 以下不属于按材料分类的建筑类型是A、砖木结构B、框架结构C、混合结构D、钢结构 预防疾病最有效的措施是。A.针对致病因素所采取的预防措施B.改善环境措施C.增进人体健康的措施D.预防接种,提高人群免疫水平E.增强自我保健意识 产后出血的主要原因不包括A.胎膜早破,宫内感染B.胎盘因素C.软产道裂伤D.子宫收缩乏力E.凝血功能障碍 数据通信网按传输技术分类可以分为交换网和等。 [问答题,论述题]简要论述《诗经》的艺术成就。 下列疾病不会引起继发性肥胖的是A.多囊卵巢综合征B.皮质醇增多症C.甲状腺功能减退症D.性腺功能减退症E.嗜铬细胞瘤 牙本质过敏症最可靠的诊断方法是()A.电活力测定B.尖锐探针在牙面上滑动C.热诊D.备洞试验E.冷诊 国家行业标准《汽车油漆涂层》(QC/T484—1999)中规定油漆涂层分个组和若干等级。A.8B.10C.12 民用爆炸物品使用单位申请购买民用爆炸物品的,应当向所在地人民政府公安机关提出购买申请。A.乡(镇)B.县级C.县级以上D.市级 依法管理原则 化学本质为核糖核酸的酶是A.DNA聚合酶B.核酶C.RNA聚合酶D.限制性内切核酸酶E.DNA连接酶 利用频数分布表及公式M=L+i/f(n/2一∑fL)计算中位数时,要求。A.分布末端有确定数据B.数据成正态分布C.组距相等D.数据分布对称E.以上都不对 下列关于五脏所藏的叙述,错误的是A.心藏神B.肝藏魂C.肺藏魄D.脾藏意E.肾藏智 在配送中心每天的营运作业里,是一切作业的开始。A.接受订单B.订单处理C.配货D.分拣 患者主诉:一侧后牙嵌塞食物已半年。查:右上6近中龋,探敏,叩(-),冷测正常牙面同对照牙,进入龋洞时引起疼痛,去除刺激立即消失。最可能的治疗是()A.药物治疗B.再矿化治疗C.磨除法D.树脂充填E.垫底,银汞充填 CPDA保养液对红细胞的保存时间为()A.1周B.2周C.3周D.4周E.5周 男性患儿,1.5岁,因误吸花生米后呛咳4天,胸片示右肺不张,听诊右肺呼吸音低,临床拟诊为右支气管异物,欲行支气管镜检查,应选择支气管镜的内径为()A.3.0mmB.4.0mmC.5.0mmD.6.0mmE.7.0mm 国际货物运输保险 通讯天线连接下列哪部设备A、AMUB、RMPC、VHF 不宜与牵牛子配伍使用的药物是A.芒硝B.五灵脂C.硫黄D.巴豆E.郁金 20岁男性,于8月来院,骤起腹泻3小时,初呈稀便,继转水样便,达10余次,病前曾在沿海某地旅游。T36.8℃,P90次/分,BP80/46mmHg,眼窝稍下陷。大便镜检:白细胞0~3/HP。最可能的诊断是A.急性菌痢B.食物中毒C.霍乱D.胃肠功能紊乱E.急性坏死性肠炎 白酒品评具有的特点。 牙拔除后,牙槽窝内的血凝块有、和的功能。 骨髓液吸取时,正确的操作是A.用力适当,不可过猛B.若未能吸出骨髓液,应拔出穿刺针C.若需进行骨髓培养,应先取培养骨髓液然后再留髓标本进行细胞检查D.用于细胞检查的骨髓液应为0.3~0.5mlE.骨髓液吸出后,在玻片上混匀后再推片 指权利主体仅凭自己的行为,即可使自己与他人之间的法律关系发生变动的权利。A.支配权B.形成权C.抗辩权D.请求权 1791年,英国医生帕茨瓦尔为曼彻斯特医院起草了《医院及医务人员行动守则》,1803年他又出版了《医学伦理学》一书。这标志着作为学科形态的医学伦理学的诞生。这一情况说明了A.伦理道德源自于创造者的灵感B.伦理道德源自于人们的客观实践C.伦理道德源自于神对创造者的启示D.伦理道 女性,45岁。因慢性支气管炎咳喘症状加重1周前来门诊,体检:一般情况可,静息气平,无紫绀,两肺有散在干啰音。患者要求处方抗生素,关于是否使用和如何选择抗生素,下列哪一项处理最合适A.X线肺部透视及白细胞计数和分类B.头孢唑啉5g加入补液中静脉滴注(静滴)C.深咳&quot;合格 《医疗机构从业人员行为规范》的执行和实施情况,应列入A.医疗机构校验管理和医务人员年度考核B.定期考核和医德考评C.医疗机构等级评审D.医务人员职称晋升、评先评优的重要依据E.以上都对 躯体运动性脑神经核不包括A.展神经核B.舌下神经核C.滑车神经核D.迷走神经核E.动眼神经核 循证医学中最好的证据是指.A.基础研究B.大规模的随机对照临床试验C.经验分析D.病例报告E.描述性研究 国有产权管理的目标主要有:A.确立产权制度B.建立企业法人财产制度C.高效率配置资源D.国有资产保值增值 我国银监会要求各家商业银行同时实施《巴塞尔新资本协议》。A.正确B.错误 亚临床型血友病A时的FⅧ:C应为A.&le;1%B.2%~5%C.6%~25%D.26%~45%E.45%~70%

2023学堂在线网课《英文写作指导进阶》课后作业单元考核答案

2023学堂在线网课《英文写作指导进阶》课后作业单元考核答案

2023学堂在线网课《英文写作指导进阶》课后作业单元考核答案一、单选题1.答案:B2.答案:A3.答案:C4.答案:D5.答案:B二、多选题1.答案:ABD2.答案:ACD3.答案:ABCD4.答案:BCD5.答案:ABC1.答案:错误2.答案:正确3.答案:错误4.答案:正确5.答案:正确四、填空题1.答案:communication2.答案:improve3.答案:clear4.答案:organize5.答案:practice1.答案:英文写作是一种重要的沟通工具,通过学习英文写作,我们能够提高自己的沟通能力、思维能力和表达能力。

同时,英文写作也是学习英语的一个重要内容,通过写作,我们可以加深对词汇、语法等知识的理解,并提高自己的写作技巧。

2.答案:提高英文写作的方法有很多,首先,我们可以多读英文文章,提高自己的阅读能力和理解能力。

其次,我们可以多写作文,不断练习和积累经验。

另外,我们还可以参加英文写作指导班,通过老师的指导和批改,提高自己的写作水平。

3.答案:在进行英文写作时,我们需要注意以下几个方面:首先,要明确自己的写作目的,明确要表达的内容和观点。

其次,要注意语法和拼写的正确性,避免错误影响文章的质量。

另外,要注重段落的结构和逻辑,确保文章的条理清晰。

最后,要注意语言的简洁和准确,避免使用过于复杂的句子和词汇,以免给读者造成困扰。

4.答案:优秀的英文写作作文一般具备以下几个特点:首先,具有清晰的逻辑结构,每个段落都有明确的中心思想和论点,并通过合理的过渡词语连接起来。

其次,具有丰富的词汇和句型,能够准确表达自己的观点和情感。

另外,具有独特的观点和思考,能够引起读者的兴趣和共鸣。

最后,具有精确的语法和拼写,避免错误和不规范的表达,提升文章的质量。

六、写作题答案:Here are some tips for improving your English writing skills:1.Read a lot: Reading is a great way to improve yourvocabulary, grammar, and writing style. Read books,newspapers, and online articles in English to exposeyourself to different styles of writing.2.Write every day: Practice makes perfect. Try towrite something in English every day, such as a journalentry, a short story, or a blog post. The more you write, the better you will become.3.Get feedback: Ask a native English speaker or ateacher to read your writing and provide feedback. Theycan help you identify areas for improvement and give yousuggestions on how to strengthen your writing.4.Study grammar and vocabulary: Make sure you havea good understanding of English grammar rules andvocabulary. This will help you write more accurately andeffectively.5.Edit and revise: After you have written something,take the time to edit and revise your work. Check forgrammar and punctuation errors, and make sure your ideas are clear and well-organized.6.Read aloud: When you read your writing aloud, youcan catch mistakes and awkward phrases that you mightnot notice when reading silently. This will also help youimprove your pronunciation and intonation.7.Practice writing different types of texts: Try writingdifferent types of texts, such as emails, essays, and formal letters. This will help you become more comfortable with different writing styles and formats.8.Join a writing group or class: Consider joining awriting group or taking a writing class. This will give youthe opportunity to share your writing with others, receive feedback, and learn from fellow writers.Remember, improving your English writing skills takes time and practice. Be patient with yourself and keep writing!。

求职面试群面真题群面case 快消02 1

求职面试群面真题群面case 快消02 1
现在,你有5分钟的时间阅读材料,可以简单在纸上写下思路,之后有20分钟的讨论 时间,讨论结束请派一名代表进行总结陈述,总结时间不得超过3分钟,若3分钟还有 剩余,可以再由其他1-2名组员进行补充陈述。
现在发生海难, 一游艇上有八名游客等待救援, 但是现在直升⻜机每次只能够救一个 人。游艇已坏,不停漏水。寒冷的冬天,刺⻣的海水,游客的生命危在旦夕。
请将这八名游客按照营救的先后顺序排序。
2
Hale Waihona Puke Synet 群面模拟训练营 快消02
使用说明
2018年年8月月24日日 星期五
这是本周的群面模拟真题,请领取后不要阅读,和组员约定好时间后,大家在群内 一起阅读,保证群面时每个人都是第一次阅读本材料。
群面结束后,建议组内花20分钟进行复盘,交流分析,不断进步。
1
2018年年8月月24日日 星期五
海上救援(经典500强群面案例)
游客情况: 1.将军,男,69 岁,身经百战; 2.外科医生,女,41 岁,医术高明,医德高尚; 3.大学生,男,19 岁,家境贫寒,参加国际奥数获奖; 4.大学教授,50 岁,正主持一个科学领域的项目研究; 5.运动员,女,23 岁,奥运金牌获得者; 6.经理人,35 岁,擅⻓管理,曾将一大型企业扭亏为盈; 7.小学校⻓,53 岁,男,劳动模范,五一奖章获得者; 8.中学教师,女,47 岁,桃李满天下,教学经验丰富。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《Line Up》解题报告
题意描述
给出一个字符串S,其中每个字符都属于字符集Σ。

|Σ|≤10000,我们不妨把每个字符都用一个正整数来表示。

求一个最短的T∈Σ*,使得T不是S的跳跃子串。

所谓“跳跃子串”,就是从S中挑选(不一定连续地挑)若干个字符,按照它们原先在S中的顺序排列起来形成的字符串。

例如:设字符集为
{1,2,3,4,5},对于字符串S=(1 5 3 2 5 1 3 4 4 2 5 1 2 3)、(1 5 4)、(2 5 3)和(1 2 5 4)都是它的跳跃子串,而(4 3 1)和(5 4 3 2)都不是。

对于这个字符串S,最短的T可以是(4 3 1)或者(4 3 2)或者其他的一些字符串,它们的长度均为3。

注意,长度为0的串为空串,它可以是任何字符串的跳跃子串。

给定字符集,输入S,输出最短的T的长度。

S的长度不超过1000000。

分析
这是一道比较新的题目,出现于USACO Open 2004。

以前有一道类似的题目,也是输入一个S,求一个最短的T满足T不是S的子串,但那题中“子串”指的是连续子串,也就是S中连续的一段,而这题是可以跳跃的,因此两者区别很大,以前的题目无法给我们帮助。

让我们从分析样例入手,为什么对于样例,最短的T的长度一定是3而不是更小呢?换句话说,为什么对于样例中的S,长度小于等于2的字符串不能是符合要求的T串呢?
我们把S分成两部分:
S=(1 5 3 2 5 1 3 4 4 2 5 1 2 3)=(1 5 3 2 5 1 3 4 4 2 5 1 2 3)
两部分之间留出了足够的空格,可以清楚地辨认出来。

这样一来,我们可以很明白地看出:前一部分包括了全部的字符,后一部分也是这样。

于是,对任何的长度等于2的字符串R=(a b),总是可以在S的前一部分找到a,后一部分找到b,于是,可以找到S的某个跳跃子串等于R。

长度小于2的字符串就更不用说了。

所以说,长度小于等于2的任何字符串R都能在S中找到某个跳跃子串等于R,所以R不符合T串的定义。

于是,我们能够证明对于样例,最小的T至少长度为3,而我们又确实能够找到长度为3的T串,因此,答案就是3。

为什么我们一定要划分在两个“4”之间呢?因为如果划分点更靠前一些的话,第一部分必然缺少了“4”,于是对任意的R=(a b),a不一定可以在前一部分找到;如果划分点更靠后一些的话,则势必造成浪费:原来的划分点已经可以保证前一部分中所有的字符都出现,划分点更靠后的话不会有新的字符包含在前一部分里,反而有可能造成后一部分少了一些字符,在这里,如果划分点更靠后的话,后一部分就少了一个“4”,同样不利于我们的证明。

分析了样例,我们大胆猜测:对于任何一个字符串,我们也可以这样做!
下面把问题稍微改变一点:给定字符集,输入一个字符串S,函数f(S)意义
为:对于任何长度不超过f(S)的字符串R,总是可以在S中找到某个跳跃子串等于R,并且存在某个串T,长度为f(S)+1,使得T等于S的任何一个跳跃子串。

模仿上面对样例的证明,我们给出f(S)的求法并尝试证明:
1.若S为空串,则返回0。

2.设集合Appeared代表目前“出现过”的所有字符集合,初始时为空。

3.从前向后扫描S的每个字符c,将c加入到Appeared中,直到Appeared=Σ,
或者S的所有字符都被扫描过为止,记录下扫描停止时的位置p(也就
是最后一次被加入到Appeared集合中的字符的位置)。

4.判断Appeared是否等于Σ。

如果Appeared=Σ,则返回1+f(S[p+1..n]),其中n为S的长度,S[p+1..n]代表从S的第(p+1)个字符到第n个字符所形成的字符串,若p+1>n则是一个空串。

这里出现了递归调用。

否则,直接返回0。

这个求f(S)的方法正确性可以用类似于前面所采取的方法来证明:首先看算法的第一步,若S为空串,则返回0,这是显然的,因为空串的跳跃子串还是空串,也就是说,只有长度为0的串才会等于S的跳跃子串。

通过第2步和第3步,我们知道,若Appeared=Σ,则S[1..p]包含了字符集中所有的字符,否则一定存在某个字符c∈Σ,且S中没有c出现。

并且我们还知道,如果是前一种情况,则S[p]这个字符在S[1..p]中只出现了一次(否则在p被加入Appeared之前扫描就会结束)。

先看4.2,在这种情况下,存在某个字符c,没有出现在S中,因此单独的一个字符c所形成的字符串(长度为1)不等于S的任何一个跳跃子串,所以,f(S)<1,也就是f(S)=0。

最后看 4.1,在这种情况下,S[1..p]包含了所有的字符。

设head=S[1..p],tail=S[p+1..n],则S=(head tail),这正如我们分析样例时把S串划分成两部分。

t=f(tail)的含义是:任何长度不超过t的字符串都等于tail的某个子串,但是存在一个长度为t+1的字符串不等于tail的任何一个跳跃子串。

对于任何一个长度小于等于t+1的字符串R=(c R'),其中c是R的第一个字符,R'是剩下的部分,是一个长度不超过t的字符串,于是,R'一定等于tail的某个跳跃子串。

而c又可以在head中找到,所以,(c R')是S的跳跃子串。

也就是说,任何长度不超过t+1的字符串都等于S的某个跳跃子串。

存在长度为t+1的字符串不等于tail的任何一个跳跃子串,设一个这样的串为R',设c=S[p]。

连接c和R'得到串R=(c R'),长度为t+2。

假设R等于S的某个跳跃子串,则首先,R不能是tail的跳跃子串,因为f(tail)=t<t+2,所以R中一定有一些字符出现在head中,特别地,R的第一个字符c一定出现在head中。

因为R[1]=c,而对任何1≤i≤p-1,S[i]≠c,所以这个跳跃子串选取的第一个字符位置一定是p,之后的字符选取位置至少是p+1,换句话说,R'必须在tail中选取。

但是根据R'的含义,它不能是tail的跳跃子串,也就是说,R不能是S的跳跃子串。

因此,存在一个长度为t+2的串R不等于S的任何跳跃子串。

综合以上两点,f(S)=t+1=1+f(tail)=1+f(S[p+1..n])。

我们知道,问题的答案就是1+f(S),而求f(S)的算法正确性已经得到了证明,可以说,问题已经得到解决,只要选择合适的实现方式来确保时空复杂度。

算法描述中采用了一个Appeared集合,实际实现中可以使用一个标记数组
Tag,Tag[i]=0代表字符i不在集合中,Tag[i]=1代表字符i在集合中,并用变量tot存储集合的大小,每次加入一个字符i时,若Tag[i]=0则将tot增1并令Tag[i]=1,若Tag[i]=1则说明原先字符i就在集合里,不做任何改动。

这样,把字符加入集合Appeared的操作耗时为常数级,判断是否Appeared=Σ也只要比较是否tot=|Σ|,耗时也是常数级,只有一开始清空集合需要对每个字符i置Tag[i]=0,耗时为θ(|Σ|)。

我们预计算法的时间复杂度与字符串S的长度n相关,设它为O(h(n))。

算法的第一步耗时为常数,当n=0时,算法会在第一步直接返回,整个算法的时间复杂度为常数。

第二步耗时为θ(|Σ|),第三步耗时为θ(p)。

若第四步中进入了情况 4.1,则说明S[1..p]包含了所有的|Σ|个字符,于是p≥|Σ|,所以θ(|Σ|)=O(p),此时前三步的复杂度就是O(p),第四步递归调用f(S[p+1..n]),S[p+1..n]长度为n-p,因此整个算法的时间复杂度是O(p+h(n-p))。

若第四步中进入了情况4.2,则第四步耗时为常数,整个算法的时间复杂度是为O(|Σ|)。

不难归纳证明,h(n)=n+|Σ|,也就是说,整个算法的时间复杂度是O(n+|Σ|)。

至于空间,如果传递字符串采用开头指针的方式,则空间复杂度也是O(n+|Σ|)。

实际实现中可以消除递归调用,提高速度。

总结
从解决本题的过程中可以体会到:分析问题时从一个实例入手往往能够快速打开局面。

相关文档
最新文档