NOIP2014普及组复赛试题讲解(c++版本)
NOIP2014初赛普及组C题目及答案
第二十届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题2014年一、快单项选择题 (共 20题,每题 1.5 分,共计 30分;每题有且仅有一个正确选项 )1.以下哪个是面向对象的高级语言 ()。
2. 1TB 代表的字节数是()。
A.2的10次方B.2的20次方C.2的30次方D.2的40次方 3•二进制数 00100100 和 00010101 的和是()。
A.00101000B.001010100C.01000101D.001110014•以下哪一种设备属于输出设备 ()。
A.扫描仪B.键盘C.鼠标D.打印机5•下列对操作系统功能的描述最为完整的是 ()。
C.控制和管理计算机系统的各种硬件和软件资源的使用 6. CPU 、存储器、I/O 设备是通过()连接起来的。
A.接口 B.总线 C.控制线D.系统文件 7•断电后会丢失数据的存储器是 ()。
A.RAMB.ROMC.硬盘D.光盘8•以下哪一种是属于电子邮件收发的协议 ()。
9•下列选项中不属于图像格式的是 ()。
A. JPEG 格式B.TXT 格式C.GIF 格式10.链表不具有的特点是()。
A.不必事物估计存储空间C.插入删除不需要移动元素B. 可随机访问任一元素D.所需空间与线性表长度成正比11.下列各无符号十进制整数中,能用八位二进制表示的数中最大的是 A.296B.133C.256D.19912•下列几个32位IP 地址中,书写错误的是()。
A.162.105.135.27B.192.168.0.1C.256.256.129.1D.10.0.0.113•要求以下程序的功能是计算: s=1+1/2+1/3+...+1/10 。
#include <iostream> using namespace std; int main() {int n; float s; s = 1.0;for(n = 10; n > 1; n--) s = s + 1 / n; cout << s << endl; return 0;}程序运行后输出结果错误,导致错误结果的程序行是 ( )。
NOIP(2014)第二十届全国青少年信息学奥林匹克联赛初赛(普及组试题及答案).
第二十届全国青少年信息学奥林匹克联赛初赛(普及组 Pascal语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一.单项选择题(共20题,每题1.5分,共计30分。
每题有且仅有一个正确答案。
)1、以下哪个是面向对象的高级语言()。
A. 汇编语言B. C++C. FortranD. Basic2、1TB代表的字节数量是()。
A.2的10次方B. 2的20次方C. 2的30次方D. 2的40次方3、二进制数00100100和00010101的和是。
A.00101000B.001010100C.01000101D.001110014、以下哪一种设备属于输出设备()A.扫描仪B.键盘C.鼠标D.打印机5、下列对操作系统功能的描述最为完整的是()A.负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将源程序编译成目标程序6.CPU、存储器、I/O设备是通过()连接起来的。
A. 接口B.总线C.控制线D.系统文件7、断电后会丢失数据的存储器是()。
A.RAMB.ROMC.硬盘D.光盘8、以下哪一种是属于电子邮件收发的协议()。
A.SMTPB.UDPC.P2PD.FTP9、下列选项中不属于图像格式的是()A.JPG格式B. TXT格式C.GIF格式D.PNG格式10.链表不具有的特点是()A.不必事先估计存储空间 B.可随机访问任一元素C.插入删除不需要移动元素 D.所需空间与线性表长度成正比11、下列各无符号十进制整数中,能用八位二进制表示的数中最大的是()。
A.296 B.133 C.256 D.19912.下列几个32位IP地址中,书写错误的是()。
A.162.105.130.27B.192.168.0.1C.256.256.129.1D.10.0.0.113.要求以下程序的功能是计算:s=1+1/2+1/3+……+1/10。
NOIP2014初赛普及组C++题目及答案
NOIP2014初赛普及组C++题目及答案第二十届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题2014年一、快单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)⒈以下哪个是面向对象的高级语言( )。
A.汇编语言B.C++C.FortranD.Basic⒉1TB代表的字节数是( )。
A.2的10次方B.2的20次方C.2的30次方D.2的40次方⒊二进制数00100100和00010101的和是( )。
A.00101000B.001010100C.01000101D.00111001⒋以下哪一种设备属于输出设备( )。
A.扫描仪B.键盘C.鼠标D.打印机⒌下列对操作系统功能的描述最为完整的是( )。
A.负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将没有程序编译成目标程序⒍CPU、存储器、I/O设备是通过( )连接起来的。
A.接口B.总线C.控制线D.系统文件⒎断电后会丢失数据的存储器是( )。
A.RAMB.ROMC.硬盘D.光盘⒏以下哪一种是属于电子邮件收发的协议( )。
A.SMTPB.UDPC.P2PD.FTP⒐下列选项中不属于图像格式的是( )。
A.JPEG格式B.TXT格式C.GIF格式D.PNG格式⒑链表不具有的特点是( )。
A.不必事物估计存储空间B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比⒒下列各无符号十进制整数中,能用八位二进制表示的数中最大的是( )。
A.296B.133C.256D.199⒓下列几个32位IP地址中,书写错误的是( )。
A.162.105.135.27B.192.168.0.1C.256.256.129.1D.10.0.0.1⒔要求以下程序的功能是计算:s=1+1/2+1/3+...+1/10。
#include <iostream>using namespace std;int main(){int n;float s;s = 1.0;for(n = 10; n > 1; n--)s = s + 1 / n;cout << s << endl;return 0;}程序运行后输出结果错误,导致错误结果的程序行是( )。
noip2014普及组初赛试题+答案
NOIP 2014 第二十届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2014 年10月11日14:30〜16:30选手注意:1、 试题纸共有 5页,答题纸共有 2页,满分100分。
请在答题纸上作答,写在试题 纸上的一律无效。
2、 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
A.负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将没有程序编译成目标程序6. CPU 、存储器、 A.接口 B.总线 C.控制线7•断电后会丢失数据的存储器是 A.RAM B.ROM C.硬盘8•以下哪一种是属于电子邮件收发的协议12•下列几个32位IP 地址中,书写错误的是 ( )。
A.162.105.135.27B.192.168.0.1C.256.256.129.1 13•要求以下程序的功能是计算: s=1+1/2+1/3+...+1/10 #in elude <iostream>一、单项选择题(共20题,每题1.51.以下哪个是面向对象的高级语言(A.汇编语言B.C++C.Fortran2. 1TB 代表的字节数是()。
A.2的10次方 B.2的20次方分,共计 )。
D.Basic30分;每题有且仅有一个正确选项 )C.2 的 30 的和是( A.00101000B.001010100C.010001014•以下哪一种设备属于输出设备( )。
A.扫描仪B.键盘C.鼠标D.打印机5•下列对操作系统功能的描述最为完整的是 ( 次方 D.2的40次方)。
D.00111001I/O 设备是通过()连接起来的。
D.系统文件 (A.SMT PB.UD PC.P2PD.FT P9•下列选项中不属于图像格式的是(A.JPEG 格式B.TXT 格式C.GIF 10.链表不具有的特点是( A.不必事物估计存储空间 C.插入删除不需要移动元素11•下列各无符号十进制整数中,A.296B.133C.256 )。
NOIP2014 题解
NOIP2014 题解D1T1 : 生活大爆炸版石头剪刀布(rps)100% : 模拟。
另一种方法,可以先求出na,nb 的最小公倍数l ,在[1,l]的区间里模拟,对于剩下的部分,显然是循环了若干次[1,l]内的胜负情况,并剩余了一小部分,于是只要把两人的分数各自乘n div l,再对剩下的部分模拟即可。
复杂度 : O(na*nb)D1T2 : 联合权值(linp)30% : 穷举三个点,判断是否相邻,再统计权值并更新答案。
复杂度 : O(n^3)60% : 穷举一个点,并以该点为起点搜索,查找距离为2的结点,统计后更新答案。
复杂度 : O(n^2)100% : 记][i fa 为结点i 的父亲, ][i pow 是i 的权值。
题目给出了n 个点,n-1条边,那么这是一棵树。
那么考虑树形dp 。
很显然,距离为2的点在一棵树中有且仅有两种不同的位置,第一种是结点i 与结点]][[i fa fa ,第二种则是结点i 与结点j ,其中][][j fa i fa =。
记∑=][][j pow i sum,]}[{]max[j pow Max i =,其中][j fa i =。
那么有∑∑-+=])[]][[(*][]][[*][*2_j pow j fa sum j pow i fa pow i sum sum ans ,]}[*][]],[[*]{max[max _i y i x i fa pow i Max ans =,其中][],[i y i x 是i 的子节点中权值最大的两个。
复杂度 : O(n)D1T3 : 飞扬的小鸟(bird)30% : 搜索。
70% : 考虑动态规划,记],[j i f 为达到坐标),(j i 至少要点击几次屏幕。
则有]])1[,1[,]]1[*,1[(],[-+-+---=i y j i f k i x k j i f Min j i f ,注意考虑边界情况。
复杂度 : O(nm^2)100% : 上述动态规划超时的原因在于转移复杂度太高,如果能将转移复杂度降为O(1),那么就可以轻松将此题AC ,仔细想想发现对于所有可以用于更新],[j i f 的状态的高度都与j 同余(mod x[i-1]),那么在实际实现上述动态规划时,我们可以先穷举同余系,并以高度从低到高进行动态规划,在同一同余系中,记一个变量temp 为已经访问的状态中可以用于更新的最小值,每穷举到一个新的状态,把temp 更新为]),1[,1(j i f temp Min -+,并且只用temp+1更新其他状态。
noip2014普及组初赛试题+答案
NOIP2014第二十届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2014年10月11日14:30~16:30选手注意:1、试题纸共有5 页,答题纸共有2 页,满分100 分。
请在答题纸上作答,写在试题纸上的一律无效。
2、不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)⒈以下哪个是面向对象的高级语言( )。
A.汇编语言B.C++C.FortranD.Basic⒉1TB代表的字节数是( )。
A.2的10次方B.2的20次方C.2的30次方D.2的40次方⒊二进制数00100100和00010101的和是( )。
A.00101000B.001010100C.01000101D.00111001⒋以下哪一种设备属于输出设备( )。
A.扫描仪B.键盘C.鼠标D.打印机⒌下列对操作系统功能的描述最为完整的是( )。
A.负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将没有程序编译成目标程序⒍CPU、存储器、I/O设备是通过( )连接起来的。
A.接口B.总线C.控制线D.系统文件⒎断电后会丢失数据的存储器是( )。
A.RAMB.ROMC.硬盘D.光盘⒏以下哪一种是属于电子邮件收发的协议( )。
A.SMTPB.UDPC.P2PD.FTP⒐下列选项中不属于图像格式的是( )。
A.JPEG格式B.TXT格式C.GIF格式D.PNG格式⒑链表不具有的特点是( )。
A.不必事物估计存储空间B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比⒒下列各无符号十进制整数中,能用八位二进制表示的数中最大的是( )。
A.296B.133C.256D.199⒓下列几个32位IP地址中,书写错误的是( )。
A.162.105.135.27B.192.168.0.1C.256.256.129.1D.10.0.0.1⒔要求以下程序的功能是计算:s=1+1/2+1/3+...+1/10。
NOIP2014提高组复赛试题(C语言版)
CCF全国信息学奥林匹克联赛(NOIP2014)复赛提高组day1(请选手务必仔细阅读本页内容)一.题目概况中文题目名称生活大爆炸版石头剪刀布联合权值飞扬的小鸟英文题目与子目录名rps link bird 可执行文件名rps link bird输入文件名rps.in link.in bird.in 输出文件名rps.out link.out bird.out 每个测试点时限1秒1秒1秒测试点数目101020每个测试点分值10105附加样例文件有有有结果比较方式全文比较(过滤行末空格及文末回车)题目类型传统传统传统运行内存上限128M128M128M二.交源程序文件名对于C++语言rps.cpp link.cpp bird.cpp 对于C语言rps.c link.c bird.c 对于pascal语言rps.pas link.pas bird.pas三.编译命令(不包含任何优化开关)对于C++语言g++-o rps rps.cpp–lm g++-o link link.cpp–lmg++-o bird bird.cpp–lm对于C语言gcc-o rps rps.c–lm gcc-o link link.c–lm gcc-o bird bird.c–lm对于pascal语言fpc rps.pas fpc link.pas fpc bird.pas注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm)64x2Dual Core CPU5200+,2.71GHz,内存2G,上述时限以此配置为准。
4、只供Linux格式附加样例文件。
5、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。
1.生活大爆炸版石头剪刀布(rps.cpp/c/pas)【问题描述】石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。
NOIP2014普及组复赛解题报告
Prolem 1 珠心算测试(count)这道题其实很简单,意思就是说给你一些数a1,a2,a3,a4...a n,然后让你回答有多少个A+B=C(A ≠ B ≠ C)满足(回答C的数量,而不是等式的数量)方法一那么有一种很明显的做法就是三层循环枚举C、A、B,注意:C是在最外层,若找到了一个A和一个B,满足上述等式,则C是一个符合要求的解,这时ans++,并且退出当前枚举,枚举下一个C,这种算法的时间复杂度是O(N3)而我当时没想到这个算法,因为有更好用而且简单更不容易出错的解法,方法二两重循环,分别枚举i=1...n,j=i+1...n,如果ai+aj这个数在集合中存在,那么you[a i+a j]←true,然后再从a1到a n做一次扫描,只要you[a i],ans++这个算法的好处在于它很好写,不用退出什么的,也不用注意循环的顺序,而且时间复杂度是O(N2)代码(方法2):在此征求一下大神的意见,如有更快的做法,敬请奉上小结:这道题很简单,但很多人没有做对的原因就是没有好好理解题意,但是根本原因其实还在于心态太骄傲了,认为是第一题就可以轻视,这样是不好的,水题我们更要做好啊,你想想同样是100分,这100分多么好拿,所以是水题、越该放平心态,细心地做。
当时我正是由于重视(2013年第一题爆零的教训),用了整整15分钟才做好,最后得了100分Problem 2 比例简化这道题目是说,给定A和B,求解一组A’和B’,满足以下条件:A′B′−AB≥00<A′,B′≤LA′和B′互质首先,想一个总体的框架:我们发现L≤100,因此可以枚举A′和B′,然后判断是否A’B’满足上述条件,并且打擂台求比值最小的一组就行了,打擂台的复杂度是O(1)。
设验证的复杂度为O(k),则总的算法的复杂度为O(kL2),其中L2是104,所以我们只要保证k的大小在100以内就一定没有问题。
现在要求两个分数的差值,该怎么办呢?高精除!很多人一下就想到了,当时我在赛场上就是这么想的,但是又仔细一考虑。
NOIP2014初赛普及组试题知识点分析
第二十届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题2014年一、快单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)1.以下哪个是面向对象的高级语言()。
A.汇编语言B.C++C.FortranD.Basic【知识点】计算机语言基础常识【掌握度】了解【知识分析】面向对象语言是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。
语言中提供了类、继承等成分,有识认性、多态性、类别性和继承性四个主要特点。
而面向对象只是一种编程思想。
汇编语言:低级语言C++:面向对象高级语言Fortran:高级语言Basic:高级语言⒉1TB代表的字节数是()。
A.2的10次方B.2的20次方C.2的30次方D.2的40次方【知识点】计算机存储进制换算【掌握度】掌握【知识分析】1KB = 1024B = 210B1MB = 1024KB = 220B1GB = 1024MB = 230B1TB = 1024GB = 240B⒊二进制数00100100和00010101的和是()。
A.00101000B.001010100C.01000101D.00111001【知识点】二进制运算【掌握度】掌握⒋以下哪一种设备属于输出设备()。
A.扫描仪B.键盘C.鼠标D.打印机【知识点】计算机组成原理【掌握度】掌握【知识分析】硬件组成:控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
存储器(Memory):存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
输入设备(Input system):输入设备是计算机的重要组成部分,输入设备与输出设备合称为外部设备,简称外设,输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。
NOIP普及组C题目及答案
第十届全国青少年信息学奥林匹克联赛初赛试题2005(普及组C 语言二小时完成)• •全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效•• 一.选择一个正确答案代码( A/B/C/D/E ),填入每题的括号内(每题1.5分,共30分)1. 在字符串"ababacbabcbdecced ”中出现次数最多的字母出现了()次。
A.6B.5C.4D.3E.2 2. 设全集 l={a,b,c,d,e,f,g,h} ()。
A.{c,e}B.{d,e}C.{e}D.{c,d,e}E.{d,f} 3. 和十进制数23的值相等的二进制数是()。
A.10110B.11011C.11011D.10111E.10011 4. 完全二叉树的结点个数为11,则它的叶结点个数为()。
A.4B.3C.5D.2E.6 5. 平面上有五个点A (5,3),B (3,5),C (2,1),D (3,3),E (5,1)。
以这五点作为完全图 G 的顶点,每两点之间的 直线距离是图G 中对应边的权值。
以下哪条边不是图 G 的最小生成树中的边()。
A.AD6.Intel 的首颗16位处理器是()。
A.80887. 处理器A 每秒处理的指令数是处理器 B 的2倍。
某一特定程序 P 分别编译为处理器 A 和处理器B 的指令,编 译结果处理器A 的指令数是处理器B 的 4倍。
已知程序P 在处理器A 上执行需要1个小时,那么在输入相同的 情况下,程序P 在处理器B 上执行需要()小时。
A.4B.2C.1D.1/2E.1/4 8.以下哪个不是计算机的输出设备()。
A.音箱 B.显示器 C.打印机 D.扫描仪 E.绘图仪 9. 下列活动中不属于信息学奥赛的系列活动的是()。
A.NOIPB.NOIC.IOID.冬令营E.程序员等级考试 10. 以下断电之后仍能保存数据的是()。
A.硬盘B.寄存器C.显存D.内存E.高速缓存 11. 以下哪个软件不是即时通信软件()。
2019年noip2014普及组复赛题解
2019年noip2014普及组复赛题解1.珠心算测验注意看清题意:其中有多少个数,恰好等于集合中另外两个(不同的)数之和。
这样的题意加上100的规模,建议暴力3个for: #include#include#include#includeusing namespace std;int n;int a[105];int main(){freopen("","r",stdin);freopen("","w",stdout);scanf("%d",&n);for(int i=1; i<=n; i++){scanf("%d",&a[i]);}sort(a+1,a+n+1);int res=0;for(int i=1; i<=n; i++){int ok=0;for(int j=1; j<=n && !ok; j++) if(j!=i){for(int k=1; k<=n && !ok; k++) if(a[k]!=a[j]){if(a[j]+a[k]==a[i]) ok=1;}}res+=ok;}printf("%d\n",res);return 0;}2.比例简化L很小,还是枚举,然后比较的话建议用乘法比较,避免精度问题:#include#include#includeusing namespace std;int A,B,L;int gcd(int a,int b){if(b==0) return a;return gcd(b,a%b);}int main(){freopen("","r",stdin);freopen("","w",stdout);scanf("%d%d%d",&A,&B,&L);int ba=1000000,bb=1;for(int i=1; i<=L; i++){for(int j=1; j<=L; j++){if(gcd(i,j)==1 && i*B>=j*A){if(ba*j>=bb*i){ba=i, bb=j;}}}}printf("%d %d\n",ba,bb);return 0;}3.螺旋矩阵没一圈的数量有规律的,最外面一圈(n-1)*4,然后每往里n-2,直到后要么只有一个点,要么4个点。
noip2014普及组初赛试题+答案
NOIP2014第二十届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2014年10月11日14:30~16:30选手注意:1、试题纸共有5 页,答题纸共有2 页,满分100 分。
请在答题纸上作答,写在试题纸上的一律无效。
2、不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)⒈以下哪个是面向对象的高级语言( )。
A.汇编语言B.C++C.FortranD.Basic⒉1TB代表的字节数是( )。
A.2的10次方B.2的20次方C.2的30次方D.2的40次方⒊二进制数00100100和00010101的和是( )。
A.00101000B.001010100C.01000101D.00111001⒋以下哪一种设备属于输出设备( )。
A.扫描仪B.键盘C.鼠标D.打印机⒌下列对操作系统功能的描述最为完整的是( )。
A.负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将没有程序编译成目标程序⒍CPU、存储器、I/O设备是通过( )连接起来的。
A.接口B.总线C.控制线D.系统文件⒎断电后会丢失数据的存储器是( )。
A.RAMB.ROMC.硬盘D.光盘⒏以下哪一种是属于电子邮件收发的协议( )。
A.SMTPB.UDPC.P2PD.FTP⒐下列选项中不属于图像格式的是( )。
A.JPEG格式B.TXT格式C.GIF格式D.PNG格式⒑链表不具有的特点是( )。
A.不必事物估计存储空间B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比⒒下列各无符号十进制整数中,能用八位二进制表示的数中最大的是( )。
A.296B.133C.256D.199⒓下列几个32位IP地址中,书写错误的是( )。
A.162.105.135.27B.192.168.0.1C.256.256.129.1D.10.0.0.1⒔要求以下程序的功能是计算:s=1+1/2+1/3+...+1/10。
信息学奥赛NOIP普及组历届试题分析演示文稿
金币 (noip2015普及组第一题)
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两 天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每 天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;
这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在 之后的连续N+1天里,每天收到N+1枚金币。 请计算在前K天里,骑士一共获得了多少金币。
输入格式: 输入文件只有1行,包含一个正整数K,表示发放金币的天数。
输出格式:
输出文件只有1行,包含一个正整数,即骑士收到的金币数。 输入输出样例
输入样例:
1000
输出样例: 29820
第15页,共31页。
螺旋方阵 (noip2014普及组第三题)
一个n行n列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第1行第1列)出发,初始时向右移动;
如果前方是未曾经过的格子,则继续前进,否则右转;重 复上述操作直至经过矩阵中所有格子。根据经过顺序,在
格子中依次填入1,2,3,....,便构成了一个螺旋矩阵。 现给出矩阵大小n以及i和j,请你求出该矩阵中第i行第j
列的数是多少。
下图是一个n=4时的螺旋矩阵。
第16页,共31页。
螺旋方阵 (noip2014普及组第三题)
请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。 比如在给定范围[2, 22],数字2在数2中出现了1次,在数12 中出现了1次,在数20中出现了1次,在数21中出现了1次, 在数22中出现了2次,所以数字2在该范围内一共出现了6次。 输入格式 输入共一行,为两个正整数L和R,之间用一个空格隔开。 输出格式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3题 “ 螺旋矩阵”简述
一个n行n列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第1行第1列)出发,初始时向右移动; 如果前方是未曾经过的格子,则继续前进,否则右转;重 复上述操作直至经过矩阵中所有格子。根据经过顺序,在 格子中依次填入1, 2, 3, ... , n2,便构成了一个螺旋矩阵。 下图是一个n = 4 时的螺旋矩阵。
}
பைடு நூலகம்
if (a[i]==a[j]+a[k]) { f=true; ans++; break; } if(f) break; } } cout<<ans; return 0;
for(k=j+1;k<=n;k++)
第2题 “比例简化”简述
在社交媒体上,经常会看到针对某一个观点同意与否的民 意调查以及结果。例如,对某一观点表示支持的有1498 人, 反对的有902 人,那么赞同与反对的比例可以简单的记为 1498:902。 不过,如果把调查结果就以这种方式呈现出来,大多数人 肯定不会满意。因为这个比例的数值太大,难以一眼看出 它们的关系。对于上面这个例子,如果把比例记为5:3,虽 然与真实结果有一定的误差,但依然能够较为准确地反映 调查结果,同时也显得比较直观。 现给出支持人数A,反对人数B,以及一个上限L,请你将A 比B化简为A’比B’,要求在A’和B’均不大于L且A’和B’互质 (两个整数的最大公约数是1)的 前 ᨀ 下 ,A’/B’ ≥ A/B且 A’/B’ - A/B的值尽可能小。
- 16 -
数据结构
a[maxn][maxn] // 存放原数据n行m列的矩阵 r[maxn] // c存放枚举出的行号 vx[maxn][maxn][maxn] // vx[I][K][J] 记录i行k列与j 列之间的差值的绝对值 w[maxn]// j列各行之间的分数 v[maxn][maxn]// k,j两列之间的分数 f[maxn][maxn]//i列,最后一列是j 的最小分数 且第i列是j
- 12 -
暴力搜索程序模块
void h(int g) { if(g==col+1) { int t=pd(); if(t<ans) ans=t; return; } if(m-c[g-1]>=col-g+1) { for(int i=c[g-1]+1;i<=m;i++) { c[g]=i; h(g+1);} } }
-3-
#include <iostream> using namespace std; int main() { int n,i,j,k,ans=0; int a[105]; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; for(i=1;i<=n;i++)//和为A[i] { bool f=false; for(j=1;j<n;j++) {
-8-
参考程序
#include<iostream> using namespace std; int main() { long int n,u,d,l,r,s=0,x,y; cin>>n>>x>>y; u=l=1;d=r=n; while(1) if(x==u) {s=s+y-l+1;break;} else {s=s+r-l; if(y==r) {s=s+x-u+1; break;} else {s=s+d-u; if(x==d) {s=s+r-
-4-
确定解题思路
L很小,还是枚举
分别枚举化简之后的A’和B’
判断A’/B’ >=A/B,避免精度问题,转换成乘法 A’*B>=A*B’
判断互质,最大公约数为1 判断A’和B’最小
A’*ansB<=ansA*B’ 找到更小的A’和B’ 设置为ansA和ansB
-5-
主程序
#include <iostream> using namespace std; int gcd(int x,int y) { int t; t=x%y; if(t==0) return y; else return gcd(y,t); } int main() { int a,b,l,a1,b1,ansa,ansb; cin>>a>>b>>l; ansa=100;ansb=1; for(a1=l;a1>=1;a1--) for(b1=l;b1>=1;b1--) { if(a1*b>=a*b1) if(gcd(a1,b1)==1) if(ansa*b1>ansb*a1) { ansa=a1; ansb=b1; } } cout<<ansa<<" "<<ansb; return 0; }
- 18 -
试题分析
BYE
温馨提示:
本题解内的程序都已经AC,由
于代码较长,可以查看CPP文件
The END
2017. 07. 28
- 15 -
确定解题思路AC
思路:搜索+DP 枚举出选那些行 算出j列各行之间的分数w[j],k,j两列之间的分数v[k][j]。 f[i][j]表示已经选了i(数量)列,最后一列是j (下标)的最小分数 且第i列是j 状态转移方程:f[i][j]=min(f[i-1][k]+w[j]+v[k][j])。
- 13 -
暴力搜索程序模块
int pd() { int sum=0; for(int i=1;i<=row;i++) for(int j=1;j<col;j++) sum+=abs(a[r[i]][c[j]]-a[r[i]][c[j+1]]); for(int j=1;j<=col;j++) for(int i=1;i<row;i++) sum+=abs(a[r[i]][c[j]]-a[r[i+1]][c[j]]); return sum; }
现给出矩阵大小n以及i和j,请你求出该矩阵中第i行第j列 的数是多少。
-7-
确定解题思路
思想:剥洋葱皮(分成一个个‘口’ ) 先找出这个点在第几个‘口’中。 ‘口’的边长就是n-2*c+2。c表示层 一个个‘口’,整行整列处理 u表示最上行,d表示最下行,l表示最左列,r表 示最右列,计算出起始数值,判断目标行、列是否 在这个‘口’中,按u-r-d-l的顺序判断。 没有找到,目标行、列,则收缩一圈,循环执行
- 14 -
暴力搜索程序模块
int main() { cin>>n>>m>>row>>col; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; w(1); cout<<ans; return 0; }
- 17 -
参考程序(DP部分)
void dp() { memset(w,0,sizeof(w)); memset(v,0,sizeof(v)); memset(f,127,sizeof(f)); for(int j=1;j<=m;j++) for(int i=2;i<=row;i++) w[j]+=abs(a[r[i]][j]-a[r[i-1]][j]); for(int j=1;j<=m;j++) f[1][j]=w[j]; for(int j=2;j<=m;j++) for(int k=1;k<j;k++) for(int i=1;i<=m;i++) v[k][j]+=vx[r[i]][k][j]; for(int i=2;i<=col;i++) for(int j=i;j<=m;j++) for(int k=i-1;k<=j-1;k++) f[i][j]=min(f[i][j],f[i-1][k]+v[k][j]+w[j]); for(int i=col;i<=m;i++) ans=min(ans,f[col][i]); }
直接三重循环穷举 外层循环枚举和,两个内层循环分别枚举两个加数,如果 有两个数之和对应外层循环的枚举值,退出两个内层循环 注意:找到满足等式的必须退出两个内循环。 注意看清题意:其中有多少个数,恰好等于集合中另外两 个(不同的)数之和。
-2-
参考程序 C++
试题分析
NOIP2014 普及组复赛题解
NOIP2014普及组C++
2017. 07. 28
第1题 “珠心算测验”简述
某学校的珠心算老师采用一种快速考察珠心算加法 能力的测验方法。他随机生成一个正整数集合,集 合中的数各不相同,然后要求学生回答:其中有多 少个数,恰好等于集合中另外两个(不同的)数之 和?
- 11 -
暴力搜索程序模块