信息学竞赛问题全面分析.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * 算法关键与技巧 由于每个S[i]最多只和4个点有关系——S[i-p],S[i+p],S[i-q],S[i+q],所以根本不需存储图,只需用一个二维数组f[I,j]表示第i个节点的第j条边是否存在。 拓扑排序时采用广搜的方式进行。 差分约束图 设数列为A1A2…AN, Si为序列的前 i个数的和 ,根据题目条件任意连续的p个数之和大于0,任意连续的q个数之和小于0,可以得到关于S的不等式组: Si-p –Si =-1 Si –Si-q =-1 根据该不等式组建立一张差分约束图: 对于所有的Si,分别引出有向边Si,Si-p,Si,Si+p,并且边上的权值赋为-1,然后引入一个新点S0,在引出有向边S0,Si,并且权值赋为0,然后使用bellman_ford算法求出从S0出发到达所有点Si得最短路MinL(Si)。如果图中存在负环,即bellman_ford算法失败,则输出NO,否则可以得到Ai=MinL(Si)-MinL(Si-1)。 时间复杂度分析: 差分约束图的边数M=n/q + n/p+n=3*n,建图时间复杂度为o(n), bellman_ford时间复杂度为o(n*M)=o(3*n2)。因此对于n=1000的数据可以在1s内出解。 ? 试题扩充 对于每个测试点将给你M组数据,要求你对于每组数据,判断是否存在这样的整数数列。 输入的第一行是一个正整数M,(1=M=10000),接下来的M行对应M组数据,每行有三个正整数N、P、Q(1=n,p,q=10^8)。 输出数据共N行,每行为YES或NO,如果第I组数据有解,则在第I行输出YES,否则输出NO 扩充问题的解决方案 数学方法: 对于给定P、Q,能够组成的满足条件的最长序列长度为:Max=p+q+gcd(p,q)-1。如果N〈=Max,则一个满足条件的整数序列存在,否则这样的序列不存在。 因此,求每组数据的时间复杂度为O(M*N*t),其中t是求最大公约数的时间复杂度,为一个很小的变量。空间复杂度为O(1),已经达到理论的下界 * * * * * * * * * * * * * * * * * * * * * * * * * * 信息学竞赛全面分析问题 长沙市第一中学 曹利国 具体要求与步骤 对所给问题进行全面细致的分析,并对题目中给定的条件作出严谨的规定。 给出题中的输入输出方式及格式,形成一套完整的试题。 具体要求与步骤 能否使用多种方法解题,若能,则对多种可能的方法进行对比,根据具体算法确定问题的数据规模。 分析确定算法及数据结构,给出最适合本题的算法框架描述和主要数据结构及其作用. 构思程序,并设计程序中各个模块的目标和作用,并对编写程序过程中准备使用的技巧进行说明; 具体要求与步骤 以命题老师的身份对测试点进行估计,给出测试点并说明设计该测试点的测试目标; 对全套试题进行全面总结(包括难度分析、算法关键、对选手考察的关键点和知识点、处理技巧、建议选手的一般做题顺序)。 例题1:走迷宫问题(maze) 【题目描述】有一个n*n的迷宫,每个方格里都有着相应的数字。你从左上角出发,每次可以向上下左右四个方向最多移动k格,并且要求你每次到达的方格里的数字必须大于上一次所在方格的数字。现在要求你走过的方格的所有数之和最大,问这个最大和是多少。 解法一 基于产生式系统的搜索算法,效率极低 解法二(动态规划模型一) 我们首先很容易想到把矩阵拉成一条直线,然后按矩阵里的元素从小到大排序,并用no数组表示现在的元素在原矩阵中的位置。设f[i]表示前i个数中选取第I个数所能得到的最大和,则有: f[i] = Max { f[j] + a[i] } 且a[j] a[i],且现数列中元素j在原矩阵中可以达到现数列中的元素i在原矩阵中的位置。 易知所求答案为 Max{ f[i] } (k = i = n)。( k 表示矩阵左上角元素在新数列中的位置) 此算法时间复杂度最坏 O(n^4),空间复杂度 O(n^2)。 解法三(规划模型二) 因为题目中明确表示一次移动的两个存在大小关系,设路径为A(x1,y1),A(x2,y2)…A(xl,yl),那么可以得到A(x1,y1)A(x2,y2)…A(xl,yl),由此可以看出按照移动的步数划分阶段不会产生后效性,用f(l,x,y)表示在第l步移动到x,y步所能得到的最大和。状态转移: F(l,x,y)=max{f(l-1,x1,y),f(l-1,x,y1)}+A[x,y] (abs(x1-x)=k ,abs(y1-y)=k) F(0,1,1)=A[1,1] 时间复杂度为o(L*n2*k)。空间复杂度

文档评论(0)

飞扬的岁月 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档