NOIP2009集训小资料.docVIP

  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文档。上传文档
查看更多
NOIP2009集训小资料 目录 1.反约瑟夫问题 2.空间的计算 3.树的性质 4.最大公约数 5. Catalan数 6.最短路floyed 7.小技巧 8.最短路SPFA 9.move函数 10.最长上升(下降)子序列[nlogn] 11.字母树 12.几类背包问题 13.最长上升公共子序列 14.树的遍历 15.循环小数转分数 16.字典序法求排列 17.康托展开 18.随机顺序 19.最小区间覆盖问题 20.K短路 21. Fibonacci数列 22.关键路径 23.中缀转后缀 24.后缀转中缀 25.最小生成树Kruskal 考试心得 1.考试中在一定的时间如果没有想出过全点的算法就抓紧时间编写一个能过部分点的朴素或可过样例的骗分算法。 2.考试应该想好了在编程前要想好算法编写时要思考语句是否会带来不良的影响。 3.考试时要善于发现规律,而且推出某个规律时,要多次进行验证以保证其正确性。 4.看题时一定要仔细,特别是某些没有样例的题。 5.当算法正确,程序错误时,暂时放弃,过几天再重打一遍。 6考试时要注意数据范围,当数据范围较小时可先使用枚举等方法然后再进行动规或搜索。 7考试时要在重要的(可能出错的)地方用笔划记,使不该犯的错误尽可能避免,每次都能发挥出自己的水平。 8. 一个题目不一定就是只有一种算法可能是几个算法的结合。 9.注意题目中x与y所代表的意义;m与n 所代表的意义。 10.程序编写完成时要注意特殊情况和极端情况的考虑。 11.在所有题目编完后,要出几个极限数据判断是否会出现201、215等错误。 12.在遇到数学或物理问题时要先把问题分析清楚,再编程。 13.考试时想到的思路和思维的闪光要在草稿纸上记录下来,再验证其可行性(包括:编程复杂度、实现时间、时间复杂度、空间复杂度),可行性较低的要及时舍弃。 14.如果实在想不到好的算法就赶快打一个搜索。 15.数组最好比题目中的数据范围大一些,避免边境情况未考虑完全时出现201。 16.能开int64的尽量开,数组最好从0开始 17.做题时不要一开始就想骗分算法,最好先想正确算法。 算法精华 反约瑟夫环问题 f[i]代表i个人报数,报到j的出局时最后出圈的人的序号 f[1]=1 f[i]=(f[i-1]+j-1) mod i+1 空间的计算 常用类型的字节数 longint 4 integer 2 int64 8 Extended 10 Boolean 1 String 256 Real 6 每类型所占字节*1024*1024*个数(单位M) 如果一个图中任意两点有且只存在一条简单路径那么它就是一棵树 求最大公约数(欧几里德算法)=链接 function gcd(x,y:longint):longint; begin if y=0 then gcd:=x else gcd:=gcd(y,x mod y); end; 最小公倍数*最大公约数=两数之积 卡特兰数=链接 通项公式:f[n]== 递推公式:f[n]=f[1]*f[n-1]+f[2]*f[n-2]+…+f[n-1]*f[1] n=2 f[1]=1 前十项 1位 2位 3位 4位 5位 6位 7位 8位 9位 10位 1 2 5 14 42 132 429 1430 4862 16796 floyed求最短路=链接 For k:= 1 to n do for i:= 1 to n do for j:= 1 to n do if f[i,k]+f[k,j]f[i,j] then f[i,j]:=f[i,k]+f[k,j]; 中间值要放在外层循环 小技巧 div 2 的时间长于 shr 1 i:=i+1 的时间长于 inc(i) i:=i-1 的时间长于 dec(i) longint 比 integer 快 SPFA求单元最短路=链接 注意事项: [1]Next[i]代表在边集数组中下标为i的边的同起点的边在边集数组中的下标 [2]Dian[i]代表起点为i的边在边集数组中的下标 [3]无向边要分为两个有向边 move函数的用法(速度是循环的10倍以上)[考试时最

文档评论(0)

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

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

1亿VIP精品文档

相关文档