NOIP2011铺地毯

合集下载

NOIP 2011 提高组day1 题解 美少女战士原创

NOIP 2011 提高组day1 题解 美少女战士原创

NOIP 2011 提高组day1 题解美少女战士原创1.铺地毯(carpet.cpp/c/pas)【问题描述】为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。

一共有n 张地毯,编号从1 到n。

现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。

地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。

注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。

【输入】输入文件名为 carpet.in。

输入共 n+2 行。

第一行,一个整数 n,表示总共有n 张地毯。

接下来的 n 行中,第i+1 行表示编号i 的地毯的信息,包含四个正整数a,b,g,k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标(a,b)以及地毯在x轴和y 轴方向的长度。

第 n+2 行包含两个正整数x 和y,表示所求的地面的点的坐标(x,y)。

【输出】输出文件名为 carpet.out。

输出共 1 行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖则输出-1。

【输入输出样例 1】carpet.in carpet.out3 31 02 30 2 3 32 13 32 2【输入输出样例说明】如下图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,覆盖点(2,2)的最上面一张地毯是3 号地毯。

【输入输出样例 2】carpet.in carpet.out3 -11 02 30 2 3 32 13 34 5【输入输出样例说明】如上图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,点(4,5)没有被地毯覆盖,所以输出-1。

(不好意思,因为是从PDF中复制过来的,所以没有图,不过挺简单的,大家可以自己做一下)(嘿嘿,还是我的朋友智慧,我怎么就没想到用QQ截图)【数据范围】对于 30%的数据,有n≤2;对于 50%的数据,0≤a, b, g, k≤100;对于 100%的数据,有0≤n≤10,000,0≤a, b, g, k≤100,000。

【NOIP2011提高组】铺地毯

【NOIP2011提高组】铺地毯

【NOIP2011提高组】铺地毯题目描述为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。

一共有n 张地毯,编号从1 到n。

现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。

地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。

注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。

输入格式输入共 n+2 行第一行,一个整数 nn ,表示总共有 nn 张地毯接下来的 nn 行中,第 i+1 行表示编号 iii 的地毯的信息,包含四个正整数 a,b,g,ka ,b ,g ,k每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标 (a,b)(a,b) 以及地毯在 xx 轴和 y y轴方向的长度第 n+2 行包含两个正整数 xx 和 yy,表示所求的地面的点的坐标(x,y)(x,y)。

输出格式输出共 11 行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖输出-1。

数据范围对于30% 的数据,有n≤2;对于50% 的数据,0≤a,b,g,k≤100;对于100%的数据,有0≤n≤10,000,0≤a,b,g,k≤100,0000≤a, b, g, k ≤100,000。

看完这道题大概会觉得很简单之后定义一个数组来模拟每个方块上面覆盖着的是几号地毯,最后输出book[x][y]就好了。

如果你是这么想的话,那么恭喜你上当了。

a,b,g,k的范围最大都是100,000,也就是说,地毯最大可以覆盖到横纵坐标为200,000的地方。

于是你把数组开成这样,于是后果自负。

不过当然了如果你只是想要50分的话,205*205的数组是可以的。

如果想要拿到满分很明显出题人不想让你定义数组来记录,我们就得再想一个办法了。

其实仔细想想根本就不用定义标记啊,对于每个地毯我们只需要判断它时候覆盖住所求点就好了啊,如果覆盖,那就迭代。

NOIP2011模拟试题及解析

NOIP2011模拟试题及解析

NOIP2011模拟试题及解析128MClass(class.pas/c/cpp)【问题描述】信息班这期的课将要结束了,老师要从现在班上的同学中选出比较优秀的同学进入下一期的学习。

而录取标准则是将平时作业和考试一起考虑,综合成绩排在前面的则录取。

经过一番思考,老师作了以下的筛选计划:1、设计两个参数x,y,学生总成绩为平时成绩的x%和考试成绩的y%。

2、将同学按总成绩排名,招收总成绩在前15的学生,不够15则全部录取。

注:总成绩在第15的如果有多人,则可以被同时录取。

例如:18个人总成绩从大到小依次为95,93,93,88,87,84,80,75,70,68,66,65,60,58,57,57,56,55。

那么93,93同为第2名,而88为第4名,57,57同为第15名,都被录取。

而56,55则不被录取。

老师因为招生培训的事情很忙,所以现在她把信息班学生的成绩表给了你,希望你能告诉她哪些同学被录取了。

【输入】输入文件class.in第一行有三个数N,x,y。

表示信息班有N个同学以及参数x,y。

第二行N个数,分别为A1,A2,A3 … AN。

Ai表示编号为i的同学的平时成绩。

第三行N个数,分别为B1,B2,B3 … BN。

Bi表示编号为i的同学的考试成绩。

【输出】输出文件class.out共一行,为被录取同学的编号,按照升序输出。

【输入输出样例】【数据说明】1<=N<=1000<=x,y<=1000<=平时成绩,考试成绩<=100以上数据皆为整数模拟。

首先求出所有人的总分,然后进行快排(注意第15名的并列情况),人数小于15时,输出1到n;否则将入围人员的编号进行排序升序输出。

程序如下:program zk;varp,k,h,zong:array [0..200] of longint;i,j,a,b,c,n,x,y,xian,f:longint;procedure qsort(x,y:longint);varxo,yo,zz,mid,z:longint;beginxo:=x; yo:=y;mid:=zong[(xo+yo) div 2];repeatwhile zong[xo]>mid do inc(xo);while zong[yo]<mid do dec(yo);if xo<=yo thenbeginz:=zong[xo];zong[xo]:=zong[yo];zong[yo]:=z;zz:=h[xo];h[xo]:=h[yo];h[yo]:=zz;inc(xo); dec(yo);end;until xo>yo;if x<yo then qsort(x,yo);if xo<y then qsort(xo,y);end;procedure qsorth(x,y:longint); varxo,yo,zz,mid,z:longint;beginxo:=x; yo:=y;mid:=h[(xo+yo) div 2]; repeatwhile h[xo]<mid do inc(xo);while h[yo]>mid do dec(yo);if xo<=yo thenbeginzz:=h[xo];h[xo]:=h[yo];h[yo]:=zz;inc(xo); dec(yo);end;until xo>yo;if x<yo then qsorth(x,yo);if xo<y then qsorth(xo,y); end;beginassign(input,'class.in'); assign(output,'class.out'); reset(input);rewrite(output);readln(n,x,y);for i:=1 to n doread(p[i]);readln;for i:=1 to n dobeginh[i]:=i;read(k[i]);end;for i:=1 to n dozong[i]:=p[i]*x+k[i]*y;qsort(1,n);xian:=15;if n>=15 thenbeginf:=zong[xian];while zong[xian+1]=f doxian:=xian+1;endelse xian:=n;qsorth(1,xian);for i:=1 to xian dowrite(h[i],' ');close(input);close(output);end.Clean(clean.pas/c/cpp)【问题描述】最近甲型H1N1流感病毒肆虐。

NOIp 2011

NOIp 2011

Qc
• 题目理解比较纠结 • 首先我们可以枚举校验值W来计算出所有的 值,选择最优的那一个。 • 但这样必然是要超时的。 • 可以发现随着W的增大,∑(i=1,m)Yi只会越 来越小,根据单调性可以决定使用二分的 方法求出最小的满足条件的W值,最后的答 案就是W或者W-1
验证
• 验证的时候需要预处理一个累加和的数组, 可以降低时间复杂度。 • 一个是满足条件的个数,一个是满足条件 的价值累加和。
• 建一个数组c,每一个客栈如果cost[i]>p则c[i]为1 否则为0 • 题目是求出颜色一样,中间存在至少一个c为0的 客栈对数 • 转化成他的补集,考虑颜色一样的,之间全是1的 对数,这是很好求的,O(n)的扫描得到所有连续 为1的序列,对于每个序列的对数求法就是简单的 排列组合
Manyan
• 这个时间复杂度的上界是O(kn)的,看上去 过不了,但是实际上没有达到这么大。 • 实在不放心的同学可以用stl库里的set来存 最小值,这样更新的时候会更快一点儿。
总结
• CCF是越来越欠吐槽了…… • 两天出了6道题,无图论无动规无高级数据结 构…… • 比较好拿到的分数如下: • Carpet 100 Hotel 100 Manyan 30 • Factor 100 Qc 50/100 Bus 30 • 总计 410/460 • 2011年的题目不算太难,对基础算法策略考察较 深入。
Day2
• Factor 杨辉三角/二项式定理
• Qc • Bus 二分答案验证 递推/贪心
Factor
• 简单的数学计算。 • 可以发现这就是高二学习的二项式定理 • 但是目测当时的智商不足以发现这个问题, 只知道确定系数可以使用杨辉三角。 • 用递推推出杨辉三角的每一项 • 然后直接计算输出答案,注意使用同余原 理

NOIP真题汇总

NOIP真题汇总

NOIP真题汇总想想在NOIP前总得做做真题吧,于是长达⼀个⽉的刷题开始了涉及2008-2016年⼤部分题⽬NOIP [2008] 4/41、传纸条:清真的三维DP2、笨⼩猴:字符串模拟3、⽕柴棒等式:打表+循环4、双栈排序:贪⼼+栈NOIP [2009] 3/42、Hankson的趣味题:数论,gcd相关3、最优贸易:建图+SPFA4、靶形数独:较难搜索+剪枝NOIP [2010] 4/41、引⽔⼊城:DP+bfs(较好)2、关押罪犯:贪⼼+并查集3、机器翻译:模拟4、乌龟棋:简单DPNOIP [2011] 5/61、铺地毯:模拟2、选择客栈:DP3、Mayan游戏:较难搜索4、计算系数:组合数5、聪明的质检员:⼆分答案+前缀和NOIP [2012] 4/61、Vigenère 密码:字符串2、国王游戏:贪⼼+⾼精4、同余⽅程:扩欧5、借教室:⼆分答案+前缀和NOIP [2013] 5/61、转圈游戏:快速幂2、⽕柴排队:逆序对+贪⼼3、货车运输:最⼩⽣成树+lca4、积⽊⼤赛:递推或者分治5、花匠:简单DPNOIP [2014] 6/61、⽣活⼤爆炸版⽯头剪⼑布:模拟2、联合权值:类树形DP3、飞扬的⼩鸟:类背包DP4、⽆线⽹络发射器选址:模拟5、寻找道路:图论,反向bfs6、解⽅程:秦九韶NOIP [2015] 6/61、神奇的幻⽅:模拟2、信息传递:拓扑排序3、⽃地主:较难搜索4、跳⽯头:⼆分答案5、⼦串:DP6、运输计划:⼆分答案+树上差分NOIP [2016] 6/61、玩具谜题:模拟2、天天爱跑步:lca+树上差分3、换教室:floyd+概率DP4、组合数问题:组合数5、蚯蚓:队列6、愤怒的⼩鸟:状态压缩DP。

CSP-J (NOIP普及组) 复赛2010-2023考查内容一览表

CSP-J (NOIP普及组) 复赛2010-2023考查内容一览表

CSP-J (NOIP提高组) 复赛2010-2020考查内容NOIP2017提高组T4奶酪深搜、广搜、并查集T5宝藏状压DPT6列队线段树NOIP2016提高组T1玩具谜题模拟T2天天爱跑步倍增LCAT3换教室动态规划(高级)T4组合数问题前缀和、杨辉三角T5蚯蚓队列、单调性T6愤怒的小鸟状压DPNOIP2015提高组T1神奇的幻方模拟T2信息传递并查集T3斗地主动态规划(高级)、深搜T4跳石头二分T5子串滚动数组、动态规划(高级) T6运输计划二分、LCA、非递归NOIP2014提高组T1生活大爆炸版石头剪刀布模拟T2联合权值动态规划(高级)、前缀和T3飞扬的小鸟动态规划(高级)T4无线网络发射器选址枚举T5寻找道路最短路T6解方程数论、枚举NOIP2013提高组T1转圈游戏快速幂T2火柴排队归并排序、逆序对T3货车运输最小生成树、LCA、倍增T4积木大赛贪心T5花匠贪心T6华容道广搜、剪枝NOIP2012提高组T1Vigenere密码枚举、模拟T2国王游戏贪心、高精度T3开车旅行平衡树、倍增T4同余方程扩展欧几里得T5借教室线段树T6疫情控制二分、倍增NOIP2011提高组T1铺地毯模拟T2选择客栈动态规划(高级)、RMQ T3Mayan游戏T4计算系数组合数学T5聪明的质监员二分T6观光公交贪心NOIP2010提高组T1机器翻译队列T2乌龟棋动态规划T3关押罪犯二分、并查集T4引水入城广搜、动态规划T3摆渡车动态规划(高级) T4对称二叉树二叉树NOIP2017普及组序号题名考查内容T1成绩顺序结构T2图书管理员结构体排序T3棋盘深搜、剪枝T4跳*房*子二分、动态规划NOIP2016普及组序号题名考查内容T1买铅笔一重循环T2回文日期回文T3海港大模拟、队列T4魔*法*阵枚举、前缀和NOIP2015普及组序号题名考查内容T1金*币一重循环T2扫*雷*游*戏二维数组T3求和组合数学T4推销员贪心、优先队列NOIP2014普及组序号题名考查内容T1珠心算测验模拟T2比例简化枚举、gcdT3螺旋矩阵模拟、找规律T4子矩阵动态规划(高级)NOIP2013普及组序号题名考查内容T1记数问题二重循环T2表达式求值栈T3小朋友的数字动态规划(高级) T4车站分级拓扑排序NOIP2012普及组序号题名考查内容T1质因数分解一重循环、质数T2寻*宝模拟、取模T3摆花背包、动态规划T4文化之旅最短路NOIP2011普及组序号题名考查内容T1数字反转进制转换T2统计单词数字符串T3瑞士轮归并排序T4表达式的值动态规划(高级)、栈NOIP2010普及组序号题名考查内容T1数字统计二维数组T2接水问题模拟T3导*弹*拦*截贪心T4三*国*游*戏贪心、博弈。

NOIP2011普及组复赛试题

NOIP2011普及组复赛试题

1.数字反转(reverse.cpp/c/pas)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。

新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。

【输入】输入文件名为reverse.in。

输入共1行,一个整数N。

【输出】输出文件名为reverse.out。

输出共1行,一个整数,表示反转后的新数。

【输入输出样例1】reverse.in reverse.out 123 321【输入输出样例2】Reverse.in reverse.out -380 -83【数据范围】-1,000,000,000≤N≤1,000,000,000。

2.统计单词数(stat.cpp/c/pas)【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。

注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。

【输入】输入文件名为stat.in,2行。

第1行为一个字符串,其中只含字母,表示给定单词;第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

【输出】输出文件名为stat.out。

只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从0开始);如果单词在文章中没有出现,则直接输出一个整数-1。

【输入输出样例1】stat.in stat.out2 0Toto be or not to be is a question【输入输出样例1说明】输出结果表示给定的单词To在文章中出现两次,第一次出现的位置为0。

冲刺NOIP2011模拟试题一

冲刺NOIP2011模拟试题一

冲刺NOIP2011模拟试题1.单词分类(word.c/cpp)[问题描述]Oliver为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类。

两个单词可以分为一类当且仅当组成这两个单词的各个字母的数量均相等。

例如“AABAC”,它和“CBAAA”就可以归为一类,而和“AAABB”就不是一类。

现在Oliver有N个单词,所有单词均由大写字母组成,每个单词的长度不超过100。

你要告诉Oliver 这些单词会被分成几类。

[输入格式]输入文件的第一行为单词个数N,以下N行每行为一个单词。

[输出格式]输出文件仅包含一个数,表示这N个单词分成的类数。

[样例输入]3AABACCBAAAAAABB[样例输出]2[数据范围]对于70%的数据满足N≤100。

对于100%的数据满足N≤10000。

2.过河问题(river.c/cpp)[问题描述]有一个大晴天,Oliver与同学们一共N人出游,他们走到一条河的东岸边,想要过河到西岸。

而东岸边有一条小船。

船太小了,一次只能乘坐两人。

每个人都有一个渡河时间T,船划到对岸的时间等于船上渡河时间较长的人所用时间。

现在已知N个人的渡河时间T,Oliver想要你告诉他,他们最少要花费多少时间,才能使所有人都过河。

注意,只有船在东岸(西岸)的人才能坐上船划到对岸。

[输入格式]输入文件第一行为人数N,以下有N行,每行一个数。

第i+1行的数为第i个人的渡河时间。

[输出格式]输出文件仅包含一个数,表示所有人都渡过河的最少渡河时间。

[样例输入]4671015[样例输出]42[样例解释]初始:东岸{1,2,3,4},西岸{}第一次:东岸{3,4},西岸{1,2} 时间7第二次:东岸{1,3,4},西岸{2} 时间6第三次:东岸{1},西岸{2,3,4},时间15第四次:东岸{1,2},西岸{3,4} 时间7第五次:东岸{},西岸{1,2,3,4} 时间7所以总时间为7+6+15+7+7=42,没有比这个更优的方案。

NOIP2011解题报告

NOIP2011解题报告

NOIP2011解题报告东北师大附中王康宁Day1:第一题(carpet):询问只有一个点,扫描一遍就好。

第二题(hotel):以旅馆i为起点的可行方案一定是(j~n)连续的一段,并且随起点i的增加j一定不减少。

因此可以用单调队列储存或每次二分查找,并记录每种颜色的前缀和。

时间复杂度O(nk)或O(nk+nlogn)。

第三题(mayan):暴搜就能过。

几个剪枝:1.如果某个方块左边有另一个方块,那么无需将它左移(可将它左面的方块右移,字典序更小)。

2.如果某种颜色剩余不到三个则剪枝。

Day2:第一题(factor):直接二项式定理。

计算组合数可以高精度或者分解质因数或者组合公式C(n,m)=C(n-1,m)+C(n-1,m-1)(就是杨辉三角)。

第二题(qc):可以通过记录前显然Y随W的增加而减少,因此想到二分W。

Σ1和Σvj缀和在O(1)时间求出。

时间复杂度O((n+m)*logw)。

第三题(bus):小数据可以动规,可大数据用朴素动规显然超时,想到NOIP动规都是不带优化的,便怀疑是贪心。

定义有效作用区间为某个加速器使用后可使汽车在在区间[l,r)中的站点的到达时间减一的这个[l,r)。

考虑对于每个加速器,设其使最多人等待时间减一的有效作用区间为[l,r)。

假设另有区间[l’,r’),可使最后结果更优。

只考虑这两个区间相交的情况(否则显然成立):1.若l’<l 或r’>r :区间[l’,r)或[l,r’)一定可以使更多人等待时间减一,与[l,r)的定义不符。

2.否则[l’,r’)是[l,r)的子区间,而这相当于浪费了加速器,结果一定不会更优。

综合以上两条,只需每次选取使最多人等待时间减一的区间使用加速器,必可使最后结果最优。

1.9编程基础之顺序查找(15题)

1.9编程基础之顺序查找(15题)

01:查找特定的值••提交•统计•提问总时间限制:1000ms内存限制:65536kB描述在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。

输入第一行包含一个正整数n,表示序列中元素个数。

1 <= n <= 10000。

第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。

元素的绝对值不超过10000。

第三行包含一个整数x,为需要查找的特定值。

x的绝对值不超过10000。

输出若序列中存在x,输出x第一次出现的下标;否则输出-1。

02:输出最高分数的学生姓名•描述输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。

输入第一行输入一个正整数N(N <= 100),表示学生人数。

接着输入N行,每行格式如下:分数姓名分数是一个非负整数,且小于等于100;姓名为一个连续的字符串,中间没有空格,长度不超过20。

数据保证最高分只有一位同学。

输出获得最高分数同学的姓名。

来源习题(13-1)03:不高兴的津津•描述津津上初中了。

妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。

另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。

但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。

假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。

请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

输入包括七行数据,分别表示周一到周日的日程安排。

每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

输出包括一行,这一行只包含一个数字。

如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。

如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

NOIP2011复赛普及组试题

NOIP2011复赛普及组试题

全国信息学奥林匹克联赛(2011)复赛普及组(请选手务必仔细阅读本页内容)一.题目概况二.提交源程序文件名三.编译命令(不包含任何优化开关)四.运行内存限制注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。

2、中函数 ()的返回值类型必须是,程序正常结束时的返回值必须是 0。

3、全国统一评测时采用的机器配置为: P4 3.0,内存 1G,上述时限以此配置为准。

4、特别提醒:评测在下进行。

1.数字反转()【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。

新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。

【输入】输入文件名为。

输入共 1 行,一个整数 N。

【输出】输出文件名为。

输出共 1 行,一个整数,表示反转后的新数。

【输入输出样例 1】【输入输出样例2】【数据范围】-1,000,000,000 ≤ N ≤ 1,000,000,000。

2.统计单词数()【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。

注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。

【输入】输入文件名为,2 行。

第 1 行为一个字符串,其中只含字母,表示给定单词;第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

【输出】输出文件名为。

只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从 0 开始);如果单词在文章中没有出现,则直接输出一个整数-1。

2011noip提高组复赛题解

2011noip提高组复赛题解

Noip 2011 提高组(Day 1)解题报告及程序一、铺地毯正着扫一遍判断每个矩形是否覆盖询问的点,覆盖则更新结果或者倒着扫一遍,找到第一个覆盖询问点的矩形,输出即可,时间复杂度O(n)Procedure:#include <cstdio>#define MaxLength 10000inline int Getint(){char c = getchar();while (c<'0' || c>'9') c = getchar();int ret = 0;while (c>='0' && c<='9'){ret = ret*10 + (c-'0');c = getchar();}return ret;}int sx[MaxLength+5], sy[MaxLength+5], ex[MaxLength+5], ey[MaxLength+5], n; void Init(){n = Getint();for (int i=1; i<=n; i++){sx[i] = Getint(), sy[i] = Getint(), ex[i] = Getint(), ey[i] = Getint();ex[i] += sx[i], ey[i] += sy[i];}return ;}int x0, y0, ans = -1;void Solve(){x0 = Getint(), y0 = Getint();for (int i=n; i;i--)if(x0>=sx[i] && x0<=ex[i] && y0>=sy[i] && y0<=ey[i]){ans = i;break;}printf("%d", ans);return ;}int main(){Init();Solve();getchar(); getchar();return 0;}二、选择客栈f [i][j]表示前i个客栈以第j种颜色的方案数,先以客栈划分第一阶段,以颜色划分第二阶段,如果颜色相同的客栈,则以前一客栈相同颜色的方案数+1,否则同其一样;计算答案时记一下前一个比最高消费限制低的客栈编号pos[i],路径压缩,时间复杂度O(nm)Procedure:#include <cstdio>#define MaxNode 200000#define MaxType 50inline int Getint(){char c = getchar();while (c<'0' || c>'9') c = getchar();int ret = 0;while (c>='0' && c<='9'){ret = ret*10 + (c-'0');c = getchar();}return ret;}int color[MaxNode+5], price[MaxNode+5], n, m, low;void Init(){n = Getint(), m = Getint(), low = Getint();for (int i=1; i<=n; i++) color[i] = Getint(), price[i] = Getint();return ;}int f[MaxNode+5][MaxType+5], pos[MaxNode+5], ans = 0;void Dp(){for (int i=1; i<=n; i++)for (int j=0; j<m; j++)if (color[i]==j) f[i][j] = f[i-1][j]+1;else f[i][j] = f[i-1][j];for (int i=1; i<=n; i++)if (price[i]<=low){pos[i] = i;ans += f[i-1][color[i]];}else{pos[i] = pos[i-1];ans += f[pos[i]][color[i]];}printf("%d", ans);return ;}int main(){Init();Dp();getchar(); getchar();return 0;}三、Mayan纯暴力DFS,加可行性剪枝,如同一种颜色小于3块无法消除,同一颜色交换无意义,下落无法完成左右移动,再加模拟其过程时间复杂度O( n^(?) )Procedure:#include <cstdio>#include <memory>inline int Getint(){char c = getchar();while (c<'0' || c>'9') c = getchar();int ret = 0;while (c>='0' && c<='9'){ret = ret*10 + (c-'0');c = getchar();}return ret;}inline void Swap(int &a, int &b){int temp = a; a = b; b = temp;return ;}int map[10][10], point[10], color[15], n, type = 0;void Init(){n = Getint();for (int i=0; i<5; i++){map[i][0] = Getint();if (type<map[i][point[i]]) type = map[i][point[i]];color[ map[i][point[i]] ]++;while (map[i][point[i]]){map[i][++point[i]] = Getint();if (type<map[i][point[i]]) type = map[i][point[i]];color[ map[i][point[i]] ]++;}point[i]--;}return ;}bool Fall(int k){int top = -1;for (int i=0; i<=point[k]; i++)if (map[k][i]) map[k][++top] = map[k][i];if (top!=point[k]){for (int i=top+1; i<=point[k]; i++) map[k][i] = 0;point[k] = top;return true;}return false;}bool Check_Fall(){bool flag = false;for (int i=0; i<5; i++)if (Fall(i)) flag = true;return flag;}bool sign[10][10];void Clear(){int pmax = 0;for (int i=0; i<5; i++)if (point[i]>pmax) pmax = point[i];for (int i=0; i<5; i++)if (point[i]>=2){int k = point[i], j = k-1;for (; j>=0; j--)if (map[i][j]!=map[i][k]){if (k-j>=3)for (; k>j; k--) sign[i][k] = true;else k = j;}if (k-j>=3)for (; k>j; k--) sign[i][k] = true;}for (int i=0; i<=pmax; i++){int k = 0, j = 1;for (; j<5; j++)if (map[j][i]!=map[k][i]){if (j-k>=3)for (; k<j; k++) sign[k][i] = true;else k = j;}if (j-k>=3)for (; k<j; k++) sign[k][i] = true;}for (int i=0; i<5; i++)for (int j=pmax; j>=0; j--)if (sign[i][j]){sign[i][j] = false;color[map[i][j]]--;map[i][j] = 0;}return ;}void Solve(int x, int y){Fall(x), Fall(y);Clear();while (Check_Fall()) Clear();return ;}bool Check_Point(){for (int i=0; i<5; i++)if (point[i]>=0)return false;return true;}bool Check_Color(){for (int i=1; i<=type; i++)if (color[i]==1 || color[i]==2) return false;return true;}struct Ac{int m[10][10], p[10], c[15];}a[10];inline void Copy(int k){memcpy(a[k].m, map, sizeof(map));memcpy(a[k].p, point, sizeof(point));memcpy(a[k].c, color, sizeof(color));return ;}inline void Turn_Copy(int k){memcpy(map, a[k].m, sizeof(a[k].m));memcpy(point, a[k].p, sizeof(a[k].p));memcpy(color, a[k].c, sizeof(a[k].c));return ;}int ans[10][10];bool Dfs(int deep){if (!Check_Color()) return false;Copy(deep);for (int i=0; i<5; i++)for (int j=0; j<=point[i]; j++){ans[deep][0] = i, ans[deep][1] = j;if (i<4){ans[deep][2] = 1;Swap(map[i][j], map[i+1][j]);if (point[i+1]<j) point[i+1] = j;Solve(i, i+1);if (deep==n && Check_Point()) return true;if (deep<n && Dfs(deep+1)) return true;Turn_Copy(deep);}if (i && point[i-1]<j){ans[deep][2] = -1;Swap(map[i][j], map[i-1][j]);point[i-1] = j;Solve(i, i-1);if (deep==n && Check_Point()) return true;if (deep<n && Dfs(deep+1)) return true;Turn_Copy(deep);}}return false;}int main(){Init();if (!Dfs(1)) printf("-1");elsefor (int i=1; i<=n; i++)printf("%d %d %d\n", ans[i][0], ans[i][1], ans[i][2]);getchar(); getchar();return 0;}Noip 2011 提高组(Day 2)解题报告及程序一、计算系数二项式定理,杨辉三角,注意Mod就可以了,时间复杂度O(k^2)Procedure:#include <cstdio>#define MaxNode 1000#define Mod 10007int f[MaxNode+5][MaxNode+5], a, b, k, n, m;void Init(){scanf("%d %d %d %d %d", &a, &b, &k, &n, &m);a %= Mod,b %= Mod, k++;for (int i=1; i<=k; i++) f[i][1] = f[i][i] = 1;for (int i=2; i<=k; i++)for (int j=2; j<i; j++)f[i][j] = (f[i-1][j-1] + f[i-1][j])%Mod;return ;}void Solve(){int x = k, y = k-n;for (int i=1; i<=n; i++) f[x][y] = (f[x][y] * a)%Mod;for (int j=1; j<=m; j++) f[x][y] = (f[x][y] * b)%Mod;printf("%d", f[x][y]%Mod);return ;}int main(){Init();Solve();getchar(); getchar();return 0;}二、聪明的质检员由观察得随着参数W的上升检验值temp会减小,据函数Abs(标准值-temp)有最小值,故可二分查找得出答案其中每次调整参数W时扫描一次矿石中大于W的,num[]表示其数量前缀和,val[]表示其价值前缀和,故可在一个区间的检验值计算中以O(1)的时间得出答案时间复杂度O(log(w)*(n+m))Procedure:#include <cstdio>#define MaxNode 200000#define INF ((0x7fffffffffffffffll)>>1)inline int Getint(){char c = getchar();while (c<'0' || c>'9') c = getchar();int ret = 0;while (c>='0' && c<='9'){ret = ret*10 + (c-'0');c = getchar();}return ret;}long long Abs(long long a){if (a>0) return a;return -a;}int w[MaxNode+5], val[MaxNode+5], l[MaxNode+5], r[MaxNode+5], n, m, lw, rw; long long standard;void Init(){n = Getint(), m = Getint(), scanf("%I64d", &standard);for (int i=1; i<=n; i++){w[i] = Getint(), val[i] = Getint();if (rw<w[i]) rw = w[i]+1;}for (int i=1; i<=m; i++) l[i] = Getint(), r[i] = Getint();return ;}int num[MaxNode+5];long long sum[MaxNode+5];long long Calc(int left, int right){return (sum[right]-sum[left]) * (num[right]-num[left]);}long long Sieve(int Limit){long long ret = 0;sum[0] = num[0] = 0;for (int i=1; i<=n; i++){num[i] = num[i-1];sum[i] = sum[i-1];if (w[i]>=Limit){num[i]++;sum[i] += val[i];}}for (int i=1; i<=m; i++) ret += Calc(l[i]-1, r[i]);return ret;}long long ans = INF;void Binary_Search()while (lw<rw){int mid = (lw+rw)>>1;long long temp = Sieve(mid);long long value = Abs(standard - temp);if (temp<standard) rw = mid;else lw = mid+1;if (ans>value) ans = value;}printf("%I64d", ans);return ;}int main(){Init();Binary_Search();getchar(); getchar();return 0;}三、观光公交贪心令t[i]表示当前到达第i个站的时间,sumoff[i]表示目的地为i的乘客数,arrtime[i]表示第i个乘客到站等车的时刻题目给定加速器的作用就是可以把某个t[i]减去1并把与其相关联的t[i]全部减小1。

历年NOIP真题汇编(2000~2017)

历年NOIP真题汇编(2000~2017)

2006 年-B
所属知识点:_________________________源自本题心得与经验总结: 29
淮南二中信息学团队资料-历年 NOIP 真题汇编
2006 年-C
所属知识点:_________________________
30
淮南二中信息学团队资料-历年 NOIP 真题汇编
本题心得与经验总结: 31
淮南二中信息学团队资料-历年 NOIP 真题汇编
淮南二中信息学团队资料
历年 NOIP 真题汇编 I(2000-2005)
编辑、校对:刘龙
【2000 年】[4] P1017 进制转换 P1018 乘积最大 P1019 单词接龙 P1023 税收与补贴问题 【2001 年】[4] P1024 一元三次方程求解 P1025 数的划分 P1026 统计单词个数 P1027 Car 的旅行路线 【2002 年】[4] P1031 均分纸牌 P1032 字串变换 P1033 自由落体 P1034 矩形覆盖 【2003 年】[4] P1038 神经网络 P1039 侦探推理 P1040 加分二叉树 P1041 传染病控制 【2004 年】[4] P1089 津津的储蓄计划 P1090 合并果子 P1091 合唱队形 P1092 虫食算 【2005 年】[4] P1051 谁拿了最多奖学金 P1052 过河 P1053 篝火晚会 P1054 等价表达式 【2006 年】[4] P1063 能量项链 P1064 金明的预算方案 P1065 作业调度方案 P1066 2^k 进制数
2000 年-D
所属知识点:_________________________
本题心得与经验总结: 5
淮南二中信息学团队资料-历年 NOIP 真题汇编

信息学奥赛系列课程(三阶段)-2019_02_21_第3版

信息学奥赛系列课程(三阶段)-2019_02_21_第3版

信息学奥赛NOIP系列课程(三阶段)第一阶段C++语言及数据结构与算法基础课本:1、信息学奥赛一本通+训练指导教程C++版第五版--2017年出版(两本)第1部分C++语言(50课时)适于:零基础的初中或高中的学生,当然有C语言或scratch、Python语言基础更好授课:相关内容讲授+实例+题目现堂训练(每次课2-3题,题目较大可能是1题)第1章C++语言入门(2-3课时)第2章顺序结构程序设计(6课时)第3章程序控制结构(3课时)NOIP2017复赛普及组第1题成绩https:///problem-12334.htmlNOIP2018复赛普及组第1题标题统计方法一https:///problem-12393.htmlNOIP1996普及组第1题https:///WDAJSNHC/article/details/83513564https:///yuyanggo/article/details/47311665第4章循环结构(5课时)NOIP2018复赛普及组第1题标题统计方法二https:///problem-12393.htmlNOIP2016复赛普及组第1题买铅笔https:///problem-12121.htmlNOIP2015复赛普及组第1题金币/ch0105/45/NOIP2002复赛普及组第1题级数求和/ch0105/27/NOIP2013复赛普及组第1题计数问题https:///problem-11005.html?tdsourcetag=s_pcqq_aiomsgNOIP2012复赛普及组第1题质因数分解/ch0105/43/NOIP2011复赛普及组第1题数字反转/ch0105/29/NOIP2010复赛普及组第1题数字统计https:///problem-10012.htmlNOIP1999普及组第1题Cantor表/ch0201/8760/https:///problemnew/show/P1014NOIP1997普及组第1题棋盘问题https:///problemnew/show/P1548NOIP1995普及组复赛第1题https:///secret_zz/article/details/76862335https:///WDAJSNHC/article/details/83513896NOIP1997普及组第2题数字三角形https:///ber_bai/article/details/76722379第5章数组(9-10课时)NOIP2014复赛普及组第1题珠心算测验https:///problem-12091.htmlNOIP2009复赛普及组第1题多项式输出/ch0113/39/NOIP2006复赛普及组第1题明明的随机数/ch0110/09/NOIP2005复赛普及组第1题陶陶摘苹果/ch0106/02/NOIP2004复赛普及组第1题不高兴的津津/ch0109/03/NOIP2003年普及组第1题乒乓球/ch0113/37/NOIP1998年普及组第1题三连击(枚举)https:///problemnew/show/P1008NOIP1995普及组复赛第2题方阵填数https:///WDAJSNHC/article/details/79381876NOIP1996普及组第2题格子问题https:///WDAJSNHC/article/details/79381843?utm_source=blogxgwz5NOIP2016复赛普及组第2题回文日期https:///problem-12122.htmlhttps:///problemnew/show/P2010NOIP2015普及组第2题P2670扫雷游戏/ch0108/14/https:///problemnew/show/P2670https:///problem-12105.htmlNOIP2012普及组第2题_P1076寻宝/ch0112/06/https:///problemnew/show/P1076第6章函数(5课时)NOIP2008复赛普及组第1题ISBN号码/ch0107/29/NOIP2000提高组第1题P1017进制转换https:///problemnew/show/P1017NOIP2000普及组第1题计算器的改良https:///problemnew/show/P1022https:///yuyanggo/article/details/47856785https:///u012773338/article/details/41749421NOIP2018普及组第2题龙虎斗https:///problemnew/show/P5016https:///problem-12394.html机器翻译【1.12编程基础之函数与过程抽象07】Noip2010提高组第1题/ch0112/07/Vigenère密码【1.12编程基础之函数与过程抽象08】Noip2012提高组第1题/ch0112/08/笨小猴【1.9编程基础之顺序查找06】NOIP2008提高组第1题/ch0109/06/第7章文件和结构体(5课时)NOIP2011复赛提高组第1题铺地毯/ch0109/14/NOIp2008提高组第2题火柴棒等式https:///problemnew/show/P1149https:///Mr_Doublerun/article/details/52589778第8章指针及其应用(8课时)第9章C++实用技巧与模版库(5课时)NOIP2007复赛普及组第1题奖学金/ch0110/04/NOIP2017复赛普及组第2题图书管理员(STL、排序)https:///problem-12335.htmlhttps:///problemnew/show/P3955NOIP1999普及组第2题回文数https:///problemnew/show/P1015***模拟NOIP2017年提高组第2题时间复杂度(模拟)https:///problem-12333.htmlhttps:///problemnew/show/P3952NOIP2011普及组第3题P1309瑞士轮(模拟、快拍、归并排序)/ch0401/4363/https:///problemnew/show/P1309NOIP2018复赛普及组第3题摆渡车(模拟)https:///problem-12395.htmlhttps:///problemnew/show/P5017NOIP2016普及组第3题海港(port)--枚举https:///problemnew/show/P2058NOIP2006年提高组第3题P1065作业调度方案(模拟)https:///problemnew/show/P1065NOIP2013提高组第4题P1969积木大赛(模拟贪心)https:///problem-12071.htmlhttps:///problemnew/show/P1969NOIP2014提高组第4题P2038无线网络发射器选址(模拟)https:///problemnew/show/P2038第2部分NOIP基础算法(39课时)第1章高精度计算(2-3课时)【例1.6】回文数(Noip1999):8088/problem_show.php?pid=1309NOIP2003普及组第4题P1045麦森数(分治、高精度运算)https:///problemnew/show/P1045NOIP2005普及组第4题P1050循环(高精度运算、数论、快速幂) https:///problemnew/show/P1050第2章数据排序(3课时)NOIP2014复赛普及组第1题珠心算测验https:///problem-12091.html第3章递推算法(2-3课时)1314:【例3.6】过河卒(Noip2002):8088/problem_show.php?pid=1314NOIP2011普及组第4题P1310表达式的值(栈、表达式计算、递推) https:///problemnew/show/P1310NOIP2011提高组第6题P1315观光公交(递推分析、贪心)https:///problemnew/show/P1315第4章递归算法(2-3课时)【例4.6】数的计数(Noip2001普及组第1题):8088/problem_show.php?pid=1316第5章搜索与回溯算法(2-3课时)NOIP2015day1T3_斗地主P2668斗地主https:///problemnew/show/P2668NOIP2017年普及组第3题棋盘https:///problemnew/show/P3956https:///problem-12336.htmlNOIP2015年提高组第2题P2661信息传递(Tarjen bfs/dfs(图论))https:///problem-12107.htmlhttps:///problemnew/show/P2661NOIP2016年提高组第2题天天爱跑步(Lca/dfs(图论)树结构最近公共祖先)https:///problem-12208.htmlhttps:///problemnew/show/P1600NOIP2000普及组第4题P1019单词接龙(深搜)https:///problemnew/show/P1019NOIP2000年提高组第3题单词接龙(DFS,字符串,模拟)https:///problemnew/show/P1019NOIP2014普及组第4题P2258子矩阵(搜索或dp)https:///problemnew/show/P2258NOIP2018年提高组第3题P5021赛道修建(搜索深度优先搜索)https:///problem-12392.htmlhttps:///problemnew/show/P5021第6章贪心算法(3课时)删数问题(NOIP1994)P1106删数问题https:///problemnew/show/P1106:8088/problem_show.php?pid=1321NOIP2010复赛普及组第2题接水问题/ch0109/15/NOIP1999年提高组第1题导弹拦截https:///problemnew/show/P1020https:///huashanqingzhu/p/6728652.html https:///qq_33927580/article/details/51853345 https:///Darost/article/details/52086240https:///yuyanggo/article/details/48739029NOIP2002提高组第1题均分纸牌P1031均分纸牌https:///problemnew/show/P1031NOIP2007普及组第2题_P1094纪念品分组https:///problem-12007.htmlhttps:///problemnew/show/P1094NOIP2008普及组第2题_P1056排座椅https:///problem-12008.htmlhttps:///problemnew/show/P1056NOIP2012年提高组第2题国王游戏(贪心、排序后列出)https:///problemnew/show/P1080NOIP2013年提高组第2题P1966火柴排队(逆序对、贪心、排序) https:///problem-12083.htmlhttps:///problemnew/show/P1966NOIP2010普及组第4题P1199三国游戏(贪心)https:///problemnew/show/P1199第7章分治算法(3课时)NOIP2001提高组第1题P1024一元三次方程求解/ch0204/7891/https:///problemnew/show/P1024NOIP2011年提高组第2题P1311选择客栈(二分查找)https:///problemnew/show/P1311NOIP2003普及组第4题P1045麦森数(分治、高精度运算)https:///problemnew/show/P1045第8章广度优先搜索算法(2-3课时)NOIP2002年提高组第2题P1032字串变换(BFS,字符串)https:///problemnew/show/P1032NOIP2013提高组第6题P1979华容道(广搜\最短路:图论)https:///problem-12212.htmlhttps:///problemnew/show/P1979第9章动态规划(15课时)第一节动态规划的基本模型1260:【例9.4】拦截导弹(NOIP1999):8088/problem_show.php?pid=1260NOIP2013普及组第3题P1982小朋友的数字https:///problemnew/show/P1982NOIP2003复赛普及组第2题_P1043数字游戏数字游戏(Game.cpp)https:///problemnew/show/P1043NOIP2006年提高组第2题P1064金明的预算方案(资源分配DP,构造) https:///problemnew/show/P1064NOIP2013普及组第3题P1982小朋友的数字(动态规划、子段和)https:///problemnew/show/P1982NOIP2007普及组第3题P1095守望者的逃离(动态规划或枚举)https:///problemnew/show/P1095NOIP2009普及组第4题P1070道路游戏(动态规划)https:///problemnew/show/P1070NOIP2004年提高组第3题P1091合唱队形(子序列DP)https:///problemnew/show/P1091第二节背包问题NOIP2018提高组第2题货币系统https:///problem-12391.htmlNOIP2006普及组第2题_P1060开心的金明题解https:///problemnew/show/P1060NOIP2005普及组第3题P1048采药(0/1背包)/ch0206/1775/https:///problem-12062.htmlhttps:///problemnew/show/P1048NOIP2001普及组第4题P1049装箱问题(0/1背包或枚举)https:///problemnew/show/P1049NOIP2014年提高组第3题P1941飞扬的小鸟(背包DP)https:///problem-12087.htmlhttps:///problemnew/show/P1941第三节动态规划经典题NOIP2000年提高组第2题P1018乘积最大(资源分配DP)https:///problemnew/show/P1018NOIP2000普及组第3题P1018乘积最大(划分动态规划)https:///problemnew/show/P1018NOIP2001年提高组第2题P1025数的划分(资源分配DP,多维状态DP)/ch0206/8787/https:///problemnew/show/P1025NOIP2001年提高组第3题统计单词个数(资源分配DP,字符串) https:///problemnew/show/P1026NOIP2005年提高组第2题P1052过河(子序列DP,贪心优化)https:///problemnew/show/P1052NOIP2010年提高组第2题P1541乌龟棋(动态规划优化)https:///problemnew/show/P1541NOIP2014年提高组第2题P1351联合权值(动态规划搜索图结构树形DP图的遍历遍历(图论),二次展开式)https:///problem-12086.htmlhttps:///problem-12210.htmlhttps:///problemnew/show/P1351NOIP2008普及组第3题P1057传球游戏(动态规划)https:///problemnew/show/P1057NOIP2012普及组第3题摆花(动态规划)https:///problem-12366.htmlhttps:///problemnew/show/P1077NOIP2002普及组第4题P1002过河卒(棋盘动态规划)https:///problemnew/show/P1002NOIP2008年提高组第3题P1006传纸条(多维状态DP动态规划图结构最短路网络流)https:///problem-12110.htmlhttps:///problemnew/show/P1006NOIP2000提高组第4题方格取数(多维状态DP)/ch0206/8786/https:///problem-12186.htmlhttps:///problemnew/show/P1004NOIP2002提高组第4题P1034矩形覆盖(动态规划/贪心/搜索剪枝) /ch0405/1793/https:///problemnew/show/P1034第3部分NOIP数据结构(19课时)第1章栈(3课时)NOIP2011普及组第4题P1310表达式的值(栈、表达式计算、递推) https:///problemnew/show/P1310第2章队列(3-5课时)NOIP2016普及组第3题海港(port)https:///problemnew/show/P2058第3章树(3课时)第一节树的概念第二节二叉树第三节堆及其应用NOIP2015普及组第4题P2672推销员(枚举、堆)https:///problemnew/show/P2672NOIP2001普及组第3题P1030求先序排列(树的遍历)https:///problemnew/show/P1030NOIP2004普及组第3题P1087FBI树(二叉树的遍历)https:///problemnew/show/P1087第4章图论算法(8课时)第一节基本概念第二节图的遍历第三节最短路径算法NOIP2002普及组第3题P1037产生数(最短路、高精度)https:///problemnew/show/P1037NOIP2012普及组第4题P1078文化之旅(搜索、最短路(图论)、动规) https:///problemnew/show/P1078NOIP2009年提高组第3题P1073最优贸易(最短路:图论)https:///problemnew/show/P1073NOIP2001提高组第4题P1027Car的旅行路线(最短路,实数处理)https:///problemnew/show/P1027NOIP2007提高组第4题P1099树网的核(最短路,树的直径)https:///problemnew/show/P1099第四节图的连通性问题第五节并查集NOIP2010年提高组第3题P1525关押罪犯(二分答案或并查集)https:///problemnew/show/P1525NOIP2017提高组第4题P3958奶酪(数据结构树结构并查集)https:///problem-12205.htmlhttps:///problemnew/show/P3958第六节最小生成树第七节拓朴排序与关键路径NOIP2013普及组第4题P1983车站分级(图论、拓扑排序) https:///problemnew/show/P19831390:食物链【NOI2001】:8088/problem_show.php?pid=1390NOIP2004年提高组第2题P1090合并果子(最优哈夫曼树,排序,贪心)https:///problemnew/show/P1090NOIP2013年提高组第3题P1967货车运输(最大生成树,最近公共祖先)https:///problemnew/show/P1967NOIP2018提高组第4题P5022旅行(搜索图结构)https:///problem-12397.htmlhttps:///problemnew/show/P5022NOIP2018提高组第6题P5024保卫王国(图结构)https:///problem-12399.htmlhttps:///problemnew/show/P50242、啊哈!算法--2014-06(35-50小时)第二阶段算法与数据结构提高1、《信息学奥赛一本通·提高篇》(80-100课时,不一定一次都讲完)第一部分基础算法第1章贪心算法NOIP2002提高组第1题P1031均分纸牌(贪心,模拟)https:///problemnew/show/P1031NOIP2010普及组第3题P1158导弹拦截(排序+枚举,贪心)https:///problemnew/show/P1158NOIP2012提高组第6题P1084疫情控制(二分答案,贪心,倍增)https:///problemnew/show/P1084第2章二分与三分NOIP2010年提高组第3题P1525关押罪犯(二分答案或并查集)https:///problemnew/show/P1525NOIP2008提高组第4题P1155双栈排序(枚举,贪心/二分图)https:///problemnew/show/P1155NOIP2015提高组第4题P2678跳石头(二分查找、二分答案)https:///problem-12198.htmlhttps:///problemnew/show/P2678第3章深搜的剪枝技巧NOIP2018普及组第4题对称二叉树(搜索树结构深度优先搜索)https:///problem-12396.htmlhttps:///problemnew/show/P5018NOIP2011年提高组第3题P1312Mayan游戏(深搜、剪支)https:///problemnew/show/P1312NOIP2015年提高组第3题P2668斗地主(分情况,剪枝)https:///problemnew/show/P2668NOIP2003提高组第4题P1041传染病控制(随机贪心/搜索剪枝)https:///problemnew/show/P1041NOIP2004提高组第4题P1092虫食算(搜索搜索与剪枝)https:///problem-12414.htmlhttps:///problemnew/show/P1092第4章广搜的优化技巧NOIP2017年普及组第3题棋盘(搜索搜索与剪枝广度优先搜索)https:///problemnew/show/P3956https:///problem-12336.htmlNOIP2009提高组第4题P1074靶形数独(搜索优化)https:///problemnew/show/P1074NOIP2010提高组第4题P1514引入水域(广搜+动态规划,判断有解和无解)https:///problemnew/show/P1514第二部分字符串算法第1章哈希表第2章KMP算法第3章Trie字典树第4章AC自动机NOIP2005提高组第4题P1054等价表达式(字符串,抽样检测,表达式) /practice/1686/https:///problemnew/show/P1054NOIP2008普及组第4题P1058立体图(字符输出)https:///problemnew/show/P1058NOIP2006普及组第3题P1061Jam的计数法(数学、字符串)https:///problemnew/show/P1061NOIP2007年提高组第2题字符串的展开(字符串模拟)https:///problem-11016.htmlhttps:///problemnew/show/P1098NOIP2003年提高组第2题P1039侦探推理(枚举,模拟,字符串)https:///problemnew/show/P1039NOIP2011普及组第2题_P1308统计单词数/ch0112/05/https:///problemnew/show/P1308第三部分图论第1章最小生成树第2章最短路径NOIP2016年提高组第3题P1850换教室(最短路/Dp)https:///problemnew/show/P1850NOIP2017年提高组第3题P3953逛公园(搜索图结构记忆化搜索最短路)https:///problem-12337.htmlhttps:///problemnew/show/P3953NOIP2014提高组第5题P1351联合权值(遍历,二次展开式)https:///problem-12086.htmlhttps:///problemnew/show/P1351第3章SPFA算法的优化第4章差分约束系统第5章强连通分量第6章割点和桥第7章欧拉回路第四部分数据结构第1章树状数组第2章RMQ问题第3章线段树NOIP2012提高组第5题P1083借教室(枚举、线段树、树状数组、二分) https:///problem-12069.htmlhttps:///problemnew/show/P1083NOIP2017提高组第6题P3960列队(数据结构平衡树线段树)https:///problem-12339.htmlhttps:///problemnew/show/P3960第4章倍增求LCANOIP2015提高组第6题P2680运输计划(Lca或线段树)https:///problem-12213.htmlhttps:///problemnew/show/P2680第5章树链剖分第6章平衡树Treap第五部分动态规划第1章区间类型动态规划NOIP2007年提高组第3题P1005矩阵取数游戏(区间DP,高精度)https:///problemnew/show/P1005第2章树型动态规划NOIP2003年提高组第3题P1040加分二叉树(树,区间DP)https:///problemnew/show/P1040第3章数位动态规划第4章状态压缩类动态规划NOIP2017提高组第5题P3959宝藏(动态规划搜索贪心状态压缩DP枚举)https:///problem-12340.htmlhttps:///problemnew/show/P3959NOIP2016提高组第6题愤怒的小鸟(状态压缩动态规划)https:///problemnew/show/P2831第5章单调队列优化动态规划NOIP2016提高组第5题蚯蚓(单调队列)https:///Mrsrz/p/7517155.htmlhttps:///m0_38083668/article/details/82557281NOIP2017普及组第4题P3957跳房子(数据结构动态规划单调队列队列)https:///problem-12338.htmlhttps:///problemnew/show/P3957第6章利用斜率优化动态规划NOIP2012年提高组第3题P1081开车旅行(离线深搜,动态规划、倍增)https:///problemnew/show/P1081NOIP2015提高组第5题P2679子串(Dp+滚动数组)https:///problemnew/show/P2679第六部分数学基础第1章快速幂第2章素数第3章约数第4章同余问题第5章矩阵乘法第6章组合数学NOIP2009年提高组第2题P1072Hankson的趣味题(初等数论,质因数,组合数学)https:///problemnew/show/P1072NOIP2006提高组第4题P10662^k进制数(动态规划/组合数学,高精度) https:///problemnew/show/P1066NOIP2011提高组第4题P1313计算系数(组合、二项式系数)/practice/4036/https:///problemnew/show/P1313NOIP2016提高组第4题P2822组合数问题(杨辉三角)https:///problemnew/show/P2822第7章博弈论NOIP2004普及组第4题P1088火星人(数学:排列、stl)https:///problemnew/show/P1088NOIP2009普及组第3题P1069细胞分裂(数论)https:///problemnew/show/P1069NOIP2000提高组第1题P1017进制转换(初等代数,找规律)https:///problemnew/show/P1017NOIP2001提高组第1题P1024一元三次方程求解(数学,枚举,实数处理) /ch0204/7891/https:///problemnew/show/P1024NOIP2003普及组第3题P1044栈(数学:卡特兰数)https:///problemnew/show/P1044NOIP2018年提高组第2题货币系统(数论)https:///problem-12391.htmlhttps:///problemnew/show/P5020NOIP2014年普及组复赛第3题螺旋矩阵(数学分析)https:///problem-12341.htmlhttps:///problemnew/show/P2239NOIP2015年普及组第3题求和(数学:数列)https:///problemnew/show/P2671NOIP2004普及组第4题P1088火星人(数学:排列、stl)https:///problemnew/show/P1088NOIP2005普及组第4题P1050循环(高精度运算、数论、快速幂) https:///problemnew/show/P1050NOIP2006普及组第4题P1062数列(数学:进制转换)https:///problemnew/show/P1062NOIP2007普及组第4题P1096$Hanoi$双塔问题(数学、高精度) https:///problemnew/show/P1096NOIP2016普及组第4题P2119魔法阵(数学分析、枚举)https:///problemnew/show/P2119NOIP2002年提高组第3题P1033自由落体(数学,物理,模拟,实数处理) https:///problemnew/show/P1033NOIP2005年提高组第3题P1053篝火晚会(置换群,贪心)https:///problemnew/show/P1053NOIP2012提高组第4题P1082同余方程(数论、递归,扩展欧几里得)https:///problemnew/show/P1082NOIP2011提高组第5题P1314聪明的质监员(部分和优化)/practice/4037/https:///problemnew/show/P1314NOIP2013提高组第5题P1970花匠(序列)https:///problem-12072.htmlhttps:///problemnew/show/P1970NOIP2018提高组第5题P5023填数游戏(DP)https:///problem-12398.htmlhttps:///problemnew/show/P50232、NOIP历年真题讲解(30-50小时)---包括初赛和复赛3、《骗分导论》(推荐指数:5颗星)--电子书(可以作为学习的参考资料)第三阶段算法与数据结构高级专题(选择性学习)1、信息学奥赛之数学专题2、高级数据结构(C++版)3、动态规划专题注:上面的内容也可能要交叉的进行讲解在线题库:1、OpenJudge在线题库/2、信息学奥赛一本通在线评测系统:8088/3、洛谷https:///4、啊哈编程/tiku/5、《信息学奥赛一本通(提高篇)》在线评测OJhttps://loj.ac/注:本系列课程将根据行业发展状况,及时优化调整课程内容,具体课程设置以实际为准。

NOIP2011题解

NOIP2011题解
3.Bus 观光公交 算法 1: 对于 10%的数据 K=0,即没有加速器的情况。设 time[i]表示公交到 i 景点的时间, num[i]表示 i 为起点的所有乘客达到 i 景点的最晚时间。则 Time[i]=max(time[i-1],num[i-1])+d[i-1] 则答案为∑time[b[i]]-t[i] i∈[1,m] 复杂度:O(n) 期望分数 10 分 算法 2: 对于 20%的数据 K=1,即只能使用一个加速器,由于 N<=1000,于是我们可以依次 尝试减少每一个 d[i],然后继续执行算法 1。 复杂度:O(n^2) 期望分数 20 分 若同时结合算法 1 可以得到 30 分 算法 3: 观察∑time[b[i]]-t[i] i∈[1,m]等价于∑time[b[i]]-∑t[i] i∈[1,m],由于∑ t[i]是定值,所以我们需要让∑time[b[i]]尽可能小。 观察 Time[i]=max(time[i-1],num[i-1])+d[i-1],若我们使 d[i-1]减少 1,则
3 / 16
复杂度:O(n^2m) 期望分数 30 分 算法 3:
对于算法 1,我们需要依次枚举每一个区间,后枚举每一个区间内的所有矿石,由 于区间可能重复的非常多,所以我们做了很多“无用功”。对于当前参数 w,我们 可以预处理出一个前缀和 cnt[i]表示前 i 个矿石 w[i]>=w 的个数,sum[i]表示前 i 个矿石 w[i]>=w 的价值和,则递推式为: 边界条件:cnt[0]=0 sum[0]=0 若 w[i]>=w 则
2. Hotel 选择客栈 按照题目要求的进行模拟,每次选择两个进行判断,若满足以下条件: (1)两个客栈颜色相同 (2)两个客栈中间(包含两个客栈)中存在一家咖啡店最低消费小于等于 p 的 即算作一个满足条件的解,题目要求求出解的个数。 算法 1: 枚举两个客栈,判断颜色是否相同,并顺序枚举求两个客栈的最小值,看是否小于 等于 p。 复杂度 O(N^3) 期望得分 30-40 分 算法 2: 对于求两个客栈的最小值问题,为经典的 RMQ 问题,可以用线段树维护一段区间的 最小值。 复杂度 O(NlogN+N^2logN) 期望得分 50 分 算法 3: 对于思路 2,可以用 ST 算法 O(1)时间求出两个区间的最小值。 复杂度 O(NlogN+N^2) 期望得分 50-60 分 具体请参考程序 2 算法 4: 我们发现这个 RMQ 问题有很强的特殊性,由于我们要枚举所有的区间,按照双重循

山东2011——2012年NOIP提高组一等奖分布表-莱阳第九中学

山东2011——2012年NOIP提高组一等奖分布表-莱阳第九中学
选材广泛,多途径,一边辅导一边筛选 辅导时间合理安排 前期教师讲解,后期自主学习,考前集训
六、交流学习
1、山东省夏令营 2、培训机构 3、论坛 4、在线题库
七、资料
NOI官方网站: 山东计算机学会: 信息学初学者之家:/bbs 信息学奥林匹克竞赛网络平台: 中小学电脑报·NOI导刊/web/Noi.aspx
1.结构化程序设计的基本概念 2.阅读理解程序的基本能力 3.具有将简单问题抽象成适合计算机解决的模型的基本能力 4.具有针对模型设计简单算法的基本能力 5.程序流程描述(自然语言/伪码/NS图/其他) 6.程序设计语言(PASCAL/C/C++)- 2003仍允许BASIC
1.初等算法(计数、统计、数学运算等) 2.排序算法(冒泡法、插入排序、合并排序、快速排序) 3.查找(顺序查找、二分法) 4.回溯算法
中国计算机学会数次向教育部提出竞赛保送加分制度的改革方案。
2009年媒体数次爆光高考加分舞弊事件,2009被称为“加分年”。
2010年教育部出台教育发展规划的草案,要扩大高校的自主招生。
2012年中国计算机学会又通报三个省份因作弊判0分::江西省12名选手(来自3 所学校)、陕西省18名选手(来自5所学校)、山东省4名选手(来自4所学校)。
11月第三个周,周五全天报到,抽签,周五晚领队教练会议,提高组30分钟试机。 周六上午提高组(身份证)复赛,下午普及组复赛,周日上午提高组复赛,每天的测试 数据按时上传CCF。
8-10天后,ccf公布将提高组成绩。对成绩有异议的,一般在公布4天内提出申诉。 申诉期结束4天后公布一等奖全国最低分数线和各省获奖名单。
获奖年级 高二 高二 高二 高一 高三 高三 高一 高三 高一
奖项 二等奖 二等奖 二等奖 二等奖 一等奖 一等奖 二等奖 二等奖 二等奖

NOIP2011提高组初赛试题_C++含答案

NOIP2011提高组初赛试题_C++含答案

NOIP2011第十七届全国青少年信息学奥林匹克联赛初赛试题(提高组 C++语言两小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共10题,每题1.5分,共计15分。

每题有且仅有一个正确选项。

)1.在二进制下,1011001 + ()= 1100110。

A.1011 B .1101 C.1010 D.11112.字符“A”的ASCII码为十六进制41,则字符“Z”的ASCII码为十六进制的()。

A.66 B.5A C.50 D.视具体的计算机而定3.右图是一棵二叉树,它的先序遍历是()。

A.ABDEFC B.DBEFAC C.DFEBCA D.ABCDEF4.寄存器是()的重要组成部分。

A.硬盘B.高速缓存C.内存D.中央处理器(CPU)5.广度优先搜索时,需要用到的数据结构是()。

A.链表B.队列C.栈D.散列表6.在使用高级语言编写程序时,一般提到的“空间复杂度”中的空间是指()。

A.程序运行时理论上所占的内存空间B.程序运行时理论上所占的数组空间C.程序运行时理论上所占的硬盘空间D.程序源文件理论上所占的硬盘空间7.应用快速排序的分治思想,可以实现一个求第K大数的程序。

假定不考虑极端的最坏情况,理论上可以实现的最低的算法时间复杂度为()。

A.O (n2) B.O (n log n ) C.O (n) D.O (1)8.为解决web应用中的不兼容问题,保障信息的顺利流通,()制定了一系列标准,涉及HTML、XML、CSS等,并建议开发者遵循。

A.微软B.美国计算机协会(ACM)C.联合国教科文组织D.万维网联盟(W3C)9.体育课的铃声响了,同学们都陆续的奔向操场,按老师的要求从高到低站成一排。

每个同学按顺序来到操场时,都从排尾走到排头,找到第一个比自己高的同学,并站在他的后面。

这种站队的方法类似于()算法。

A.快速排序B.插入排序C.冒泡排序D.归并排序10.1956年()授予肖克利(William Shockley)、巴丁(John Bardeen)和布拉顿(Walter Brattain)A.诺贝尔物理学奖B.约翰·冯·诺依曼奖C.图灵奖D.高德纳奖(Donald E. Knuth Prize)二、不定项选择题(共10题,每题1.5分,共计15分。

2011第17届NOIP试题及解析

2011第17届NOIP试题及解析

第十七届NOIP2011 提高组初赛试题+答案+解析(pascal)一、单项选择题(共10题,每题1.5分,共15分,每题有且仅有一个正确选项。

)1. 在二进制下,1011010+()=1100111。

A.1011B.1101C.1010D.1111答案:B解析:简单的二进制运算,炮灰都会。

2. 字符“A”的ASCII码为十六进制41,则字符“Z”的ASCII码为十六进制的()。

A.66 B.5A C.50 D.视具体的计算机而定答案:B解析:每年必考进制转换题。

背得ASCII码的可以直接算出Z的码然后转回16进制。

像我不背得的就把十六进制的41转回十进制,4*16+1=65,然后+25得90,再转成16进制得5A。

3. 右图是一棵二叉树,它的先序遍历是()。

(我就不画图了= =带鱼语口述一下:根是A,左右子树分别为B和C,B的左右子树分别为D和E,E的右子树为F)A.ABDEFC B.DBEFAC C.DFEBCA D.ABCDEF答案:A解析:每年必考树的遍历题。

先序遍历就是先根遍历,就是先根,再左右子树的遍历。

然后就ABDEFC出来了。

从这个解析可以看出这个解析是新手向的解析-。

-4. 寄存器是()的重要组成部分。

A. 硬盘B. 高速缓存C. 内存D. 中央处理器(CPU)答案:D解析:每年必考硬件知识题。

寄存器在CPU里。

5. 广度优先搜索时,需要用到的数据结构是()。

A. 链表B. 队列C. 栈D. 散列表答案:B解析:数据结构题。

广搜需要存每一层的一大堆东西,继续向下一层搜时需要用到,所以要用存取方便的队列。

链表取数不便,栈是深搜用的,散列表就是hash表,和宽搜没啥必然联系。

6. 在使用高级语言编写程序时,一般提到的“空间复杂度”中的“空间”是指()A. 程序运行时理论上所占的内存空间B. 程序运行时理论上所占的数组空间C. 程序运行时理论上所占的硬盘空间D. 程序源文件理论上所占的硬盘空间答案:A解析:常识题。

NOIP大纲整理:历年2000-2016NOIP提高组题目分析

NOIP大纲整理:历年2000-2016NOIP提高组题目分析

2005-A
谁拿了最多奖学金
2005-B
过河
2005-C
篝火晚会
2005-D
等价表达式
2006-A
能量项链
2006-B
金明的预算方案
2006-C
作业调度方案
拓扑排序(图论),递推 枚举,模拟,字符串 树,区间 DP 随机贪心/搜索剪枝 模拟 最优哈夫曼树,排序,贪心 子序列 DP 搜索剪枝,模拟 模拟,字符串 子序列 DP,贪心优化 置换群,贪心 字符串,抽样检测,表达式 区间环 DP 资源分配 DP,构造 模拟
NOIP 大纲整理:历年 2000-2016NOIP 提高组题目分析
年份
题目名称
考查内容
2000-2016 年 NOIP 提高组复赛题目
2000-A
进制转换
初等代数,找规律
2000-B
乘积最大
资源分配 DP
2000-C
单词接龙
DFS,字符串,模拟
2000-D
方格取数
多维状态 DP
2001-A
一元三次方程求解
2011-D2C 观光公交
2012-D1A Vigenere 密码
2012-D1B 国王游戏
2012-D1C 开车旅行
2012-D2A 同余方程
2012-D2B 借教室
2012-D2C 疫情控制
2013-D1A 转圈游戏
二分答案或并查集 广搜+动态规划,判断有解和无解 循环队列 二分查找 深搜、剪支 组合、二项式系数 部分和优化 递推分析、贪心 左偏移位 贪心、排序后列出 离线深搜,动态规划、倍增 数论、递归,扩展欧几里得 枚举、线段树、树状数组、二分 二分答案,贪心,倍增 快速幂

2011noip复赛解题报告day1

2011noip复赛解题报告day1

DAY11.铺地毯(carpet.cpp/c/pas)【数据范围】对于 30%的数据,有n≤2;对于 50%的数据,0≤a, b, g, k≤100;对于 100%的数据,有0≤n≤10,000,0≤a, b, g, k≤100,000。

题解:看到之后呢第一眼有一种刷图的感觉。

然后果断放弃。

1000*1000的表格刷起来不超时才怪。

于是乎。

读入。

从后往前刷,直到第一个有盖到查询点的布停止时间 0(n)~0(2n)算法模拟2.选择客栈(hotel.cpp/c/pas)【数据范围】对于 30%的数据,有n≤100;对于 50%的数据,有n≤1,000;对于 100%的数据,有2≤n≤200,000,0<k≤50,0≤p≤100, 0≤最低消费≤100。

题解:怎么说呢。

这道题看完之后就想到排列组合,但是发现重复的情况很多种不过因为一个区间只要出现一次就可以了,那么。

就有一个比较简单的想法,从前往后枚举可以进入的咖啡厅,将它之前的一种颜色的旅店数量*它之后的旅店数量,如果是把咖啡厅当场旅店的情况就是它之前的旅店数量(包括他自己)*他之后的旅店数量(包括他自己)-1.ps:每次枚举就将它之前的旅店(包括它自己)去掉。

然后累加起来。

时间0(KN)算法:贪心?记忆化搜索?咱不懂。

3.Mayan 游戏(mayan.cpp/c/pas)【数据范围】对于 30%的数据,初始棋盘上的方块都在棋盘的最下面一行;对于 100%的数据,0 < n≤5。

题解:。

这题大概应该是DFS加上疯狂减枝;不过呢。

如果是朝着30%进发的话。

朴素的DFS就可以过。

再不过。

吾辈果断选择打表+输出(-1)了。

还不过。

没打完。

OTZ时间0(1)算法:骗分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

NOIP2011铺地毯
题目描述
为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯,一共有n张地毯,编号从 1 到n。

现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。

地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。

注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。

输入
输入共n+2行。

第一行有一个整数n,表示总共有n张地毯。

接下来的n行中,第i+1行表示编号i的地毯的信息,包含四个正整数a,b,g,k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标(a,b)以及地毯在x轴和y轴方向的长度。

第n+2 行包含两个正整数x 和y,表示所求的地面的点的坐标(x,y)。

输出
输出共1 行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖则输出-1。

样例输入
3
1 0
2 3
0 2 3 3
2 1
3 3
2 2
样例输出 3。

相关文档
最新文档