粗心的邮差.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
粗心的邮差.ppt

特殊解法! 先暴力出10以内的所有答案 设X1=f[1], X2=f[2], X3=f[3], X4=f[4] …… 令Y=f[n+1], Y=a1*X1+a2*X2+……+an*Xn 用高斯消元法求出a1到an的值 然后求出某个递推式可能满足答案 f[n]=2*f[n-1]+2*f[n-3]-f[n-5]; 最后把验证递推式 粗心的邮差 by HZY 题目大意 有n封信和n个人,第i封信可能会交给i-2,i-1,i,i+1,i+2中的任意一人,保证每个人必然能收到有且只有一封信,有多少种不同的送信结果? 问有多少种排列,满足每个元素的值与下标的差的绝对值小于等于2? 解法一 暴力! 期望得分:10 时间复杂度:O(n!) 解法二 动态规划 期望得分:40 时间复杂度:O(n*5) 定义状态f[i][state]表示,前i封信形成状态state的总方案数。 state为长度5的二进制数,假设i为6,state为11010,则表示的状态如下图: 1表示第i个人受到了信,0表示还没受到 前i-3位全为1 state第i-2到第i+2位 第i+3位以后全为0 1 2 3 4 5 6 7 8 9 10 1 1 1 1 1 0 1 0 0 0 状态表示 (1)原状态先左移一位 ,然后再把任意一个0的位置变成1. 所以当i=6,state=11010,可以转移到如下状态: i=7, state = 11100, 10110, 10101 (2)当state第一位为0时,特殊处理 例如,state=01101时,为了保证前i-3位全为1,所以只能转移到11010 (3)最后结果为i=n, state=11100的方案数。 状态转移 解法三 动态规划+矩阵快速幂 期望得分:100 时间复杂度:O(log(n)*5^3) THANK YOU

文档评论(0)

gsgtshb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档