【信息学竞赛真题! ! !】信息学竞赛人必看的「NOIP2011」铺地毯 题解(C++版)
Hi,朋友们。又见面了。上次我们做了一道美国题,这次我们来干一道“国产”题目
文章目录
- A.题目描述
- B.初步分析
- 如果使用二维数组……
- C.改进算法
- D.补充模块
- 1.喜闻见乐的NOIP介绍:
- 2.NOI网上报名系统
- 3.为什么会有这种效果
- E.同主题文章链接
(本文适合学习C++有那么一点点基础,但基础又不是特别高的朋友)
A.题目描述
题目描述
为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有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。
样例输入
样例1:
3
1 0 2 3
0 2 3 3
2 1 3 3
2 2
样例2:
3
1 0 2 3
0 2 3 3
2 1 3 3
4 5
样例输出
样例1:
3
样例2:
-1
提示
对于 30%的数据,有n≤2;
对于 50%的数据,0≤a, b, g, k≤100;
对于 100%的数据,有0≤n≤10,000,0≤a, b, g, k≤100,000。
来源
NOIP2011
B.初步分析
如果使用二维数组……
二维数组,感觉是这种题名正言顺的做法……
这是一个网格——
名义上二维数组是行得通的,只需要定义这么大的个数组,然后一层层往上面铺,再查询某个坐标面上的是那张地毯——
for(int i=1;i<=n;i++){scanf("%d%d%d%d",&a,&b,&g,&k);for(int j=b;j<=b+k;j++){for(int l=a-g;l<=a;l++){p[j][l]=i;}}}
if(p[x][y]==0){//查看这个点最上层是哪张地毯 printf("-1");}
elseprintf("%d",p[x][y]);
那么我们现在就面临了一个一个问题——二维数组开多大?
1.p[10001][10001]
于是——运行错误
2.p[100001][100001]
于是——编译错误
哈哈哈哈,又被我耍了……
(如果你想知道这是为什么,文档后面E.3处有介绍)
C.改进算法
我们来看这一幅图:
从中我们想:如果我们预先设定好要查询的位置,再来查询,会不会快点呢?
看代码:
#include<bits/stdc++.h>
using namespace std;int main(){int n,a[10000],b[10000],x[10000],y[10000],c,d;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d%d%d",&a[i],&b[i],&x[i],&y[i]);//任它先输入 }scanf("%d%d",&c,&d);int m=-1;for(int i=n;i>=1;i--){//更省时哟 if(c>=a[i]&&c<=a[i]+x[i]&&d<=b[i]+y[i]&&d>=b[i]){//范围查找 m=i;printf("%d",m);return 0;}}printf("-1");return 0;
}
这道题就完事了。
D.补充模块
1.喜闻见乐的NOIP介绍:
NOIP比赛
NOIP(National Olympiad in Informatics in Provinces,全国青少年信息学奥林匹克联赛)是一项面向全国青少年的信息学竞赛和普及活动。为NOI主管的一系列比赛之一,旨在向那些在中学阶段学习的青少年普及计算机科学知识,给学校的信息技术教育课程提供动力和新的思路;给那些有才华的学生提供相互交流和学习的机会。通过竞赛和相关的活动培养选拔优秀的计算机人才。初、高中或其他中等专业学校的学生可报名参加联赛。
竞赛形式:
竞赛赛制:
联赛分两个年龄组:初中组和高中组(普及组和提高组)。每组竞赛分两轮:初试和复试。各省市初试成绩在本赛区前百分之十五的学生进入复赛。
初试形式为笔试,侧重考察学生的计算机基础知识和编程的基本能力,并对知识面的广度进行测试。
复试形式为上机,侧重考察学生对问题的分析理解能力,数学抽象能力,驾驭编程语言的能力和编程技巧、想象力和创造性等。
初赛及复赛程序设计采用C、C++、Pascal语言,2022年后将不可使用Pascal、C语言,只能使用C++。
赛程赛事:
初赛:十月的第2个或第3个星期六下午14:30-16:30(普及,提高)
复赛:十一月的第2个星期六下午14:30-18:00(普及组)
十一月的第2个星期六上午8:30-12:00,星期日上午8:30-12:00(共2天,提高组)
自2017年来,由于参赛人数增多,NOIP复赛规模的规则进行了调整。包括:每个省赛区可以设立多于两个的复赛考点(但必须在同一个城市),初赛进入复赛的比例和规模由各省赛区自行决定,在条件许可的情况下,鼓励更多选手参赛。同时复赛获奖比例将基本保持不变,全国一等奖获奖比例约为复赛参赛选手的20%。
2.NOI网上报名系统
链接在此。
因为是中文界面,我就不演示了。
3.为什么会有这种效果
二维数组,假如是a[N][N],在128M空间的限制下,最多N不超过3000。因为9千万开根号是3000,而a[N][M],N*M不能大于9千万。
E.同主题文章链接
【信息学竞赛真题! ! !】「USACO2016」Subsequences Summing to Sevens题解(C++版)
【信息学竞赛真题! ! !】信息学竞赛人必看的「NOIP2011」铺地毯 题解(C++版)相关推荐
- 想跳槽涨薪的必看!2021年百度Java面试真题,跳槽大厂必看!
前言 MyBatis是一个支持普通SQL查询.存储过程和高级映射的优秀持久层框架.MyBatis 去掉了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML ...
- 2019年上海市数学建模讲座笔记(1)竞赛真题讲解
<竞赛真题> 2018年国赛A题讲解:<数学建模及其应用>杂志,第一期,复旦大学蔡志杰老师 关于选题 竞赛规则的变化 开始时间:礼拜四,9.12晚上6点开始.下载题目 去年40 ...
- 第十一届蓝桥杯青少组Python竞赛真题
第十一届蓝桥省赛Python组复盘 第十一届蓝桥省赛Python组复盘_哔哩哔哩_bilibili 蓝桥杯青少组Python竞赛真题讲解 蓝桥杯青少组Python竞赛真题讲解_哔哩哔哩_bilibil ...
- 2021云计算技能竞赛真题卷(附标准答案)
2021云计算技能竞赛真题卷 "云计算技术与应用"S卷 场景描述 一.目标任务 某企业拟搭建私有云平台,以实现资源池化弹性管理.企业应用集中管理.统一安全认证和授权等管理.试按照赛 ...
- 竞赛真题:杨辉三角形
大家好鸭~今天继续给大家带来竞赛真题:杨辉三角形. 介绍: 杨辉三角形,又称为帕斯卡三角形,是一种数学形式,由数字三角形组成,其特点是每个数字是其上面两个数字的和.杨辉三角形的第一行只有一个数字 1, ...
- 英语四级真题作文 计算机,2015年6月大学英语四级真题作文:人与电脑
2015年6月大学英语四级真题作文:人与电脑 写作思路: 第一段:描述漫画内容,引出文章主题:电脑的使用越来越广泛,使用的时间也越来越长. 第二段:分析该现象的原因. 第三段:提出措施解决.或得出自己 ...
- 东北话考级-东北人必看
东北话考级-东北人必看 2009年08月15日 东北话1级考试. A卷 (四级标准,适用于长江以南) 题型:单项选择,选出下列词句的正确意思: 1 "哎呀吗呀,他对象长的老棵碜了" ...
- PHP网站工作流程图,在网站绘制工作流程图的教程分享(打工人必看)
原标题:在网站绘制工作流程图的教程分享(打工人必看) 每一行.每一业都不是那么简单就能做顺手的,特别是要面对各种人际琐事的人事职员,要是不会一两招实用的办公技巧的话,可能很快便会被淘汰了.其中,学会绘 ...
- python在财务上的应用-财会人必看:这个工具,30分钟可以把人家一天的工作都给干完!...
原标题:财会人必看:这个工具,30分钟可以把人家一天的工作都给干完! 每年3月到6月,工商年报.汇算清缴交织在一起,财务总是被安排得明明白白的.尤其今年还有首次个人所得税汇算清缴! 作为一个财务,除了 ...
最新文章
- python实现二叉树遍历(前序遍历、中序遍历、后序遍历)
- 原版销售累计超过150 000册的经典JavaScript入门书
- APP元素事件操作API
- 【学习笔记】13、标准数据类型—元组
- linux的kerne启动过程,linux
- 40个问题让你快速掌握Java多线程的精髓
- python分析nginx日志_利用python分析nginx日志
- new操作符具体干了什么
- 2021年4月11日-粤嵌智能小车兴趣课笔记(3)
- 我的世界服务器修改空岛范围,我的世界空岛指令权限大全 | 手游网游页游攻略大全...
- 怎么创建Gitee仓库,并将项目源码上传到Git?
- rdt不同版本(rdt1.0,rdt2.0,rdt2.1,rdt2.2,rdt3.0)协议的特点以及发送端接收端的FSM
- GitLab使用手册
- /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵
- 【强化学习】Q-Learning算法求解迷宫寻路问题 + Java代码实现
- 专科段《生产与运作管理》课程复习资料(1)——单项选择题
- 嵌入式读图基础-熊健-专题视频课程
- [wp7游戏]角色扮演类游戏~~集合贴~~
- 密码学期末计算题复习
- 爆乱媒评——雄性传媒,大与小的技巧——凤凰卫视VS央视评点(1)