09acm选拔赛(—)解题报告.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文档。上传文档
查看更多
09acm选拔赛(—)解题报告 总的来说同学们表现的不错,要知道你们才大一啊,比我是不知强了多少倍! 我们这次的题目还是很有特点的没有像校赛那样出了很多模拟,贪心题目,大家一眼就看出方法的题目,而是加了排序,超找,dp这样的类型题,主要也是给大家个信号,不要沉溺于水题的怀抱(当然做一定的数量的也很有必要,熟悉语法,编译器等等)!学习新的算法,武装自己,互相学习,才是加入集训队的目的,而不仅仅是做多少到题目! 没有发挥好的同学也不用太沮丧,总的感觉大家实力相差不是很大!付出的总有回报 (ms和”出来混总是要还”一个意思!) 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,四边相等的四边形是菱形 2,有一个角为直角的菱形是正方形。 3,对角线相等的菱形是正方形 利用1,3 可以之判断所以点之间的距离来判断,共六条边,若能分成两类且短的占4,则是正方形! 1182 sort problems 这题的是我出的,本来就是想考察大家对排序的掌握,感觉直接排序太没有水平了,就加了个找出前n大的数,有感觉这样不过瘾,就又要求这前n大的数按原来的顺序输出!哎,可惜题目出的仓促没有考虑仔细(表示严重道歉),没有考虑如果出现多个相同的数据的都是第n大怎么输出,我的标程本意是按着出现的顺序输出;即如果 在4 5 4 5 4 4 中选3个就输出 4 5 5;可后来发现我的程序用的qsort排序不稳定原来第一个4可能会跑到最后一个;导致输出的数据不正确!刘兴海和刘庆的程序是正确的,而且思路也很好,大家可以参考下!沈辉的想法也接近啦! 李老师也提出种方法,应该是最高效: 首先找出第k大的数x(不是利用排序,利用快排的思想), 然后再对原序列扫描一遍, 若a[i]xn0则 n-- , 再扫描一遍 若a[i]x 直接输出a[i] 若 a[i]==xn0 输出a[i] 并且 n—;如果 n==0退出 有关找第k大第k小的数网上的高效方法很多,以后老师也会给大家接受,图书馆的算法书一般都会介绍那种利用快排思想找的方法! 1183账单 这题属于简单字符串处理,也可以说是简单模拟题,适合同学熟悉编程,利用c语言解决问题!不过现场过的人不是很多,大家还要加强练习!估计是很多同学在字符串转换数字时出错啦,情况分清就好了 首先令sum=0.0; 若遇到字母或者空格continue 若遇到数字开始处理 令tmp = s[i]-‘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)即

文档评论(0)

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

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

1亿VIP精品文档

相关文档