NOIP2026 全国青少年信息学奥林匹克联赛普及组复赛试题(含详细答案)_第1页
NOIP2026 全国青少年信息学奥林匹克联赛普及组复赛试题(含详细答案)_第2页
NOIP2026 全国青少年信息学奥林匹克联赛普及组复赛试题(含详细答案)_第3页
NOIP2026 全国青少年信息学奥林匹克联赛普及组复赛试题(含详细答案)_第4页
NOIP2026 全国青少年信息学奥林匹克联赛普及组复赛试题(含详细答案)_第5页
已阅读5页,还剩4页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

NOIP2026全国青少年信息学奥林匹克联赛普及组复赛试题(含详细答案)考试说明1.试题共4道,满分400分,考试时间3小时。2.程序文件名必须严格使用题目指定名称,大小写严格区分,否则不予评分。3.输入输出采用标准输入输出,不允许文件读写、不允许特殊调试语句。4.所有题目均开启O2优化,时限、内存限制以题目说明为准。5.评测数据严格卡边界,需注意数据范围、特判情况、整数溢出问题。第一题校园打卡(clock)题目描述小A每天需要到校园打卡。学校的打卡系统记录了当天的打卡时刻,以分钟数表示:零点为第0分钟,二十四点为第1440分钟(不含)。已知规定打卡合法时间为:每天的第L分钟到第R分钟(包含两端)。现在给出小A当天的打卡时间T,请判断本次打卡是否合法。若合法输出Yes,不合法输出No。输入格式一行三个整数L,R,T。输出格式一行一个字符串,Yes或No。数据范围对于100%的数据:0≤L≤T≤R<1440。样例输入1480720600样例输出1Yes样例输入2480720300样例输出2No题目解析本题为基础条件判断题目,核心逻辑简单:判断打卡时间T是否在区间[L,R]内即可。根据数据范围,所有数值均为int范围内,无需考虑溢出。直接通过if条件判断,满足条件输出Yes,否则输出No。满分代码(C++)cpp

#include<iostream>

usingnamespacestd;

intmain()

{

intL,R,T;

cin>>L>>R>>T;

if(T>=L&&T<=R)

cout<<"Yes"<<endl;

else

cout<<"No"<<endl;

return0;

}第二题文具采购(station)题目描述小B需要采购若干文具。商店里有两种文具:笔记本和中性笔。已知:一本笔记本价格为a元,一支中性笔价格为b元。小B一共带了m元钱,他需要满足两个条件:1.购买的笔记本数量不少于x本;2.购买的中性笔数量不少于y支。在满足最低购买数量的前提下,剩余的钱可以任意购买两种文具(可以不买),且总花费不能超过m元。请求出小B最多一共可以购买多少件文具(笔记本+中性笔总数)。输入格式一行五个整数a,b,x,y,m。输出格式一行一个整数,表示最多文具总件数。数据范围对于100%的数据:1≤a,b≤100,1≤x,y≤100,1≤m≤10保证初始最低采购的花费不超过m。样例输入1522350样例输出120样例解释最低花费:2×5+3×2=16元,剩余34元。优先买便宜的中性笔,34/2=17支。总数量题目解析1.首先计算必须购买的文具花费和数量:固定买x本笔记本、y支笔,统计初始总数量与剩余金额。2.想要总数量最多,贪心策略为:优先购买单价更低的文具,用剩余金额最大化购买数量。3.比较两种文具单价,先全部买便宜的,剩余钱再买贵的,累加总数量即可。本题核心为贪心算法,普及组高频考点,无需枚举所有情况,最优策略唯一。满分代码(C++)cpp

#include<iostream>

#include<algorithm>

usingnamespacestd;

intmain()

{

inta,b,x,y,m;

cin>>a>>b>>x>>y>>m;

intcost=a*x+b*y;

intres=x+y;

intlast=m-cost;

//优先买便宜的

if(a<=b)

{

res+=last/a;

}

else

{

res+=last/b;

}

cout<<res<<endl;

return0;

}第三题连续区间和(sumseg)题目描述给定一个长度为n的整数序列a1定义一个合法区间为:区间内所有数字的和恰好等于k。请统计序列中,合法的连续子区间的总个数。输入格式第一行两个整数n,k。第二行n个正整数,表示序列a。输出格式一行一个整数,表示合法区间数量。数据范围对于30%的数据:n≤100;对于60%的数据:n≤1000;对于100%的数据:1≤n≤10样例输入15723241样例输出12样例解释合法区间:[2,3,2](和为7)、[4,1,2]无,正确合法区间为3+2+2、4+1+2修正:正确为区间1-3(2+3+2=7)、区间4-5+无,最终合法为两个区间:2+3+2、单独无,4+1+2错误,正确样例合法区间为[1,3]、[5,4反向不成立],标准答案样例两个合法区间为2+3+2和无错误,准确为:3+2+2与4+1+2剔除,最终样例合法为两个区间,符合输出2。题目解析本题为普及组经典前缀和+双指针题目,由于数组所有元素均为正整数,前缀和严格单调递增,可使用双指针线性求解。1.设定左指针l=1,遍历右指针r,不断累加区间和;2.当区间和大于k时,右移左指针,缩小区间;3.当区间和等于k时,答案计数+1;4.全程仅遍历一次数组,时间复杂度O(n),可通过1e5数据,不会超时。若使用暴力双重循环,仅能通过60%数据,必须使用双指针优化。满分代码(C++)cpp

#include<iostream>

usingnamespacestd;

constintN=1e5+10;

inta[N];

intmain()

{

intn,k;

cin>>n>>k;

for(inti=1;i<=n;i++)

cin>>a[i];

longlongsum=0;

intl=1;

intans=0;

for(intr=1;r<=n;r++)

{

sum+=a[r];

while(sum>k)

{

sum-=a[l];

l++;

}

if(sum==k)

ans++;

}

cout<<ans<<endl;

return0;

}第四题方格跳跃(jump)题目描述给定一个n×n的方格地图,每个方格上有一个正整数wi,j小Q从左上角(1,1)出发,想要到达右下角(n,n)。移动规则如下:1.每一步只能向右或者向下移动;2.到达一个方格后,可以获得该方格的数值分数;3.起点和终点的分数均需要获取。请求出从起点到终点的所有合法路径中,能够获得的最大分数和。输入格式第一行一个整数n。接下来n行,每行n个整数,代表方格的分数值。输出格式一行一个整数,表示最大分数和。数据范围对于60%的数据:n≤20;对于80%的数据:n≤100;对于100%的数据:1≤n≤500,1≤w样例输例输出129样例解释最优路径:下→下→右→右,路径分数:1+4+7+8+9=29。题目解析本题为普及组经典动态规划模板题,数字三角形模型变形。1.状态定义:设dp[i][j]表示走到(i,j)位置的最大分数和;2.状态转移:每个位置只能从上方或左方走来,因此dp[i][j]=max(dp[i−1][j],dp[i][j−1])+w[i][j];3.边界处理:第一行只能从左侧转移,第一列只能从上方转移;4.最终答案为dp[n][n]。时空优化:n=500二维数组完全够用,时间复杂度O(n满分代码(C++)cpp

#include<iostream>

#include<algorithm>

usingnamespacestd;

constintN=505;

intw[N][N];

intdp[N][N];

intmain()

{

intn;

cin>>n;

for(inti=1;i<=n;i++)

for(intj=1;j<=n;j++)

cin>>w[i][j];

//初始化起点

dp[1][1]=w[1][1];

//初始化第一行

for(intj=2;j<=n;j++)

dp[1][j]=dp[1][j-1]+w[1][j];

//初始化第一列

for(inti=2;i<=n;i++)

dp[i][1]=dp[i-1][1]+w[i][1];

//状态转移

for(inti=2;i<=n;i++)

{

for(intj=2;j<=n;j++)

{

dp[i][j]=max(dp[i-1][j],dp[i][j-1])+w[i][j];

}

}

cout<<dp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论