- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
09acm选拔赛(-)解题报告
09acm选拔赛(—)”出来混总是要还”一个意思!)
1181 正方形:
这道题是我们的队长XML出的(被水啦!),我们集训队多了一位过兰州大学研究生线的大四学姐,她因为要准备复试,所以和我们一起训练,是她问XML给四个点坐标怎么判断能否够成正方型,XML就直接取材啦!很多学校的研究生复试题目都是以ACM题目的形式出的,不过都不是太难!
可以参考下/diy/contest_show.php?cid=5547题目都是数据结构,算法的基本内容!
这题属于计算几何,题目其实并没有很多同学想的那么简单,只是数据实在是太水,让很多人都水过了!
题目并没有告诉你点的顺序。所以过的同学可以再试下下面几组数据!
0 0 4 3 1 7 -3 4 yes
0 0 4 3 -3 4 7 1 yes
4 0 -4 0 3 0 -3 0 no 是菱形 打乱顺序
0 0 2 0 2 3 0 3 no 长方形
判断方法也很简单 就是中学学的菱形,正方形的定义就可以:
1,四边相等的四边形是菱形有一个角为直角的菱形是正方形。对角线相等的菱形是正方形—;如果 n==0退出
有关找第k大第k小的数网上的高效方法很多,以后老师也会给大家接受,图书馆的算法书一般都会介绍那种利用快排思想找的方法!
1183账单‘0’,c=10,b=1,i++一直处理直到遇到字母或空格跳出
若遇到数字tmp+=tmp*c+(s[i]-‘0’)* b;b*=0.1;
其中遇到小数点则令c=1,b=0.1;
Sum+=tmp;
输出sum
其实如是对库函数熟悉的可以利用 itoa(), atof() , sprintf() , sscanf() 来实现 数字和字母的转化!不过这些函数有的编译器不支持,比赛时还是少用,平时写代码倒是可以用!
1184 找数
这题本意考察二分查找,由于数据弱,大家线性查找都能过(又被大家水了)!
二分查找要求数据有序,本题正好满足条件。
每次拿你要找的数据x和区间(I,j)的中间数据比较mid=(i+j)/2
若相同则找到
若xa[mid] 则查找(mid+1,j)
若xa[mid] 则查找(i,mid-1)
这样可以一次去掉一半的查找空间,对于n个数只用找log2(n)次;而不是线性的n/2次
当n很大时相差很大的!
注:虽然二分查找的代码很短,但是分为递归和非递归两种,而且对于超找 等于x和超找 第一个大于等于x的写法都有很小的差别,建议大家可以自己试着写写,建立自己的代码库!
不会的当然问老师,或和同学讨论啦!
1185游戏币
这题老师赛后也讲了解法,属于动态规划(Dynamic Programming)即传说中的DP,有没有DP思想是区别菜鸟与老鸟的标志!我们参加完去年亚洲区预选赛的现场时赛后的最大感触就是,会dp就能拿奖!因此这次选拔赛我们一直通过,给大家添加一道dp题目,让大家快速提升功力…
当然这题看着很简单,尤其是在老师讲过后,很多同学可能还会认为就是是递推题!
其实dp用递推的形式写出来很简洁,但是不宜想到!一般的递推题的状态都是确定的,转移一般也是单一的!但是dp的状态有时很难找,这题老师解法的状态相当于是用f(i,j)这个状态表示从(0,0)点走到(i,j)所能得到的最大价值,
f(i,j)可以从f(i-1,j)和f(i,j-1)走过来,从哪个方向过来就是转移,
f(i,j)= max(f(i-1,j),f(i,j-1))+ a(i,j){ a(i,j)表示该点的价值}
这个就是状态转移方程。
对于f(i,j)我们不关心(0,0)到(i,j)的中间状态,而只关心最后一步,因为不管以什么方式从(0,0)到(i-1,j)反正f(i-1,j)记录了到达的最大价值,我们直接引用,f(i,j-1)也同理。 能做到这点的状态就做无后效性的状态,只有找到满足无后效性状态才能利用dp思想解题!
当然状态的定义是不唯一的,转移的方法也不唯一!刘兴海的代码就用了另一种状态,不过估计他也不太清楚他其实用了dp。大家可以参考下他的代码!
Dp说着简单,却不好掌握,需要大家多思考总结,练习!
可以先看下百度百科上对dp的介绍,对于每道题,先不要看代码,自己先想一会!
/view/28146.htm?fr=ala0_1_1
你可能会发现:对于类似的题目你最先想到的方法一般就是贪心和枚举。拿本题举例子:很容易想到的贪心方法就是每次都选择当前最大的走!但这显然是不正确的,短视的没有总体规划!对于枚举则穷举每一个方向,这可能还要用到递归!这也显然是超时的算法。复杂度为O(2^n)
总之”dp很难很有用”
1046完美数也许你应该要知道1间的完美数只有:6, 28, 496, 8128
文档评论(0)