NOIP普及组历届试题分析
- 格式:ppt
- 大小:328.00 KB
- 文档页数:105
八 1/ | (初中部分)1排序:(有些排序因涉及贪心,所以我放在贪心那一节里了)历届试题:NOIP分数线划定奖学金明明的随机数排序法使用:选择排序。
快速排序。
桶排序。
分析:1.分数线划定:ci)这是一道具有代表性的排序题,可使用选择或快排,使用选择排序整体难度较小,但因此题数据量较大,选择排序不可过全部数据。
(2)使用快速排序是解决本题的最好方法,但不可直接套用,因为有儿个排序条件,排序内最好添加几个辅助变量。
2.奖学金:(1)这道题和上题大体相同,但其测试数据较小,可使用选择排序得全分。
3.明明的随机数:(1)本题可用选择或快排,但代码设计较难,使用桶排序解绝此题是较为理想的选择。
2模拟:分为三类:〈1〉普通模拟(完全模拟的较少,大多为结合贪心。
排序的,贪心。
排序的不单独讨论)历届试题:NOIP多项式输出数列1. NOIP多项式输出.:(1)多项式输出:这道题想要拿分很容易,但要注意一下模拟过程,此题实际上需有4个判段过程,其中有一个是极易遗漏的。
(2)数列:这道题竟是第4题,很简单的模拟题,还可用转成2进制的方式直接算.〈2〉罕符模拟历届试题:NOIP ISBN号码Jam记数法立体图(1)ISBN号码:总体难度不大,这道题如果是使用C语言的话,可以用每个字符都减去字符0的方式,直接把它们从字符转为数字,再进行处理。
(2)Jam记数法:很绝对的模拟,一开始我还认为是数学知识模拟题,就是从后往前推.(3)立体图:很难的很考细心的一道模拟题,没说的,就是上机不断的调程序.〈3〉数学知识模拟历届试题:NOIP细胞分裂(1)初中组目前唯一一道数学知识模拟题,掌握了相关的知识就应该不难,这道题要满分还是比较难的,需要高精度运算(用LONG LONG型不知道可不可以),还有一定要注意时间问题,这道题极易超时.3贪心:历届试题:NOIP排座椅纪念品分组守望者的逃离.注意:任何贪心之前都必需排序。
(1)排座椅:这道题初看不像一道贪心,但实际上只要细细的看,就可以发现了,跟实际生活联系很紧密的一道题。
完善程序题总结归纳By:七(6) yx一、【题目】(哥德巴赫猜想)哥德巴赫猜想是指,任一大于2的偶数都可写成两个质数之和。
迄今为止,这仍然是一个著名的世界难题,被誉为数学王冠上的明珠。
试编写程序,验证任一大于2且不超过n的偶数都能写成两个质数之和。
#include<iostream>using namespace std;int main(){const int SIZE=1000;int n,r,p[SIZE],i,j,k,ans;bool tmp;cin>>n;r=1;p[1]=2;for(i=3;i<=n;i++){① ;for(j=1;j<=r;j++)if(i% ② ==0){tmp=false;break;}if(tmp){r++;③ ;}}ans=0;for(i=2;i<=n/2;i++){tmp=false;for(j=1;j<=r;j++)for(k=j;k<=r;k++)if(i+i== ④ ){tmp=true;break;}if(tmp)ans++;}cout<<ans<<endl;return 0;}若输入n为2010,则输出⑤时表示验证成功,即大于2且不超过2010的偶数都满足哥德巴赫猜想。
【算法】先for一遍,找出质数,然后对每一个偶数进行一一匹配(2除外),效率O(n^3)【代码】1、tmp=1;2、p[j];3、p[r]=j;4、p[j]+p[k]5、1004【年份】2010年二、【题目】(过河问题) 在一个月黑风高的夜晚,有一群人在河的右岸,想通过唯一的一根独木桥走到河的左岸.在伸手不见五指的黑夜里,过桥时必须借照灯光来照明,不幸的是,他们只有一盏灯.另外,独木桥上最多能承受两个人同时经过,否则将会坍塌.每个人单独过独木桥都需要一定的时间,不同的人要的时间可能不同.两个人一起过独木桥时,由于只有一盏灯,所以需要的时间是较慢的那个人单独过桥所花费的时间.现在输入N(2<=N<1000)和这N个人单独过桥需要的时间,请计算总共最少需要多少时间,他们才能全部到达河左岸.例如,有3个人甲、乙、丙,他们单独过桥的时间分别为1、2、4,则总共最少需要的时间为7.具体方法是:甲、乙一起过桥到河的左岸,甲单独回到河的右岸将灯带回,然后甲、丙在一起过桥到河的左岸,总时间为2+1+4=7.#include<iostream>#include<cstring>using namespace std;const int size=100;const int infinity = 10000;const bool left=1;const bool right =0;const bool left_to_right=1;const bool right_to_left=0;int n,hour[size];bool pos[size];int max(int a,int b){return a>b?a:b;}int go(bool stage){int i,j,num,tmp,ans;if(stage==right_to_left){num=0;ans=0;for(i=1;i<=n;i++)if(pos[i]==right){num++;if( hour[i]>ans)ans=hour[i];}if( ① )return ans;ans=infinity;for(i=1;i<=n-1;i++)if(pos[i]==right)for(j=i+1;j<=n;j++)if(pos[j]==right){pos[i]=left;pos[j]=left;tmp=max(hour[i],hour[j])+ ②; if(tmp<ans)ans=tmp;pos[i]=right;pos[j]=right;}return ans;}if(stage==left_to_right){ans=infinity;for(i=1;i<=n;i++)if( ③ ){pos[i]=right;tmp= ④ ;if(tmp<ans)ans=tmp;⑤;}return ans;}return 0;}int main(){int i;cin>>n;for(i=1;i<=n;i++){cin>>hour[i];pos[i]=right;}cout<<go[right_to_left)<<endl;return 0;}【算法】利用深搜,左右交替寻找最优解(maybe是动态规划)【代码】1、num<=2;2、go[1];3、pos[j]==1;4、hour[i]+go[0];5、pos[i]=1;【年份】2010年三、【题目】(子矩阵)给输入一个n1*m1的矩阵a,和n2*m2的矩阵b,问a中是否存在子矩阵和b相等。
历年NOIP(普及组)难度分析 by Climber.pINOIP提高组复赛考察点详细分析动态规划:12 模拟:10数学:5 图论:4搜索:4 构造:3贪心:2【动态规划】平均难度系数:0.55此项为历届NOIP考察次数最多的知识点。
主要有 1.区间模型 2.子序列模型 3.资源分配模型以及一些简单的多维状态设计技巧。
动态规划可以与图,树,高精度等知识点配合出题。
【模拟】平均难度系数:0.76平均每届NOIP都会出现1个模拟题。
这种题一般算法很简单,需要选手细心理解题目意思,注意细节。
考察选手的代码实现能力。
【数学】平均难度系数:0.46需要掌握质数及其性质,基础的实属操作,加法原理和乘法原理。
此类题需要选手对数学规律的灵感。
【图论】平均难度系数:0.50历届考察点基本上都是 1.最短路问题和 2.特殊图的性质。
特殊图包括树,拓扑图,二分图等。
历届NOIP在图论上的考察并不是很多。
【搜索】平均难度系数:0.38历届搜索题一般都比较难,搜索算法本身简单,于是题目会提高选手对其他方面的要求。
主要有搜索优化和模拟。
写搜索题时应该以尽量多得分为目标。
【构造】平均难度系数:0.27构造类题目一般没有明确的算法,需要选手仔细分析题目的实质,并得出解法。
这个解法通常不是唯一的。
有时一个好的贪心可以得相当多的分。
有时搜索剪枝可以很大的提高效率。
同样以多得分为目标。
【【贪心】平均难度系数:0.75此类题需要选手对算法的直觉,贪心正确性一旦被证明,通常题目就简单了。