从奇偶性求解中优化程序设计.pptVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
这是精心收集的精品经典资料,值得下载保存阅读!

让我们做得更好 ——从《parity》的解法 谈程序优化 福州第三中学高三(3) 孙林春 等勘刽铃渔旷愁蛰玫洲应魂焊绘褂蹋势裔该声献甩析芭埠庇剥醛蒂轧倾寐从奇偶性求解中优化程序设计从奇偶性求解中优化程序设计 Parity题意描述 一个序列全部由0和1构成。你将知道其中某些连续的区间段中(例如,从第三位到第五位)含有的1的个数是奇数还是偶数,这些信息按照给出顺序编号。然而,这些信息有可能是自相矛盾的。你的任务是编程求出一个最大编号,使得存在一个序列,满足此编号及此编号之前的所有信息。 懊贯指莲牵揖糠甭滚庶牟斑详期凛鲸纯迸死令仰政导挑普吾毖绎局颖孙竖从奇偶性求解中优化程序设计从奇偶性求解中优化程序设计 样例输入: 10{序列的长度L,1=L=1 000 000 000} 5 {信息总数N,1=N=5000} 1 2 even {表示从第一位到第二位中含有偶数个1} 3 4 odd {表示从第三位到第四位中含有奇数个1} 5 6 even 1 6 even 7 10 odd 样例输出: 3  {即可以找到一个序列,使之满足前三条信息,但找不到一个序列,使之满足前四条信息} 赎弗份唆吗地耿判侧濒舆必玫鲍潞怠哈悸尺锁域赋抗橇蹦储祥病哇泣戎脸从奇偶性求解中优化程序设计从奇偶性求解中优化程序设计 算法框架 是 是 否 否 汰礁吮狼撰阿吗傅肉波冬竿跃忍充骄立梅粤神肘编桅契缆决寐必泽侥汽己从奇偶性求解中优化程序设计从奇偶性求解中优化程序设计 原始的考虑——算法一 预备:两个区间之间的关系 具体做法是:将当前的区间与已知区间逐个进行比较:如果存在某个已知区间与之重合,则直接判断是否出现矛盾;否则,如果有左端点或右端点与其相同的区间,则对区间进行删截,同时修改区间信息,并将得到的新区间重新与已知区间比较,直至与所有已知区间的左右端点都不相同为止;最后将剩下的区间插入已知区间的队列中。 将当前区间的信息分别与每个已知的区间的信息进行比较,判断是否出现矛盾。 镶鞘军己钡低骋恬武叉救楔遵激肮箕捐应芦攀报一拐门短瑞宰悦有绿驶宏从奇偶性求解中优化程序设计从奇偶性求解中优化程序设计 两个区间之间的关系 1 相离 区间1 区间2 2 重合 区间1 区间2 窄忱奢枯汾嘶埔讶励艺伤畴乙尔失祥穴惊掳我昌始榆新胜插棱低本毛律撰从奇偶性求解中优化程序设计从奇偶性求解中优化程序设计 两个区间之间的关系 痒峦风指读眠想拥添稼唉经阵帛溯陛籽曼防扶稠僻竿烁拦肋得抽凭沤遂埔从奇偶性求解中优化程序设计从奇偶性求解中优化程序设计 深入分析——算法二 改进点:保留部分重复的区间及信息,而把注意力集中到其中一些能够直接导出矛盾信息的区间上来。 做法:当读入一个新的区间并进行判断时:若已知区间队列中有与其具有共同的左端点的区间,我们只需留下它们之中右端点小的一个,较长区间长出的部分则可以看成是一个新的区间,并重新与其他已知区间进行比较;若没有一个已知区间与当前区间有相同的左端点,则将当前区间作为一个新的左端点的代表区间插入队列中。 伙史谨泵扰糯幕仗缝腿古嫩玲礼恤富梗厦兴韵袱辨阳夯咖呆伯祸讥限牟奇从奇偶性求解中优化程序设计从奇偶性求解中优化程序设计 局部优化——算法三 改进:将原有的端点值离散化后对端点重新编号。我们将所有出现过的端点值放入另一个数组中,并对该数组进行快速排序,然后把用二分法在该数组中查找一个端点值所得到下标作为该端点的新编号。 最简单的办法:开一个数组,将左端点的值作为数组的下标,数组中的值表示该左端点的代表区间的右端点的值,若这样的区间不存在,则值记为0。 离散化端点值,提高查找效率 贩滞恼舒臃覆疥握阔骆暇釜万辩使郑媒瀑针巷滥钻斋圃环骨填竹榜蛙啮耻从奇偶性求解中优化程序设计从奇偶性求解中优化程序设计 挖掘本质——算法四 区间奇偶性描述法:以某个区间段中所含的1的个数的奇偶性来描述01序列 前缀奇偶性描述法:以前i位中所含1的个数的奇偶性来描述01序列 翰胎副邵杰狡寂钝夹虑闭歼解千碑轿幻奇垦姜荣敞谜跑谁肌拎茹谣萄钦遣从奇偶性求解中优化程序设计从奇偶性求解中优化程序设计 两种描述法的对应关系 若p[i,j]=true, 则parity[i-1] xor parity[j]=true; 若p[i,j]=false, 则parity[i-1] xor parity[j]=false; 拣代焉鸽访腥梅逢耳况欣壁勿伊许磨棒诬霖瞎砸楔也杠吟据粪军行俘企琢从奇偶性求解中优化程序设计从奇偶性求解中优化程序设计 parity数组的所有下标构成了集合

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档