NOIP模拟赛分析
noip模拟总结
小试牛刀
• 学校里有一个水房,水房里一共装有m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等, 均为1。 现在有n 名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从1到n 编号,i 号同学的接水量为wi。接水开始时,1 到m 号同学各占一个水龙头,并同时打开水龙头接水。当其 中某名同学j 完成其接水量要求wj 后,下一名排队等候接水的同学k马上接替j 同学的位置开始接水。 这个换人的过程是瞬间完成的,且没有任何水的浪费。即j 同学第x 秒结束时完成接水,则k 同学第 x+1 秒立刻开始接水。若当前接水人数n‘不足m,则只有n’个龙头供水,其它m−;;n‘个龙头关闭。 现在给出n 名同学的接水量,按照上述接水规则,问所有同学都接完水需要多少秒。
Noip中的模拟
• 前几年的NOIP复赛第一题基本上都可以通 过模拟或者再结合其它的一些基本算法就 可以完成。如NOIP2010第一道题. • 某道题如果你不能确定套用什么典型算法 来实现,那么你就模拟吧!
模拟分类
模拟: • 分为三类: • 普通模拟(完全模拟的较少,大多为结合贪心 。排序的,贪心 。 排序的不 单独讨论) 历届试题:NOIP多项式输出数列 NOIP 多项式输出.:
此题巨水无比 把所有人 按顺序塞入当前时间最短的那个水龙头 最后找时间最长的水龙头就行了 优化 前M个人直接塞入M个水龙头中 预计得分 AC 实际得分 AC 程序复杂度 0 程序长度 低 另: 此题不是贪心,切忌贪心
普通模拟
• 一元 n 次多项式可用如下的表达式表示: 其中,a_i· x^i 称为i次项,a_i称为i 次项的系数。给出一个一元多项式各项的次数和系 数,请按照如下规定的格式要求输出该多项式: 1. 多项式中自变量为x,从左到右按照次数递减顺序给出多项式。 2. 多项式中只包含系数不为0 的项。 3. 如果多项式n 次项系数为正,则多项式开头不出现“+”号,如果多项式n 次项系 数为负,则多项式以“-”号开头。 4. 对于不是最高次的项,以“+”号或者“-”号连接此项与前一项,分别表示此项 系数为正或者系数为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于0 次的项, 其系数的绝对值为1,则无需输出1)。如果x 的指数大于1,则接下来紧跟的指数部分的形 式为“x^b”,其中b 为x 的指数;如果x 的指数为1,则接下来紧跟的指数部分形式为“x”; 如果x 的指数为0,则仅需输出系数即可。 5. 多项式中,多项式的开头、结尾不含多余的空格。 【数据范围】 1 ≤ n ≤ 100,多项式各次项系数的绝对值均不超过100。 输入格式 共有2 行。 第一行 1 个整数,n,表示一元多项式的次数。 第二行有 n+1 个整数,其中第i 个整数表示第n-i+1 次项的系数,每两个整数之间用空 输出格式 共1 行,按题目所述格式输出多项式。 输入格式 共有2 行。 第一行 1 个整数,n,表示一元多项式的次数。 第二行有 n+1 个整数,其中第i 个整数表示第n-i+1 次项的系数,每两个整数之间用空 输出格式 共1 行,按题目所述格式输出多项式。 【输入样例1】 5 100 -1 1 -3 0 10 【输出样例1】 100x^5-x^4+x^3-3x^2+10
信息学奥赛20023noip解析
信息学奥赛20023noip解析一、赛制概述1.1赛事简介信息学奥林匹克竞赛(I nf or ma ti on Ol ym p ia d,IO I)是一项面向全球中学生的计算机科学竞赛。
每年一次的国际信息学奥林匹克竞赛(I nt er na ti on al Ol y mp ia di nI nf or mat i cs,I OI)聚集了来自世界各地的顶尖信息学竞技者,他们通过在计算机科学领域的算法和问题解决能力的较量,展现自己的才华。
1.2N O I P竞赛简介N O IP(N at io na lO ly m pi ad in In fo rm ati c si nP ro vi nc es)是中国面向高中生的信息学奥林匹克竞赛。
每年,全国各省级赛事会选拔出优秀选手前往全国总决赛,争夺代表中国参加IO I的资格。
二、20023N O I P题目解析2.1题目一题目名称:矩阵转置题目描述:给定一个N×M的矩阵A,请你将其转置,即行变为列,列变为行。
输入格式:输入的第一行包含两个整数N和M,表示矩阵的行数和列数。
接下来N行,每行包含M个整数,表示矩阵A。
输出格式:输出M行,每行N个整数,表示矩阵A的转置结果。
样例输入:32123456样例输出:135246样例解释:将输入的矩阵逐行转置,得到输出矩阵。
2.2题目二题目名称:字符串匹配题目描述:给定一个文本字符串T和一个模式字符串P,请判断文本字符串T中是否存在与模式字符串P完全匹配的子串。
输入格式:输入的第一行是文本字符串T,由大小写字母和空格组成,长度不超过10000。
输入的第二行是模式字符串P,由大小写字母组成,长度不超过100。
输出格式:如果存在匹配的子串,则输出"Y es",否则输出"No"。
样例输入:H e ll oW or ld!l o样例输出:Y e s样例解释:文本字符串T中存在和模式字符串P完全匹配的子串"lo"。
信息学奥赛(NOIP)常见问题汇总
信息学奥赛(NOIP)常见问题汇总
这里大家汇总了信息学奥赛(NOIP)常见问题,欢迎大家点击查看!
1、普及组的题目难度分配是怎样的?
第一题是相对简单的题,但是一般会有操作起来较麻烦,考虑情况很多,数据类型很大这样的特点来考你。
第二题是模拟,需要你抽象化问题,把问题的人工解决方法模拟出来,建立一个合适的数学模型,再用代码动手实验它。
模拟的题一般比较麻烦,出错多很正常,甚至3个小时你不一定能解决一道模拟。
第三题是一个跳板,一般是考不难的DP、图论、搜索,需要有足够的算法知识和做题经验。
第四题相对比较难吧,会考一些像“单源最短路”、“SPFA”这样的比较“高级”的算法,所用到的数据结构也会比较“高级”,对于技巧、经验和心理都是一个考验。
(对于各位新生来说,如果有难度,时间紧张,不妨放弃3、4两道题,第一题和第二题AC了也能有200分。
)
2、拿到试卷后该做些什么?
不要着急下手做题,先浏览一下试题,对题目的难易有个把握,哪些题目自己能做出来心里要有数。
先做相对简单的题,做题之前先在纸上写写画画,优化可不可行什么的都要试一下。
然后,看看哪些题目可以简单的骗分(比如没有答案就输出-1这样的),先把骗分程序写一个拷贝到对应文件夹下,等到考试最后你忙着做题就没时间写骗分程序了。
再有,有时候你看到一个题后脑子里蹦出另外一个相似的题。
这个时候切记生拉硬套把那道题的算法搬过来。
因为那样的话会把你引导入一个误区,很多人进入误区就出不来了,最后导致写出的代码总是WA,那时候再改就来不及了。
11月7日NOIP赛前模拟一(解题分析)
2010年NOIP模拟试题(一)解题分析1、开灯(light.pas/c/cpp; 时限:1s; 64MB)【问题描述】在一条无限长的路上,有一排无限长的路灯,编号为1,2,3,4,…每一盏灯只有两种可能的状态,开或者关。
如果按一下某一盏灯的开关,那么这盏灯的状态将发生改变。
如果原来是开,将变成关。
如果原来是关,将变成开。
在刚开始的时候,所有的灯都是关的。
胖胖每次可以进行如下的操作:指定两个数a,t(a为实数,t为正整数)。
将编号为[a],[a*2],[a*3],…,[a*t]的灯的开关各按一次。
其中[k]表示实数k的整数部分。
在胖胖进行了n次操作后,胖胖突然发现,这个时候只有一盏灯是开的,胖胖很想知道这盏灯的编号,可是这盏灯离胖胖太远了,胖胖看不清编号是多少。
幸好,胖胖还记得之前的n次操作。
于是胖胖找到了你,你能帮他计算出这盏开着的灯的编号吗?【输入格式】第一行一个正整数n,表示n次操作。
接下来有n行,每行两个数a i,t i。
其中a i是实数,小数点后一定有6位,t i是正整数。
【输出格式】仅一个正整数,那盏开着的灯的编号。
【输入样例】31.618034 132.618034 71.0000000 21【输出样例】20【数据规模】- 1 -记T=t1+t2+t3+…+tn对于30%的数据,满足T≤1000对于80%的数据,满足T≤200000对于100%的数据,满足T≤2000000对于100%的数据,满足n≤5000,1≤ai≤1000,1≤ti≤T数据保证,在经过n次操作后,有且只有一盏灯是开的,不必判错。
【解题分析】题目大意:给定T个数,如果将这T个数两两配对,最后恰好剩下一个数(数据保证只有一盏灯是开的),这个数就是本题的答案。
解法一:容易想到,先将这些数进行排序,然后从小到大进行配对,当发现有一个数无法配对的时候,这个数就是答案。
使用快速排序,时间复杂度为O(nlogn)。
解法二:这个解法不容易想到,使用异或操作。
NOIP初赛整理分析报告
通过分析06年到17年的考卷具体的知识点,这里我们把考点分为以下几大类:二进制、计算机基础、网络基础、编程基础、算法、数据结构、数学、数据库、NOI相关。
二进制在二进制中考察的知识点分为:整数和实型数二进制,十进制,八进制,十六进制之间的相互转换;补码;二进制编码;Byte ,KB,MB,GB,TB其中在试卷中出现次数最多的是整数和实型数二进制之间的相互转换,每年的试卷都会出现,并占据2~3道选择题。
其次是Byte ,KB,MB,GB,TB,正在刷题的同学,你们有没有遇到呢?计算机基础计算机基础分类中考察到的知识点分为:计算机基本常识常用软件(Adobe Acrobat Reader,microsoft软件,Photoshop等)计算机硬件操作系统Windows Linux Solaris 及OS基本概念32bit 和64 bit机器:寻址空间不同和计算机相关的奖是:图灵奖计算机病毒汇编语言视频/图像文件格式:AVI RMVB MOV MPG4 JPEG GIF PNG摩尔定律:18个月翻一番计算机体系结构:冯诺依曼像计算机基本常识和常用软件这方面就看同学们的熟悉程度啦,相信同学们都不在话下。
需要多注意的是计算机硬件与操作系统的部分,选择题可以考察的点有很多,出现的次数也很多!网络基础网络基础考察知识点分为:协议(POP3,SMTP,IMAP),地址格式无线通信技术:wifi,蓝牙,GPRS等传输协议:SSH,FTP,SFTP,SSL,Telnet等即时通信:QQ,MSN,微信等IP 地址 IPV4 IPV6HTML语句,网页搜索LAN,WLAN,域名防火墙:防止网络攻击网络基础每年大概会有1~2道选择题,以上考点在06-17年的试卷中都有出现过,概率比较大的是LAN,WLAN,域名,HTML语句和网页搜索。
编程基础考点分为:数据类型,分支结构,循环结构,数组,函数等,尤其以循环和数组为重点。
其中C++编程基础,是考试试题中第三大题和第四大题的重点考察对象!和算法结合共占试卷50%以上的分值。
第一次NOIP模拟考试题解
分析第一题:校门外的树解答:对M 个区间排序,对整个区间从头到尾稍描一遍即可。
也可以不排序,记录对区间的左端点记录它的右端点即可。
第二题:工具箱:解答:显然,并不是把两个矩形的边长简单比一下大小就可以了事的,有些情况是需要旋转矩形才能做到的。
如上图:矩形ABCD 嵌在了矩形A ’B ’C ’D ’中,但把他们平着放是不能达到目的的。
关键是解决这种情况。
我们不妨设那个大的矩形的边总是平行于坐标轴的,小的矩形和水平方向成θ角,且θ∈[0,π/2],并且是以C 点为转轴。
若初始时θ=0,则A 为(x,y),B ’C ’长度为xcos θ+ysin θ,A ’D ’长度为xsin θ+ycos θ。
故有: xsin θ+ycos θ<a ① 或 xsin θ+ycos θ<bxcos θ+ysin θ<b ② xcos θ+ysin θ<a我们考虑第一种情况,其他类似。
由①得:sin(θ+arctan(y/x))<a/sqrt(x*x+y*y);故有:θ∈[0,π/2] (a/sqrt(x*x+y*y)>1)θ∈(-arctan(y/x),arcsin(a/sqrt(x*x+y*y))-arctan(y/x))∪(π-arcsin(a/sqrt(x*x+y*y)-arctan(y/x),π-arcsin(a/sqrt(x*x+y*y))) (a/sqrt(x*x+y*y)<=1) A C ’ B ’ A ’ C θ D B D ’ x由②得:sin(θ+arctan(x/y))<b/sqrt(x*x+y*y);故有:θ∈[0,π/2] (b/sqrt(x*x+y*y)>1)θ∈(-arctan(x/y),arcsin(b/sqrt(x*x+y*y))-arctan(x/y))∪(π-arcsin(b/sqrt(x*x+y*y)-arctan(x/y),π-arcsin(b/sqrt(x*x+y*y))) (b/sqrt(x*x+y*y)<=1) 把以上两个解集先与[0,π/2]求交,再互相求交,若得出的解集不为空,则有解,否则无解,注意精度误差。
陈颖老师NOIP模拟赛分析(三)
分析
Problem #1: 12345(five) ( ) 题意简述: 题意简述: 在1到5这五个数字中任取n个时能组 成多少个数I,满足I mod 3=1。输出个数 mod 100007。
分析: 分析: 1. 由于不存在0,所以构成数的时候不需要特别考 虑首位; 2. 数学知识:一个整数除以3的余数有三种情况, 为0、1、2; 3.对于任取n个数组成整数I mod 3=1时,可有以下 三种情况: (1) 前n-1位数 mod 3余2+被3除余2的数字(即2, 5); (2)前n-1位数 mod 3余1+被3整除的数字(即3); (3)前 n-1位被 mod 3余0+被3除余1的数字(即1, 4)。
Problem #4: 图论(change) 题意简述 给出一个有重边无自环的图,要求去掉尽量 少的边,使得最后的图中不存在奇数条边的环。
分析: 首先需要分析的是这个目标图具有什么性质 呢? 实际上,这类不存在奇数边环的图,可以看 做一个叫做二分图的特殊图。 什么叫做二分图呢? 设G=(V,E)是一个无向图,如果顶 点V可分割为两个互不相交的子集(A,B), 并且图中的每条边(i,j)所关联的两 个顶点i和j分别属于这两个不同的顶点 集(i in A,j in B),则称图G为一个二分图。 如右图就是一个二分图。
2、分析搜索顺序,从贪心角度小物品应优先考 虑,将物品的质量从小到大排序后。 搜索方式:对于一个K值,按从质量大至小的 顺序(思考从小至大顺序一样吗?)搜索满足质量 满足质量 小等于第K个的物品是否能放入 个的物品是否能放入。 小等于第 个的物品是否能放入。 如何选择K? 如何选择 ? 1)枚举K值 (1)枚举K值。 (2)由于物品的质量有序,使用二分的来枚举 )由于物品的质量有序, K值,对于当前 值,可行继续二分找大的 值,不 值 对于当前K值 可行继续二分找大的K值 可行二分找小的K值 找到一个可行的最大K值为止 值为止。 可行二分找小的 值,找到一个可行的最大 值为止。
noip模拟赛棒球题解
noip模拟赛棒球题解
本模拟赛的棒球题目涉及到模拟、字符串处理和数据结构等知识点,下面是相关参考内容:
模拟
模拟是本题的主要解题思路之一,需要模拟棒球比赛的场景和操作。
可以设置一个变量记录当前的得分和击球手的位置,根据击球手的击球动作和得分情况进行处理,并更新记录变量的值。
需要注意的是,本题存在一些特殊的得分规则,如本垒打、三振出局等,需要特殊判断。
字符串处理
本题涉及到的比赛数据都是字符串格式的,需要进行一些字符串的处理。
可以使用字符串分割函数将每个比赛数据分割成击球手和击球动作两个部分,然后根据击球动作进行相应的操作,如移动击球手的位置、记录得分等等。
数据结构
本题涉及到的得分情况需要进行统计,并且需要支持快速查询最近一次得分的位置。
一个比较好的解决方案是使用链表进行存储,每个节点存储一个得分,并记录该得分的位置。
根据链表的结构可以快速查询最近一次得分的位置,并且还能进行前后移动、删除等操作。
同时,在记录得分情况时需要考虑到比
赛过程中可能会发生一些特殊情况,如队伍之间的换垒、双打等,需要特殊处理。
NOIP复赛辅导-模拟法
[探索] 请依据下面给出的条件写出随机数生成的式子。
(1) 产生100至999的随机整数r _____________________________
(2) 产生10以内的随机奇数r _____________________________
(3) 产生100以内被5整除的随机整数r
NOIP复赛辅导-模拟法
2012-09
模拟法 有些问题难以找到公式与规律来解决,只能依旧问题 的叙述一步一步不停地做下去,才能最终得到结果。这样 的问题用计算机来模拟解决是最有效的。
所以计算机模拟算法,即使程序完整的按题目所叙述 的方式运行,最终得出答案。
其实,模拟算法也就是将整个过程完完整整的走一遍。 题目怎么叙述的,程序就怎么运行。
在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义 上的随机数,是一个伪随机数,是根据一个数,我们称它为种子为基准 以某个递推公式推算出来的一系数。
(1) C语言的伪随机数函数 rand(x);
rand()产生一个从0到32767之间的伪随机数。使用本函数应使用 #include <stdlib.h>。我们常常用(rand( )%N)这样的一个表达式来产 生一个从0~N-1之间的整数。(曾经说过%是求余运算符)
写随机数生成的式子:
x = rand()%(B-A+1)+A;
x = rand()% B+1
产生的随机数x是在0到B之间的整数;
x = rand()%(B-A+1)+A 产生的随机数x是在A到B之间的整数。
随机数生成举例:
(1) 产生1至6的随机整数r r = rand() % 6 + 1;
NOIP普及组历届试题分析
NOIP普及组历届试题分析简介全国青少年信息学奥林匹克竞赛(National Olympiad in Informatics in Provinces,简称NOIP)是由教育部主管的我国重要的计算机竞赛之一,也是继数学、物理、化学等奥赛之后的第五个奥赛竞赛科目。
NOIP的目的是为了提高初、高中学生计算机编程能力,培养计算机及其应用等方面人才,推动计算机教学与应用的发展。
NOIP由普及组和提高组组成,普及组适合初学者,困难系数逐年递增,试题越来越难。
本文将以普及组历届试题为主,对试题进行分析,帮助初学者更好地掌握NOIP的难点和解题方法。
历届试题分析2021年2021年普及组共3道试题,分别为:•普及组-1:数论题目,给定两个数n和m,求出从1到n中可以被m整除的数的个数。
•普及组-2:暴力枚举题目,给定一个长度为n的整型数组a,请计算其中有多少个子序列满足其中的元素逆序对数量恰好等于k序列中逆序对数量的个数。
•普及组-3:贪心算法题目,有n个维度相同的矩形,每个矩形的左上和右下两个点坐标都已知,请问从这些矩形中能够组成的最大矩形的面积是多少。
,2021年的普及组试题难度适中,各个题目的知识点都不难掌握,但需要提高思维能力和编程能力。
2020年2020年普及组共3道试题,分别为:•普及组-1:模拟题目,给定一些操作,包括插入、删除、查询等操作,让我们实现对一个序列的操作。
•普及组-2:搜索算法题目,有n个物品和一个容量为v的背包,每个物品有重量w和价值c两个属性,要求将物品装入背包中,使得背包中物品的总价值最大,输出最大价值。
•普及组-3:排序算法题目,给定n个三元组(a,b,w),要求将三元组按照a从小到大、b从小到大排序,如果a和b相等,则按照w从小到大排序。
,2020年的普及组试题相对较简单,难度偏低,但需要细致的思考和编程能力。
2019年2019年普及组共3道试题,分别为:•普及组-1:分支结构和循环结构的题目,输入一个字符串,输出字符串中包含的大写字母、小写字母、数字和空格的个数。
NOIP模拟试题2解题报告
绵阳中学光棍节模拟赛解题报告(081111)地震了此题鲜明的的状态表示让人很容易想到DP。
以第I层速度为J作为状态,易得这样的方程:F[I,J]:=MAX(F[I+1,J-1]+,F[I+1,J],F[I+1,J+1])+J;其中I代表楼层,J代表当前速度,F的值是当前的速度之和。
最后找出在第二层的最大值除以(N-1)即得答案。
爱与希望这是一道组合数学题目;题目基本思想:档板思想首先满足每个需要安慰的人的需要,再将剩余的同学以不同的数量组合形式分给各个需要安慰的人;这时就等效成了经典的档板问题:即在M-2N个球间插N-1个档板,允许档板与档板相邻。
方法总数=C(M-N-1)(N-1)程序特别简单,熟悉一下高精度。
Orz细菌这道题其实就是石子合并的加强版。
最主要的问题是在放回细菌后维护细菌大小的有序性。
比较好的方法是用二叉堆来实现,这样每次取出、放回细菌的时间都是logn的,总时间复杂度为O(k(m3+mlogn))。
这道题并不是很难,只要熟悉基础的DP和基础的数据结构,做出来还是比较容易的。
扫雷一开始题目难度较高(班帅智商还没有降低),后来考虑到大家情绪,将题目难度降低,让班帅智力退化,变成一道赤裸裸的模拟了。
对于给定点,直接采取扫描全图,然后扩张,看最终是否能够确定出所有雷。
实现上大家可以发挥自己的想象力,深搜广搜枚举均可。
因为我们水平有限,而一些题目是原创的,所以也许“标程”并不是最优的算法,也许你的方法还会更简单一些。
谢谢大家参加我们的模拟赛!希望你能有所收获!也预祝大家在四天后的NOIP2008中RP++,多多一等!。
信友队 2023noip模拟 题解
【主题】信友队 2023noip模拟题解【内容】一、开篇近年来,信息学竞赛在我国逐渐兴起,成为学生展示自己编程能力和解题能力的舞台。
NOIP(全国青少年信息学奥林匹克联赛)作为我国信息学竞赛中的重要赛事之一,备受青少年程序员的关注和参与。
在备战NOIP的过程中,模拟赛成为一种重要的练习方式。
本文将围绕信友队 2023noip模拟的题目进行详细解析,帮助读者更好地理解这些题目的解法。
二、题目一1. 题目描述题目一要求找出一个长度为n的01串中,有多少个子串的异或和是偶数。
其中,n的范围是1 ≤ n ≤ 10^5。
2. 解题思路考虑动态规划的思想,假设f[i]表示以第i位结尾的子串的异或和的奇偶性,则f[i]的值由f[i-1]的值和当前位的值决定。
具体而言,如果f[i-1]是偶数,则以第i位结尾的子串的异或和是奇数;如果f[i-1]是奇数,则以第i位结尾的子串的异或和是偶数。
可以通过遍历整个01串,根据f[i-1]的奇偶性判断以第i位结尾的子串的异或和的奇偶性,并统计出最后的结果。
3. 代码实现```pythondef solve(s):n = len(s)t = 0even, odd = 0, 0for i in range(n):if int(s[i]) == 0:even += 1else:odd += 1if (even % 2 == 0) or (odd % 2 == 0):t += 1returnt```4. 结果分析通过以上代码实现的函数solve,可以很快得出题目所要求的结果。
该方法的时间复杂度为O(n),效率较高,能够满足题目给定的数据规模范围。
三、题目二1. 题目描述题目二给出一个n*m的矩阵,矩阵中的元素为非负整数。
求出从左上角到右下角的路径中,路径上的所有元素之和的最大值。
其中,n和m的范围分别为1 ≤ n, m ≤ 100。
2. 解题思路这是一个典型的动态规划问题。
考虑定义一个二维数组dp,其中dp[i][j]表示从起点到矩阵中第i行第j列元素的路径的最大和。
NOIP部份试题分析和解答.doc
NOIP部份试题分析和解答南宁三中孙国强QQ: 393936008竞赛试题名称算法N01P2004津津的储蓄计划模拟合并果子排序+二分杏找合唱队形动态规划虫食算搜索N01P2005谁拿了最多奖学金模拟过河数学或动态规划篝火晚会图论或数学等价表达式分治NOIP2006能量项链动态规划金明的预算方案动态规划作业调度方案模拟2”k进制数数学+高精N01P2007统计数字排序字符串的展开模拟知阵取数游戏动态规划+高精树网的核图论N01P2008笨小猴模拟火柴棒等式搜索或数学传纸条动态规划双栈排序图论一、枚举:I 1 1 e ! 11 It I H It 1 LJ n. -i "i JIJ iri j注意:1.加号与等号各自需要两根火柴棍2.如果A,B,则A+B=C与B+A=C视为不同的等式(A、B、0=0)3.n根火柴棍必须全部用上【输入】输入文件matches.in共一行,乂一个整数n (nv=24)。
【输出】输出文件matches.out共一行,表示能拼成的不同等式的数目。
【输入输出样例1 ]matches, in matches, out142【输入输出样例1解释】2个等式为0+1=1和1+0=1 □【输入输出样例2】matches, in matches, out189【输入输出样例2解释】9个等式为: 0+4=4 0+11=11 1+10=112+2=42+7=94+0=47+2=9 10+1=11 11+0=11既然我们用枚举的方法,就要确定枚举什么?枚举的数量(范)有多少,估算时间和空间复杂度。
2.举例:一-年一度的高一YL杯超级篮球赛开赛了。
当然,所谓超级,意思是参赛人数可能多余5人。
小三对这项篮球非常感兴趣,所以一场都没有落下。
每个中午都准时守侯在篮球场看比赛。
经过一个星期的研究,小三终于对篮球的技战术找到了一丝丝感觉了。
他发现打YL 杯的每个班都有一奁相似的进攻战术:1:控球后卫带球到前场,找到一个最佳攻击点(x,y)2:所有除控卫以外的队员都从各自的当前位置迅速向(x,y)移动3:控球后卫根据场上情况组织进攻这个战术对于一般情况是非常奏效的,但是每个队员毕竞不像小三一样每天精力过剩, 每个队员都有一个疲劳指数W,显然对于每个队员的移动需要消耗一些能量。
历年NOIP考题分析
两个主要方面
• 竞赛中我们的目的就是得分。在比赛中,将自己能力范围内的分全部抓住, 不丢掉不该丢的分,就是最好的得分方式。
• 减少非受迫性失误:会做的都做对 • 在减少失误的前提下增加得分:不会做的都蒙对
减少非受迫性失误:
• 理解题目有误 • 思路想法错误 • 时间分配不合理 • 调试失误 • 心态失衡 • 低级失误
年份 2017 2016 2015 2014 2013 2012 2011
T1
T2
T3
T4
T5
打表+ 扩欧 模拟
模拟
模拟
快速 幂 模拟
模拟
模拟
LCA+树上 差分 tarjan+拓 扑 图遍历+二 次展开式 逆序对
高精度+贪 心 贪心
tarj;剪枝+ 状压 背包DP
• B 三思而后行: • 在草稿纸上,而非大脑干想,推算自己的思路 • 有了思路后验算样例 • 遇到熟悉的题目要十分警惕,先要在草稿纸上演算计算步骤,并测试其正确性 • 写下代码前要有充足的思考时间,最好举例子通过草稿验证 • 不要写从未接触过/极其不熟练的算法,即使之前听说过
时间分配不合理:
• 有的同学可能一上来就和一道难题较上劲了,(主观认为这道题目十分简单大家都会做,我做不出来就落后了 / 我做过类似的题目,别人没有做过, 我做了就能拉分了),在编程、调试等环节花了大量时间,导致其他的题目得分不理想。
全国信息学奥林匹克联赛(NOIP2010)复赛模拟赛六重点
全国信息学奥林匹克联赛(NOIP2010)复赛模拟赛六提升组(请选手务必认真阅读本页内容)一.题目概略二.运转内存限制三.注意事项1、文件名(程序名和输入输出文件名)一定使用小写。
2、 C/C++中函数 main(的返回值种类一定是 int ,程序正常结束时的返回值一定是 0。
3、 symbol 评测时采纳的机器配置为:,内存 2G ,上述时限以此配置为准。
【问题描绘】f(n =f(n-1 +f(n-2 *n≥ 3, f(1 =1, f(2,=1+这就是有名的Fibonacci sequence。
现在给你两个数 x, y, 此中 x ≤y, y≤231。
-1( 你的任务就是求出∑y即Fibonacci数列第x~y项的和除以10000i=xfi mod 10000。
的余数。
【输入】第一行是一个整数T(T≤1000 ,表示有多少组数据。
接下来T行,每行两个整数 x ,y ,意义如上述。
【输出】( 输出 T 行,关于每组数据,输出∑ yi=xfi mod 10000。
【输入输出样例】【数据商定】关于 80%的数据, T=1,且 y ≤106关于 100%的数据, T≤1000,且 y ≤231-12. N umber【问题描绘】有 N(2≤N ≤15个数 a1,a2,, an-1, an,假如在这 N 个数中,有且仅有一个数能整除 m ,那么整数 m 就是一个好运数,你的任务就是在给定 a1,a2, , an-1, an 的状况下,求出第 K 小的好运数。
【输入】第一行为一整数数N ,K(2≤N ≤15, 1≤K ≤231- ,意义如上述。
接下来一行有 N 个整数, a1,a2,, an-1, an,这 N 个整数均不超出231-1 。
【输出】输出一行,仅包括一个整数ans ,表示第 K 小的好运数。
答案保证不超出1015。
【输出输出样例】【数据商定】关于 50%的数据, N ≤5,ans ≤100000关于 80%的数据, N ≤10, ans≤1015关于 100%的数据, N ≤15,ans ≤10153. P ermRLE【问题描绘】文本压缩的算法有好多种,这里给出一种叫做PermRLE 的压缩算法。
NOIP初赛模拟考试题及答案解析
信息学奥林匹克联赛初赛模拟试题(普及组 C 语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一.选择一个正确答案代码(A/B/C/D/E),填入每题的括号内 (每题1.5分, 共30分)1.被誉为“人工智能之父”的是()。
A.冯·诺依曼。
B.巴贝奇。
C.文顿·瑟夫和卡恩。
D.阿兰·图灵。
E.弗雷德里克·特曼。
2.下列哪个不是CPU(中央处理单元)()。
A. Intel ItaniumB. DDR SDRAMC. AMD Athlon64D. AMD OpteronE. IBM Power 53.常见的邮件传输服务器使用()协议发送邮件。
A. HTTPB. SMTPC. TCPD. FTPE. POP34.下列无符号数中,最小的数是()。
A.(11011001)2B.(75)10C.(37)8D.(2A)165.下列哪个软件属于操作系统软件()。
A. Microsoft WordB. PhotoshopC. FoxmailD. WinRARE. Red Hat Linux6.下列哪个不是计算机的存储设备()。
A. 文件管理器B. 内存C. 高速缓存D. 硬盘E. U盘7.组成’教授’(jiao shou )’副教授’(fu jiao shou )与’讲师’( jiang shi)这三个词的汉字,在GB2312-80字符集中都是一级汉字.对这三个词排序的结果是()。
A教授,副教授,讲师 B.副教授,教授,讲师C讲师,副教授,教授 D.副教授,讲师,教授8.彩色显示器所显示的五彩斑斓的色彩,是由红色、蓝色和()色混合而成的。
A. 紫B. 白C. 黑D. 绿E. 橙9.以下哪个软件不是即时通信软件()。
A. 网易泡泡B. MSN MessengerC. Google TalkD. 3DS MaxE. QQ10.一台计算机如果要利用电话线上网,就必须配置能够对数字信号和模拟信号进行相互转换的设备,这种设备是()。
10.7模拟赛 题目 分析(二试)NEW
信息学奥林匹克联赛(NOIP2011)八校联军复赛模拟二提高组第二试2011年10月7日8:30-11:30(请选手务必仔细阅读本页内容)一、题目概况中文题目名称文件列表编译优化收费站英文题目名称file compile cost可执行文件名file compile cost输入文件名file.in compile.in cost.in输出文件名file.out compile.out cost.out每个测试点时限1秒1秒1秒测试点数目10 20 10每个测试点分值10 5 10附加样例文件有有有结果比较方式全文比较过滤行末空格及文末回车全文比较过滤行末空格及文末回车全文比较过滤行末空格及文末回车题目类型传统传统传统二、提交源程序文件名对于pascal语言file.pas compile.pas cost.pas 对于C语言file.c compile.c cost.c对于C++语言file.cpp compile.cpp cost.cpp三、编译命令(不包含任何优化开关)对于pascal语言fpc file.pas fpc compile.pas fpc cost.pas对于C语言gcc –o filefile.c -lmgcc –o compilecompile.c -lmgcc –o costcost.c -lm对于C++语言g++ -o filefile.cpp -lmg++ -o compilecompile.cpp -lmg++ -o costcost.cpp -lm四、运行内存限制内存上限256M 256M 256M五、注意事项1、文件名(程序名和输入输出文件名)必须使用小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统一评测时采用的机器配置为:CPU 1.9GHz,内存1G,上述时限以此配置为准。
各省在自测时可根据具体配置调整时限。
信息学奥赛NOIP普和组历届试题分析报告PPT35页
26、机遇对于有准备的头脑有特别的 亲和力 。 27、自信是人格的核心。
28、目标的坚定是性格中最必要的力 量泉源 之一, 也是成 功的利 器之一 。没有 它,天 才也会 在矛盾 无定的 迷径中 ,徒劳 无功。-。 30、我奋斗,所以我快乐。--格林斯 潘。
16、业余生活要有意义,不要越轨。——华盛顿 17、一个人即使已登上顶峰,也仍要自强不息。——罗素·贝克 18、最大的挑战和突破在于用人,而用人最大的突破在于信任人。——马云 19、自己活着,就是为了使别人过得更美好。——雷锋 20、要掌握书,莫被书掌握;要为生而读,莫为读而生。——布尔沃
END
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2007年NOIP模拟赛金陵中学河西分校王孝东说明:每题均有10个测试点,每个测试点时限为1秒。
1、吉祥数(ghillie.pas/c/cpp)[问题描述]为了迎接圣诞,信息学兴趣小组的同学在辅导老师的带领下,举办了一个盛大的晚会,晚会的第一项内容是做游戏:猜数。
老师给每位同学发一张卡片,每张卡片上都有一个编号(此编号为非负数,且小于255),每个编号互不相同。
老师制定了以下的游戏规则:第一轮,每位同学将自己卡片上编号的各位数字进行平方后再相加得到一组新数,编号在这组新数中出现的同学淘汰出局,第二轮,余下的同学再将编号的各位数字进行立方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,第三轮,余下的同学再将编号的各位数字进行4次方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,……,以此类推,经过n轮后,仍留下来的同学,将获得圣诞特别礼物,卡片上的数即为2007年吉祥数。
(假定班级人数不超过200人)[输入文件]输入文件ghillie .in有两行,第1行为1个正整数n(n<8),表示有n轮游戏,第二行是卡片上互不相同的编号。
输出:剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。
[输出文件]输出文件ghillie .out是1行,为剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。
[输入样例]124 123 2 12 20 14 4 6 36 72[输出样例]2 6 12 24 72 123思路分析这是一道基础题,数据量不大,采用模拟法,将每一轮初始的编号数存在数组A中,这个数组中所有数的值在一轮中不能更改,这组数产生的新数用B数组来存放,然后将B数组与A数组进行比较,将A数组中没有的B数组中的数存入C数组,下一轮开始时,先初始化A数组,这时A数组就取C数组,程序中最好能自定义一个函数fj(n,k:integer),作用是将编号数n进行分解后,再将数字k次方,最后求和,函数值取这个和。
另外输入数据时,由于第二行不知数据的个数,因此要用函数eoln来控制。
参考程序如下:var a,b,c:array[1..200] of longint;i,j,k,n,i1,i2,i3,t:integer; p:boolean; tem,s:longint;function fj(n,k:integer):longint;var x:array[1..20] of integer;i,j,m:integer;s,s1,s2:longint;begin i:=0; fillchar(x,sizeof(x),0);s:=0;while n<>0 dobegin i:=i+1;x[i]:=n mod 10;n:=n div 10end;for j:=1 to i dobegin s1:=1;for m:=1 to k dos1:=s1*x[j];s:=s+s1;end;fj:=send;beginassign(input,'ghillie.in');reset(input);assign(output,'ghillie.out');rewrite(output);readln(n);j:=0;while not eof dobegin j:=j+1;read(a[j]);end;for i:=2 to n+1 dobegin i2:=0;i3:=0;fillchar(b,sizeof(b),0);fillchar(c,sizeof(c),0);for k:=1 to j dobegin s:=fj(a[k],i);i2:=i2+1;b[i2]:=s;end;for k:=1 to j dobeginp:=true;for t:=1 to j doif a[k]=b[t] then p:=false;if p then begin i3:=i3+1;c[i3]:=a[k];end;end;j:=i3;a:=c;end;for i:=1 to j-1 dofor k:=i+1 to j doif a[i]>a[k] then begintem:=a[i];a[i]:=a[k];a[k]:=temend;for i:=1 to j-1 dowrite(a[i],' ');write(a[j]);close(input);close(output);end.2、最优分解方案(best.pas/c/cpp)[问题描述]经过第一轮的游戏,不少同学将会获得圣诞特别礼物,但这时细心的数学课代表发现了一个问题:留下来的人太多而使礼物数量可能不够,为此,加试了一道数学题:将一个正整数n分解成若干个互不相等的正整数的和,使得这些数的乘积最大,当主持人报出一个n 后,请你立即将这个最大值报出来,现请你帮你的好友编一个程序来解决这个问题。
[输入文件]输入文件best.in中只有1个数n(其中1<=n<=1000)。
[输出文件]输出文件best.out中也是一个数,是乘积的最大值。
[输入样例]7[输出样例]12思路分析初看此题,最容易想到的算法是搜索,但此题的n最大可以达到1000,搜索肯定会超时,这种情况下要另求它法,我们从最简单的例子中着手,往往能找出它的规律。
规律是:要想使乘积最大,应尽量使分得的个数多,另外当相同个数的正数的和相同时,数的差越小,数的积也就越大,因此将数从最小的数从2开始分解,下面每次取加1的数,直到不够取停止,这时再将余下的零头从最后的一个数开始,每个数加1,直至将零头处理完。
如n=8时,分解的数为2,3,零头为3,将3加到3、2之上,变成3、4,还余1,就再加到4上,变成3、5。
将数相乘时还要采用高精度乘法。
参考程序如下:var i,j,k,n,m,s:integer;num:array[1..200] of integer;ans:array[1..1000] of integer;procedure work;var i,j,s,g:integer;begin ans[1000]:=1;for j:=1 to m do beging:=0;for i:=1000 downto 1 dobegins:=ans[i]*num[j]+g;ans[i]:=s mod 10;g:=s div 10end; end;end;procedure out;var i,j:integer;begin i:=1;while ans[i]=0 do inc(i);for j:=i to 1000 do write(ans[j]);close(input);close(output);end;beginassign(input,'best.in');reset(input);assign(output,'best.out');rewrite(output);readln(n);num[1]:=2; m:=1;s:=2;while s+num[m]+1<=n dobegin s:=s+num[m]+1;inc(m);num[m]:=num[m-1]+1;end;k:=m;while s<n dobegin inc(s);inc(num[k]);dec(k);if k=0 then k:=mend;work;out;end.3、传话(message.pas/c/cpp)[问题描述]兴趣小组的同学来自各个学校,为了增加友谊,晚会上又进行了一个传话游戏,如果a 认识b,那么a收到某个消息,就会把这个消息传给b,以及所有a认识的人。
如果a认识b,b不一定认识a。
所有人从1到n编号,给出所有“认识”关系,问如果i发布一条新消息,那么会不会经过若干次传话后,这个消息传回给了i,1<=i<=n。
[输入文件]输入文件message.in中的第一行是两个数n(n<1000)和m(m<10000),两数之间有一个空格,表示人数和认识关系数。
接下来的m行,每行两个数a和b,表示a认识b。
1<=a, b<=n。
认识关系可能会重复给出,但一行的两个数不会相同。
[输出文件]输出文件message.out中一共有n行,每行一个字符T或F。
第i行如果是T,表示i发出一条新消息会传回给i;如果是F,表示i发出一条新消息不会传回给i。
[输入样例]4 61 22 34 13 11 32 3[输出样例]TTTF思路分析先把有向图建立起来:a[i,j]=1表示i能到j, 然后利用递归进行宽搜,搜索时注意从一点到另一点搜过一次就不能再搜,以免引起死循环。
在搜索的过程中注意剪枝,否则有的点会超时。
参考程序如下:constmaxn=1000;varn,m,i,j,x,y:longint;a:array[1..maxn,1..maxn] of boolean;v:array[1..maxn] of boolean;function dfs(x,root:longint):boolean;varj:longint;f:boolean;beginv[x]:=true; f:=false;for j:=1 to n do beginif a[x,j] and not v[j] then beginf:=f or dfs(j,root);if f then begin dfs:=true; exit; end;endelse if (j=root) and (a[x,j]) then begindfs:=true; exit; end;end;dfs:=f;end;beginassign(input,'message.in'); reset(input);assign(output,'message.out'); rewrite(output);readln(n,m);fillchar(a,sizeof(a),false);for i:=1 to m do beginreadln(x,y);a[x,y]:=true;end;for i:=1 to n do beginfillchar(v,sizeof(v),false);if dfs(i,i) then writeln('T')else writeln('F');end;close(input); close(output);end.4、圣诞树(tree.pas/c/cpp)[问题描述]圣诞特别礼物挂在一棵圣诞树上,这棵树有n层,每层有一件礼物,每件礼物都有一个价值,有的礼物还有一些连结线,与下层的礼物相连,领取礼物的规则如下:任选一件礼物,它的下面如果有连结线,则可以继续取它连结的礼物,以此类推,直至取到没有连结线的礼物才结束,你如果是第一个去取,怎样取才能获得最大的价值呢?请你编一程序解决这一问题。