解题报告.docx
《解题报告.docx》由会员分享,可在线阅读,更多相关《解题报告.docx(5页珍藏版)》请在第一文库网上搜索。
1、NOIP2005信息学奥林匹克分区联赛解题报告麓山NOI战队第一题:谁拿了最多的奖学-Scholar问题评估这个题目据问题本身而言是相当简单的,没有牵涉到过多的算法,属于普及型试题。同时也是对实际问题一种分析和判断。总的来看,本题在方向上,向现实问题迈出了一步,是信息学和生活有了更多的联系。问题的算法是模拟。当中唯一的难点就是数据处理,考察点为数据库的建立和统计。程序实现由于程序数据范围只有100,当中不牵涉到数据移动,所以用一个纪录型数组,或者多个数组均可,在这里我们使用纪录型来描述。对于输入数据有两种方式来实现。法一逐个字符累加。首先定义C:char;然后利用Until作为终止符,将读入的
2、字符连接存储到ai.name中。代码为:Repeat read(c); ai.name:=ai.nanic+c; until c=,ai.name:=copy(ai.name,l,length(ai.s)-l);这样做的好处是,后面的值可以直接用read语句读入。但是最后一个值后,要记得readln;法二一次读入,然后分离。这样做需要逐个分离,对本题来说稍显复杂,但对NOIP来说此方法必须掌握,有的时候一定要用。具体实现,读入一个字符串So利用pos(一,s);找出空格位置。再利用Copy函数,和Vai函数进行截取,和转换。部分代码:(s:string;j,ok:integer)readln(
3、s);j:=pos(:s);ali.name:=copy(s,l ,j-l);s:二copy(s,j+l,50);当长度字符串长度是,为后面全部截取。j:二pos(:s);Val(copy(s,l ,j-l),ai.qp,ok);s:= copy(s,j+l,50);对于符号用if语句作一下判断就是了,太easy不写了,后面还有几个值,用同样方法处理就可以了。以上完成了数据库的建库工作,后面是统计,当然,我们在没读完一行数据后就可进行统计。用If语句判断他是否能得到相应的分值即可。分5条If语句写,每回可以就加入相应的分值。将每个的分值汇总计入到总数变量ZD当中。与当前最大值进行比较,得到Ma
4、x对应的I值。后面就是输出的问题了。小结、注意本题为简单题,只要思路明确清晰,就可ACo时间复杂度0(n)。但有一个细节,ZD变量必须定义Longint或以上类型否则会Error201的。第二题过河-River问题分析此题初看是一个典型的搜索题。从河的一侧到河的另一侧,要找最少踩到的石头数。但从数据范围来看。1.109长度的桥。就算是O(n)的算法也不能在一秒内出解。如果搜索石子,方法更困难。这要考虑到前面以及后面连续的石子。若换一种方法。用动态规划,以石广分阶段的维动规,时间复杂度是0(n2)。最多也只有100X100的时间。但是这样分状态就十分复杂。因为石头的分布是没有任何规律,而且会有后
5、效性。这样只好有回到搜索。搜索石子会和动规一样没有规律。我们一桥的长度为对象进行搜索,然后再加上一个巧妙的剪枝就可以在很短的时间内出解。可以号称为O(m2)。批注:号称一词已成为湖南OI本世纪流行词汇题目实现先以时间为对象进行搜索。时间复杂度为O(L)。从桥的一侧到另一侧,中间最多只有100个石子。假设桥长为最大值(109),石头数也为最大值(100)。这样中间一定会有很多“空长条”(两个石子中的空地),处理时把这些跳过,就只会有M次运算。关键是找出每一个可以跳过的“空长条”。我们可以先把青蛙可以跳出的所有可能求出,然后就可以求出可以忽略的“空长条特殊算法ai:前i个坐标中石子最小个数,初始为
6、第i个坐标的石子个数bi:第i个石子坐标动规a0=0;对 n=lan=minan+an-s,an+an-s-l, .,an+an-t)对 s=ntan=max an+an-s,an+an-s-1 ,.,an+a0但由于n较大直接动规会超时。所以要将n压缩查看坐标,可以发现,如果显然对于bil+tvnvbi, an总是等于中的数,因此可对其进行压缩。注意,在计算过程中,由于其中有些坐标是永远走不到的,因此需要用个布尔型的数组cn进行判断。方法是,对于 cn,如果 0ns,c(n-t,cn-t+l cn-s都为 false,则 c叶也为 falseo第三题篝火晚会fire问题评估此题或许大多数人会
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 解题 报告