NOIP注意事项
- 格式:ppt
- 大小:590.50 KB
- 文档页数:11
信息学竞赛NOIP考试10大建议——编程竞赛考试经验对参加NOIP全国青少年信息学奥赛的考生,我们整理和收集了10个建议给家长和学生参考。
目录:1先思考→2考虑全面→3要灵活→4认真读题→5特殊数据→6思路清晰→7勿着急→8查错误→9要骗分→10成败观→灵感补充一、先思考一定要想好了算法,思路清晰了再编。
分析问题时遇到一些即兴问起的情况,马上要深入下去,看已有的算法思路是否有问题。
经验证明,这种即兴提起的问题往往是决定算法正误的关键问题。
这是一种本能的质疑,本能的差错,一定不要想:我一会再来看这个问题。
一定要立即想清楚,看算法怎么样处理才能解决这样一个问题。
确认算法没有什么错误了再编。
如果思路没清晰,算法不对,编到一半时才发现错了,这种情况没有考虑到,浪费了很多时间,或者编完了都还不知道算法是错的,最后由于样例特殊,过了样例,以为对了,但实际上只得10分,或者根本不得分。
二、考虑全面对于简单的题,一定要考虑全面,不是编好了程序再来考虑全面,而是想算法的时候就要考虑全面。
不要知道个大概就开始写,后来发现一些特殊数据要作特殊处理,又把程序改过去改过来,改得面目全非,最后老是改不对,不但影响心情,而且还是错的。
三、要灵活看题要灵活,不要绊死在一道题,不要怕。
NOIP的题不想就做出来,怎么可能,肯定是需要想的。
但是最好先写好写的题,不一定是前两道题。
其实很多时候你是有能力做起的,只是你一看就怕了,也没有去认真想,随便敷衍想了一点特殊情况的算法,认为可以骗到分。
但经验证明最后基本是没有分,即使有,最多不过10。
时间是3个小时,要积极一点,经验证明,很多题想到一定时候便想出来了,并且很简单。
四、认真读题一定要认真读题,读的时候积极思考,看看这某句话到底是个什么意思,要会转换。
特别是对于有时间的问题,到底把时间看成一个点,还是一个区间,具体题目具体分析,一定要符合题意。
题没读懂就开始做,100%是错的。
题错,思路也就错,时间浪费了,数据还是1个都不过。
noip不会做咋办,快用骗分导论,高效得分【1】遇到难题时心态要稳定,先搞定简单的题目,最后思考难题。
心态是第一位。
【2】如果难题实在不能解决也不能放弃,虽然写不出完美的算法,但可以用象贪心,搜索之类的算法,虽然不能AC 但一般能过几个,有分总比没分好。
举个例子例如下图中,存在3 个磁场,白点表示机器人的位置,黑点表示矿石的穿越磁场(cross)探险机器人在Samuel 星球上寻找一块奇特的矿石,然而此时它陷入了一片神秘的磁场区域,动弹不得。
探险空间站立刻扫描了这片区域,绘制出该区域的磁场分布平面图。
这片区域中分布了N 个磁场,每个磁场呈正方形,且边与坐标轴平行。
位置:科学家们分析平面图,进一步发现:这些磁场为大小不一的正方形,可能相交,甚至覆盖,但是它们的边缘不会重合,顶点也不会重合。
例如下面的两种情形是不会出现的:科学家们给探险机器人启动了磁力罩,这样它就可以在磁场中自由穿越了。
初始时,探险机器人和所有矿石都不在任何磁场的边缘。
由于技术限制,XYO3在穿越过程中机器人只能够水平或垂直移动,且不能够沿着磁场的边缘行动。
由于磁力罩的能量有限,科学家们希望探险机器人穿越尽量少的磁场边缘采集到这块矿石。
例如上图中,探险机器人最少需要穿越两次磁场边缘。
现在小联请你编写程序,帮助科学家们设计探险机器人的路线,统计探险机器人最少需要穿越多少次磁场边缘。
输入(CROSS.IN):第一行有一个整数N,表示有N 个磁场(1 < N < 100)。
随后有N 行,每行有三个整数X、Y、C(0 < X ,Y ,C < 10000),表示一个磁场左下角坐标为(X,Y),边长为C。
接下来有一行,共有四个整数SX, SY, TX,TY,表示机器人初始坐标为(SX, SY),矿石坐标为(TX,TY)(其中,0 < S X,SY, TX, TY < 10000)。
输出(CROSS.OUT):单行输出一个整数,表示机器人最少需要穿越多少次磁场边缘。
信息学奥赛(NOIP)常见问题汇总
这里大家汇总了信息学奥赛(NOIP)常见问题,欢迎大家点击查看!
1、普及组的题目难度分配是怎样的?
第一题是相对简单的题,但是一般会有操作起来较麻烦,考虑情况很多,数据类型很大这样的特点来考你。
第二题是模拟,需要你抽象化问题,把问题的人工解决方法模拟出来,建立一个合适的数学模型,再用代码动手实验它。
模拟的题一般比较麻烦,出错多很正常,甚至3个小时你不一定能解决一道模拟。
第三题是一个跳板,一般是考不难的DP、图论、搜索,需要有足够的算法知识和做题经验。
第四题相对比较难吧,会考一些像“单源最短路”、“SPFA”这样的比较“高级”的算法,所用到的数据结构也会比较“高级”,对于技巧、经验和心理都是一个考验。
(对于各位新生来说,如果有难度,时间紧张,不妨放弃3、4两道题,第一题和第二题AC了也能有200分。
)
2、拿到试卷后该做些什么?
不要着急下手做题,先浏览一下试题,对题目的难易有个把握,哪些题目自己能做出来心里要有数。
先做相对简单的题,做题之前先在纸上写写画画,优化可不可行什么的都要试一下。
然后,看看哪些题目可以简单的骗分(比如没有答案就输出-1这样的),先把骗分程序写一个拷贝到对应文件夹下,等到考试最后你忙着做题就没时间写骗分程序了。
再有,有时候你看到一个题后脑子里蹦出另外一个相似的题。
这个时候切记生拉硬套把那道题的算法搬过来。
因为那样的话会把你引导入一个误区,很多人进入误区就出不来了,最后导致写出的代码总是WA,那时候再改就来不及了。
NOIP考前知识大总结第一篇:NOIP考前知识大总结数据类型TypeByteShortintSmallintWordIntegerCardinalLongintLongwordInt64QWordRealSingleDoubleCompExtended算法思想:1.搜索2.归纳3.分治4.贪心实现技巧: NOIP考前知识大总结作者:于俊超ID:MiniDragonXG2006年11月RangeSize in bytes0..2551-128..1271-32768..3276720..655352either smallint, longint or int64size 2,4 or 8either word, longword or qwordsize 2,4 or 8-2147483648..2***..42949672954-***5808..***580780..***70955161582.9E-39..1.7E3861.5E-45..3.4E3845.0E-324..1.7E3088-9.2E18..9.2E1883.4E-4932..1.1E493210(Search)枚举(穷举)/ 遍历 / 剪枝 / 产生式系统(估价函数)查找(字典):折半查找(二分法)/ 树形查找(二叉排序树)/ Hash(To 数学方法)>递推式> DP(ex: 4 Hanoi Tower Problem)(Divided and Conquer)(Greedy)5.模拟循环递推(顺推/倒推)> 博弈 / 动态规划递归(栈/DFS)滚动数组幂:x ^ y = exp(y*ln(x))x ^(1/n)= exp(1/n*ln(x))math单元里的Power数学方法:1.数论:质数 / 因数 / 约数个数(种数)/ 最大公约数 / 最小公倍数/ 回文数....2.进制转换注意负进制3.高精度运算(int64...)4.排列组合: 全排列5.经典递推关系:Fibonacci:fib(n)=fib(n-1)+fib(n-2)fib(1)=1fib(2)=1通项:设g5=sqrt(5)则fib(n)=(1/g5)*(((1+g5)/2)^n-((1-g5)/2)^n)f(n)=a1*f(n-1)+a2*f(n-2)+....+ak*f(n-k)(ai<>0 & n>k)叫k阶常系数线性齐次递推关系可以利用矩阵性质和快速幂在O(logn)内求解错位排列:F(1)=0F(2)=1Fn=(x-1)*(Fn-1 +Fn-2)Catalan数:Catalan(n)=C(n,2*n)/(n+1)第二类Stirling数 s(n,k)= { s(n-1,k-1)+k*s(n-1,k)}(n>k>=1)6.高斯消元数据结构(Data Structure):1.物理结构:I: 数组>二维平面/字符串(Ansistring)及其操作II: 指针>链表(单链表 / 双向链表 / 环状链表)抽象数据类型(Abstract Data Type)2.初级ADT:I: 集合II: 线性结构A: 栈(stack)(LIFO)operation: push/popa: 后缀表达式b: 进出站序列问题(Catalan 枚举 > 归纳)c: 栈优化最长不下降(上升)序列B: 队列(queue)>循环队列(FIFO)operation: push/popa: 广度优先搜索b: 求和广义线性表C: 字典 DictionaryIII: 非线性结构A: 树Tree(二叉树Binary Tree)树的遍历:前序/中序/后序(递归)最优二叉树(哈夫曼树Huffman tree)(贪心)树形DPB: 图Grapha: 图的遍历:Depth first Search(DFS / 回溯 / 递归)Breadth first Search(BFS / 队列 / FloodFill 种子染色法) b: 最小生成树:(贪心)Prim: 边集密Kruskal: 边集疏(排序 + 并查集)c: 最短路径Dijkstra(单源 O(n^2)BFS)Floyed(所有点间 O(n^3))Bellman-Ford(负权环)d: 拓扑序列e: 关键路径(AOV网)f: 无向图传递闭包有向图强连通分量SCC(Strong Connected Component)g: 路与回路欧拉路(Euler Route)所有边哈密尔顿路(Hamilton Route)所有点h: 割顶和桥去除之后图变得不连通的顶点和边3.高级ADT:I: 集合型A: 并查集(disjoint-set)operation: Find/Union/InsertII: 字典型哈希表(Hash)哈希函数opertaion: Find/InsertIII: 树型A: 二叉堆(Heap)>Treapoperation: Insert/Delete(Pop)/GetMax/GetMinB: Binary Search Tree(BST)C:平衡二叉树......排序算法:复杂度思路 InsertChooseExchange O(n^2)直接插入排序直接选择排序冒泡排序(Inserting Sort)(Choosing Sort)(Bubble Sort)O(nlogn)希尔排序堆排序快速排序(Shell Sort)(Heap Sort)(Quick Sort)O(n)计数排序桶排序基数排序(Counting Sort)(Bucket Sort)(Radix Sort)归并(Merge Sort)Quick Sort: 分治Merge Sort: 分治Bucket Sort: 哈希表Heap Sort: 堆还有二叉排序树..........动态规划(Dynamic programming)=记忆化搜索+用Table记录免去重复计算(解决满足具有最优子结构且无后效性)1.状态转移方程+边界条件2.合适的实现方法(To 实现技巧)3.要掌握最经典的动规题目a: 最长不下降(上升)序列b: 最大子段和&最大M子段和c: 最长公共子序列(LCS)d: 石子合并(链,环)e: 背包问题01背包-可重复(DP)01背包-不可重复(DP)部分背包(贪心)博弈问题:1.关键字:必胜态 / 必败态2.递推找规律3.归纳计算几何三角形面积s=|x1y2+x2y3+x3y1-x3y2-x2y1-x1y3|二维仿射变换反射 / 镜像 / 旋转计算二维凸包……这东西我直接听不懂……网络流 & 匹配(二分图)& 线段树 & 树状数组 & NP完全……∵九成不考∴略……Copyright ©2006 By MiniDragonXG.All rights reserved.第二篇:教师职业道德考前知识总结教师职业道德考前知识总结教师职业道德——教师在从事教育工作时所应该遵循的行为规范和必备品德的总和,是调节教师和他人、和社会关系时必须遵守的基本道德规范和行为准则,以及在此基础上所表现出来的道德观念、道德品质、道德情操。
noip信息学奥赛规则及要求嗨,朋友们!今天咱们来聊聊NOIP(全国信息学奥林匹克竞赛)的规则和要求,想必这对那些对编程感兴趣的小伙伴们来说,绝对是个重头戏。
别担心,我会尽量把这些枯燥的规则变得生动有趣,让大家更容易理解。
准备好了吗?那咱们就开始吧!1. NOIP竞赛简介1.1 竞赛概况NOIP,全名叫“全国信息学奥林匹克竞赛”,是一个面向中学生的编程比赛。
它的目的是通过这个比赛来发现和培养信息学方面的优秀人才。
如果你对计算机编程充满热情,NOIP就是你展示才华的绝佳平台!1.2 竞赛分级NOIP比赛分为两个级别:初赛和决赛。
初赛一般是在各地的赛区进行,决赛则是全国范围的总决赛。
通过初赛的同学,可以晋级到决赛,争夺更高的荣誉。
2. 竞赛规则2.1 竞赛时间比赛时间通常为一天,上午和下午各有一个环节。
上午的环节主要是理论考试,主要考察大家对算法和数据结构的理解;下午则是编程实践,测试大家的编程能力。
比赛时间安排紧凑,所以大家一定要合理安排时间,不要慌张。
2.2 题目类型NOIP的题目分为两种:算法题和编程题。
算法题主要考察你对各种算法的掌握程度,比如排序、查找等;编程题则是让你在给定的时间内,解决一些实际编程问题。
两者相辅相成,一定要全面准备,才能在比赛中取得好成绩。
3. 参赛要求3.1 参赛资格NOIP的参赛者一般是中学生,具体的年级要求可能会根据年份有所不同。
不过,通常来说,初中和高中生都是可以参赛的。
参赛之前,建议大家先了解一下自己的赛区的具体规定。
3.2 准备工作为了能在NOIP中表现出色,平时的准备可是少不了的。
大家可以通过做往年真题、参加编程培训班等方式来提升自己的能力。
此外,平时也要多动脑筋,学会将理论知识运用到实际编程中。
4. 评判标准4.1 分数计算NOIP的评分方式主要是根据你解决问题的正确性和效率来评分的。
解决一个问题的分数不仅取决于你提交的答案是否正确,还会考虑到你算法的效率,比如时间复杂度和空间复杂度。
NOIP2013复赛考生须知一、比赛不提供纸质试题,只提供电子版试题文件。
该文件压缩包保存在计算机桌面上。
监考人公布密码后,选手自行解密试题。
二、今年我省复赛选手上机可选择使用使用windows或linux操作系统。
中国计算机学会将使用NOI linux下的Arbiter评测系统进行评测。
三、比赛时选手注意事项:1、除经允许的、必须的竞赛用品外,选手不得将书包、手机、U盘、图书等带入考场,一经发现,取消本次竞赛资格或竞赛成绩为零分。
2、选手须将身份证和准考证正面向外放在考桌上参赛标签旁。
选手应仔细核对考桌上参赛标签信息是否正确,如有错误须立刻上报监考人员,否则视为默认同意,赛后不得更改。
如选手和准考证上标明的选手不一致,视为替考,替考者和被替考者竞赛成绩均为零分,并受三年之内不得参赛处罚。
3、开始15分钟后不得进人考场,以旷考处理;竞赛结束30分钟前,选手不得退出考场(上厕所除外)。
4、竞赛期间利用各种方式向其他选手传递信息等违规行为,该选手将被立刻取消参赛资格,并从次年算起被禁赛3年。
5、选手听到监考人员竞赛结束的指令后,须停止答卷,待监考人员检查无误后离开考场。
如竞赛结束的指令下达后继续答题,该选手成绩以零分记。
6、选手如发现监考人员及相关人员在竞赛过程中有违纪行为或有影响公平竞赛的行为,可向CCF署名投诉。
7、监考人公布密码后,选手自行解密试题,并在已有的目录下(已由竞赛组织方事先建立,目录名为选手的参赛编号),由选手为每道试题再单独建立一个子目录。
四、目录结构、文件名规则比赛开始前,选手应仔细核对考桌上参赛标签信息是否正确。
竞赛组织方事先已在E盘根目录下(E:\)建立以选手参赛编号命名的文件夹,选手应检查该文件夹名称是否正确(包括编号及大小写字母),如有错误须立即上报监考人员,由监考人员进行更改。
确认无误后,选手须为每道试题再单独建立一个子文件夹,子文件夹名与对应的试题英文名相同(参见试题封面页)。
主要内容▪NOIP复评及常见问题▪NOI评测系统标准插件说明▪标准评测系统(Arbiter)概述▪Arbiter的使用方法▪Arbiter的常识问答NOIP复评及常见问题▪平台差异问题▪文件名大小写问题▪输出格式问题▪超时问题▪内存超限问题▪整型变量类型问题▪数学库问题▪STL问题▪上报成绩平台差异问题▪操作系统差异-大小写问题Linux大小写敏感,Windows大小不敏感▪编译器差异-不同编译器的行为不一致(变量初始化,数组下表越界) -不同版本编译器的行为不一致(gcc, fpc)-每年竞赛开始前3-5个月NOI网站上公布具体版本▪评测系统差异-超时检查的差异-内存限制检查的差异平台差异问题▪Windows平台只是为了各省方便开展活动,但不作为评测和申诉的依据▪评测结果只以NOILinux下Arbiter评测结果为准文件名大小写问题▪答案文件名需要全部小写▪输入文件名需要小写,并且不能拼写错误▪输出文件名不能拼写错误输出格式问题每行结束后应有换行符-文件结束应有换行符超时问题▪时间限制是在《竞赛规则》中规定配置的机器上测试得出▪规定时限远超过正确程序运行时间的2-5倍▪评测机性能一般情况下优于竞赛用机内存限制问题▪选手程序占用内存上限,以MB为单位(虚拟内存)▪静态申请内存空间和动态申请内存空间整型变量类型问题以往评测中不允许使用64位整型-64位整型在编译器中声明存在差异-Windows下一般为int64,而在Linux下一般为long long数学库问题▪缺省支持libc和libm中的常用函数-strlen,strcpy,strcmp,memcpy,strchr等-sqrt,sin,cos等▪对于其他库的支持以竞赛题面要求为准STL问题以往评测中不支持STL-STL中包含有复杂数据结构-Pascal中不存在类似STL的库-竞赛使用语言的公平性上报成绩▪选手名单,包含选手编号和姓名,csv格式▪成绩单,包含各题目分数和总分数,csv格式▪选手目录,players/目录下的所有内容▪选手评测结果目录,result/目录下的所有内容NOI评测系统标准插件说明▪字符串比较插件▪整数比较插件▪浮点数比较插件字符串比较标准插件将答案内容按文本格式读入进行比较▪单行比较-过滤空格-不过滤空格▪多行比较-过滤空格-不过滤空格▪全文比较单行字符串比较—不过滤空格考生答案文件(1)This is a test.\n This is a test.标准答案文件▪除第一行外其他内容被忽略▪行内空格不被忽略▪行尾换行符被忽略考生答案文件(2)This is a test.The second line.单行字符串比较—过滤空格Thisisatest.考生答案文件(3)This is a test.标准答案文件▪除第一行外其他内容被忽略▪行尾换行符被忽略▪行内和行尾空格被忽略This is a test .考生答案文件(4)多行字符串比较This is a test.Second line.标准答案文件▪以标准答案的行数为准进行比较▪超过标准答案行数的内容被忽略▪忽略空格情况与单行字符串比较相同考生答案文件(5)This is a test.Second line.Third line.全文比较▪逐字节比较标准答案和考生答案▪最严格▪考生答案的多余数据不被忽略▪行末换行符不忽略整数比较标准插件将答案内容按整数格式读入进行比较根据答案行数和每行整数个数:▪单行单整数▪单行多整数▪多行单整数▪多行多整数单行单整数比较插件只比较第一行的第一个数字其他内容被忽略1024标准答案文件1024Second line.1024 2048考生答案文件(2)2048 1024考生答案文件(3)单行多整数比较插件▪比较第一行多个整数▪整数个数以标准答案为准▪其他内容被忽略1024 2048标准答案文件1024 2048 4096考生答案文件(4)多行单整数比较插件▪以标准答案的行数为准,每行只比较一个数字▪其他内容被忽略10242048标准答案文件1024 123420484096考生答案文件(5)多行多整数比较插件▪比较的行数和每行整数个数以标准答案为准▪其他内容被忽略1024 2048 3072 4096标准答案文件1024 2048 1234 3072 4096 4321 2345考生答案文件(6)浮点比较插件将答案内容按浮点数格式读入进行比较比较方式:▪单行单数▪单行多数▪多行单数▪多行多数浮点比较插件精确位数-精确到小数点后几位(1-5)-例如精确到小数点后3位,则只比较到小数点后3位3.1415标准答案文件3.1414考生答案文件(1)3.141考生答案文件(2)NOIP标准评测系统(Arbiter)概述▪Arbiter的历史▪Arbiter的使用情况▪Arbiter的系统特征Arbiter的历史▪NOIP标准评测系统(Arbiter)是NOIP信息学联赛指定的唯一标准评测工具▪Arbiter目前的版本是1.02,具备良好的可靠性和稳定性Arbiter的使用情况▪在NOIP2006和NOIP2007中部分省份评测和全国复评中使用,验证了正确性和效率等关键性能▪NOIP2006中有7个省试用,NOIP2007中有20个省试用,NOIP2008中有23个省试用评测结果与全国复评结果几乎没有差异,而使用非标准评测系统的省份成绩存在明显差异的选手数量较多Arbiter的系统特征▪支持当前主流的Linux 发行版本-RedHat,Fedora Core,Ubuntu…-推荐使用NOILinux 1.0.2▪支持多种语言(C/C++/Pascal)▪配置灵活,功能多样化▪时间控制的精确性(误差不大于5ms)▪有效的内存使用限制Arbiter的使用方法▪基本安装和运行▪工作原理▪竞赛配置▪考试评测▪成绩统计▪评测插件编写基本安装和运行▪从下载最新的评测系统安装文件,保存至当前用户home文件夹,并双击打开▪安装完成后,会在桌面上创建一个快捷方式,双击即可启动评测系统▪可打开附带的示例考试(example)测试系统是否工作正常工作原理标准输入数据problem.in 标准答案文件problem.ans 选手程序problem 选手答案文件problem.out评测插件problem_e选手成绩选手源程序problem.c/.cpp/.pas竞赛配置▪一次比赛可以配置多场考试▪一场考试可以配置多道试题▪每道试题都提供了多个配置点,为比赛的组织提供了很大的灵活性竞赛配置▪试题配置▪选手名单▪评测数据▪选手文件▪注意事项试题配置(1)▪试题名称-题目及相关数据的唯一命名-决定了选手程序、评测数据的命名规则-使用英文,4-10个字符▪提交方式-源代码-答案文件试题配置(2)▪测试点数目/分值-测试点数目,及每个测试点的权值,总权值可以设置▪数据输入方式-文件输入(建议使用)-标准输入试题配置(3)▪时间限制-选手程序运行时间上限,以秒为单位-为了防止在时限上出现的临界行为,给予选手1.5倍运行时间限制,超时将被强行终止。
NOIP复赛注意事项1、做好准备。
核对座位、机号等,阅读决赛须知或竞赛说明,按要求建好目录(文件夹)。
试用Pascal系统是否能正常使用(包括TP或BP和FP)。
听清监考老师的说明或讲解、要求等。
2、读懂题目。
拿到试题,不要急于上机编程,先彻底看明白题目的意思,已知什么条件,要求什么结果,必须很清楚,然后在草稿纸上设计一下方法或算法,再上机编程,效果就会很好,效率就会很高。
3、注意文件名。
包括保存文件名,输入、输出数据文件名、扩展名等要与要求完全一致。
4、注意使用文件结束函数eof(data);data为数据文件名。
5、注意数据类型。
数据范围即变量类型的设计,要对变量可能的值进行估算,确定哪些用整形(integer)、长整形(Longint)、实型(real)、扩展型(extended)等,在free Pascal中还可以用加长整形(int64)。
6、注意语句配对。
注意Begin与End的配对使用,还有If- then- else等,for do等。
7、注意测试数据。
(1)分段测试,(2)测试样例,(3)测试特例 (4)测试输入/输出文件 (5)自己设计几个数据试试,(6)注意边界及特殊的数据(条件)试试。
特别要注意输入/输出文件名(包括扩展名)要与题目要求完全一致。
8、及时保存文件,注意设定当前路径,注意文件名,盘符及路径名。
9、注意输入/输出格式与题目要求一致,输出文件中不能有多余的空行,等,也不能有等待命令readln等,以及多余的输出到屏幕的。
10、充分利用电脑中的“计算器”进行验算结果(例如数值转换、阶乘、乘方、高精度运算等)。
11、学会使用“帮助”查看命令、函数及其中的样例。
12、学会“投机得分”对难题,若不会做,又有时间,不妨针对样例和一些特例测试数据得分。
13、注意局部变量和全局变量,在子程序中慎用全局变量(除非必须)。
14、合理分配时间,按照先易后难的原则做题。
15、用有把握的方法。
一、(搜索)双向广度搜索广度搜索虽然可以得到最优解,但是其空间消耗增长太快。
但如果从正反两个方向进行广度搜索,理想情况下可以减少二分之一的搜索量,从而提高搜索速度。
范例:有N个黑白棋子排成一派,中间任意两个位置有两个连续的空格。
每次空格可以与序列中的某两个棋子交换位置,且两子的次序不变。
要求出入长度为length的一个初始状态和一个目标状态,求出最少的转化步数。
问题分析:该题要求求出最少的转化步数,但如果直接使用广度搜索,很容易产生数据溢出。
但如果从初始状态和目标状态两个方向同时进行扩展,如果两棵解答树在某个节点第一次发生重合,则该节点所连接的两条路径所拼成的路径就是最优解。
对广度搜索算法的改进:1。
添加一张节点表,作为反向扩展表。
2。
在while循环体中在正向扩展代码后加入反向扩展代码,其扩展过程不能与正向过程共享一个for循环。
3。
在正向扩展出一个节点后,需在反向表中查找是否有重合节点。
反向扩展时与之相同。
对双向广度搜索算法的改进:略微修改一下控制结构,每次while循环时只扩展正反两个方向中节点数目较少的一个,可以使两边的发展速度保持一定的平衡,从而减少总扩展节点的个数,加快搜索速度。
二、(搜索)分支定界分支定界实际上是A*算法的一种雏形,其对于每个扩展出来的节点给出一个预期值,如果这个预期值不如当前已经搜索出来的结果好的话,则将这个节点(包括其子节点)从解答树中删去,从而达到加快搜索速度的目的。
范例:在一个商店中购物,设第I种商品的价格为Ci。
但商店提供一种折扣,即给出一组商品的组合,如果一次性购买了这一组商品,则可以享受较优惠的价格。
现在给出一张购买清单和商店所提供的折扣清单,要求利用这些折扣,使所付款最少。
问题分析:显然,折扣使用的顺序与最终结果无关,所以可以先将所有的折扣按折扣率从大到小排序,然后采用回溯法的控制结构,对每个折扣从其最大可能使用次数向零递减搜索,设A为以打完折扣后优惠的价格,C为当前未打折扣的商品零售价之和,则其预期值为A+a*C,其中a为下一个折扣的折扣率。
noip阅读程序技巧NOIP(全国青少年信息学奥林匹克竞赛)是中国青少年信息学领域的重要竞赛之一,对于参赛选手来说,阅读程序是解题的关键技巧之一。
本文将为大家介绍几种提高阅读程序的技巧。
一、审题仔细阅读程序前,首先要仔细审题,弄清题目的要求和限制条件。
阅读程序时,要特别注意题目中的关键词和需要解决的问题,以便在阅读程序时能够有针对性地寻找关键信息。
二、了解程序结构阅读程序时,要先了解程序的结构和主要功能。
可以从程序的注释、变量名和函数名入手,通过阅读代码的结构和关键函数的实现,分析程序的逻辑和运行过程。
这样有助于理解程序的整体思路和解题思路。
三、注重细节阅读程序时,要注意细节。
程序中的每一行代码都有其作用和意义,不能忽略任何一行代码。
要详细阅读每一行代码的含义和功能,并理解其在整个程序中的作用。
特别要注意程序中的循环和条件语句的判断条件,以及变量的赋值和使用过程。
四、调试程序阅读程序时,可以通过调试程序来加深理解。
可以在程序中插入输出语句,观察程序的执行过程和结果,以此来验证自己对程序的理解是否正确。
通过调试程序,可以更深入地了解程序的运行机制和细节。
五、查阅资料阅读程序时,有时会遇到一些不熟悉的函数或语法,此时可以查阅相关资料来了解其具体用法和功能。
可以查阅语言的官方文档、教材、参考书籍等,以便更好地理解和掌握程序。
六、多练习阅读程序是一种技巧,需要不断的练习和积累。
可以多阅读一些程序,尝试理解并分析其中的逻辑和实现方式。
通过不断的练习,可以逐渐提高自己的阅读程序的能力。
七、与他人交流阅读程序时,可以与他人交流讨论,分享彼此的理解和思考。
可以参加编程社区或论坛,与其他程序员交流经验和技巧。
通过与他人的讨论,可以获得不同的思路和观点,有助于拓宽自己的思维方式和解题思路。
总结起来,NOIP阅读程序的技巧包括审题仔细、了解程序结构、注重细节、调试程序、查阅资料、多练习和与他人交流。
通过掌握这些技巧,可以提高自己的阅读程序的能力,更好地解决问题和完成竞赛任务。