- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基本程序题集解题报告
一、 贪心算法
Problem1. 删数问题
首先考虑s=1时的情况,很容易知道如果只删一个数,那么若各位数字递增则删除最后一个数,否则删除第一个递减区间的首字符,这样删除便可以得到最小的数。而对于s1时,我们只需要重复这种操作s次,得到的操作就是所求的最小数。
Problem2. 旅行家的预算
假设现在在第i站,那么在这站加满油可以到达的最远距离是dis[i] c*d2,
如果在这个范围内存在一个加油站j,它的价格pri[j]pri[i],那么只要把油加到刚好能到达j就可以了;
如果在这个范围内不存在这样的加油站,那么就在i加满油,然后走到尽量远的加油站j,如果无法走到j,即最近的加油站dis[j]dis[i] c*d2,此时无解。
Problem3. 线段覆盖
贪心策略为:每次选取线段右端点最小的线段,保留这条线段,并把和这条线段有公共部分的所有线段删除。重复这个过程,直到任两条线段之间都没有公共部分。
由于右端点最小,所以保证了所有与这条线段没有公共部分的线段都在这条线段的右边,且所有与这条线段有公共部分的线段两两之间都有公共部分。由于有公共部分的线段中,最后只能保存一条,显然右端点越小,对后面的影响越小,这条线段应该保留。
Problem4. 背包问题
由于每一物品是按重量拿,所以我们每次选取当前单位重量价值最高的放入背包,直到物品取完,或背包装满。
Problem5. 任务调度
迟任务──调度中在规定期限后完成的任务,试题要求解出最小化迟任务的罚款总和;
早任务──调度中在规定期限前完成的任务,最大化早任务的罚款总和正好对应问题的解;
任意一个调度可通过下述方式安排成规范形式:
1.按期限递增的顺序对早任务进行调度。即只要在调度中有两个分别完成于时间K和K 1的早任务i、j且djdi,我们就互换i和j的位置,使得任务i在交换后仍然是早的,而任务j被移到更前的位置;
2.如果某个早任务X跟在迟任务Y之后,我们可以交换X和Y的位置,使得早任务先于迟任务;
任一调度中早任务的集合构成了一个独立的任务集A,因为A中任务按期限单调递增的顺序进行调度后,没有一个任务是迟的、且A中期限为t或更早的任务个数小于等于t。显然A集合为满足传递性质的独立子集,而问题的解为其中罚款总和最大的一个子集。
Problem6. 果子合并
很明显,为了让总和最小,我们每次应该选取最小的两对果子将它们搬到一起。
Problem7. 射击竞赛
1. 统计所有行包含的白格数
2. 从还没有射击格的行中选出一个白格数最少的
3. 检查所选的行
1) 若所选行的白格数为0,则输出无解;
2) 否则从所选行的白格中任选一个作为射击格,并将与该格同列的另一个白格所处行的白格数减1
4. 返回到第2步,直到所有的行都有射击格。
5. 若还有列没有选射击格,则在该列任选一白格作为射击格即可
Problem8. 任务安排
分为两步,既是先完成对A机器的安排,然后再对B机器进行安排。
我们可以很容易的用贪心法安排对A的操作。应为每一个零件对于A机器来说都是公平的,因此记录完成当前分配的所有工作后每个机器的完成时间(显然初始值所有机器为0),接下来依次加入需要完成的工作,找完成时间最小的机器完成当前的工作。
而对于B机器的安排就有点麻烦了,因为每台A机器完成操作的时间不同,不好用贪心。其实可以这样做,首先我们把它看作是平等的。这样对于每一个工件,它的B操作会有自己的完成时间,同样对于每个工件的A操作也会有。于是,我们可以这样贪心来求得最短时间,A操作中最快完成的与B操作中最慢完成的加起来,A中第二完成的与B中倒数第二完成的加起来,A中第三完成的与B中倒数第三完成的加起来,……最后取最大的就是最短时间。原因很简单,以最小的配对为例,最小的配最大的才能使其他的配对尽量的短……
Problem9. 最小差距
首先考虑n为奇数时,显然我们首先应该让他们的位数尽量接近,即一个为ndiv2,另一个为ndiv2 1,为了让差尽量小,所以较大的数我们我们应该取最小的ndiv2 1个数,并以升序排列,较大的数我们应该取剩下的ndiv2个数,并按降序排列。
而偶数就不能这样做,一个显然的反例就是对于1234,如果按照奇数的方法就应该是43-12=21,显然31-24=721,所以不成立。我们将算法改改,首先枚举两个数的最高为,最高位定下来后,再按照奇数的方法来贪心处理剩下的数字,从中取最小的值即可。
二、 分治法
Problem1. 一元三次方程的解
这一题的方法很多,因为精度要求不高的缘故,所以无论二分还是枚举都可以过,不过在硬枚举时,步进的精度最好选为0.001,这样如果出现f(x)f(x 0.001)=0时,无论解是什么,再
您可能关注的文档
最近下载
- baltur燃烧器TBG210P17690030中文使用维护手册.pdf VIP
- 审核员现场见证评价表参考实用文档.doc VIP
- 2023年军队文职人员招聘之军队文职公共科目押题练习试卷A卷附答案.docx VIP
- ai心理健康创业计划书.docx VIP
- 国开作业管理学基础-管理实训:第二章 查阅文献资料并写出评论参考(含答案)025.docx VIP
- 医学综合试题库及答案.docx VIP
- 通用工器具安全管理规范.docx VIP
- 2025届高考作文技巧之列提纲优化结构课件(共46张PPT).pptx VIP
- 光学装配与调校技术课件.pptx VIP
- 医学综合知识试题库+答案.pdf VIP
文档评论(0)