这到题算是我“火线回归”后码的第一道题,病好了心情不错,发篇博客分享一下

目录:

·题目描述

·题目分析

·解题思路

·代码实现

·总结


·题目描述:

  为了准备一场特殊的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有n张地毯,编号从1到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖

·题目分析:

  这道题看上去是一道很水很水的模拟题,一般人的第一思路就是套上三层循环,用一个二维数组模拟会场的每一块地板。不错, 我一开始也是这样想的,代码如下:

 #include<cstdio>
#include<iostream> using namespace std; int n;
int a,b,g,k,xx,yy;
int ground[][]={-};//赋值为-1的目的是如果没有被赋值,就可以直接输出-1,不用再判断了(其实就是懒) int main()
{
scanf("%d",&n);
for(int i=;i<=n;++i)
{
scanf("%d%d%d%d",&a,&b,&g,&k);//没有用数组,再每次输入的同时进行处理(用了数组之后的效果不如这样处理好)
for(int j=a;j<=a+g;++j)
for(int n=b;n<=b+k;++n)//又是两层循环,将每一块受到影响的(既需要更新的)地板的坐标进行枚举
ground[j][n]=i;//将这块地板附上最后一次赋值的值(模拟的是最上面的一块地毯)
}
scanf("%d%d",&xx,&yy);
printf("%d",ground[xx][yy]);//直接查找需要查找的地板最上面是那一块地毯
return ;
}

  是的,这道题看上去很水,上面的代码看似完美无缺。但是结果是这样的:

  

  是的,就是149.79s

  

  所以,是什么导致了这种结果的发生呢???于是,我不要脸的点开了题解

  原来,按照我的做法似是肯定会MLE的,因为这道题很坑,出题人的目的就是让我们将数据从前往后读入,再从后往前循环,从而求解(具体解题思路请继续往下看)

·解题思路:

  根据上面的结论,我们可以找到一个更快、更优、更好的算法。

  先将第2~n+1行的数据读入,存到一个二维数组中,然后从n~1枚举每一组数据,查看第一个包括需要查询的点的地毯。如果有,就直接输出这个地毯的编号,结束程序;如果没有,就输出“-1”,同样结束程序;

·代码实现:

  说了这么多,没有代码怎么能行呢???

 #include<cstdio>
#include<iostream> using namespace std; int shuju[][];//定义一个“数据”数组,用来读入每一组数据
int n,xx,yy; int main()
{
scanf("%d",&n);
for(int i=;i<=n;++i)
for(int j=;j<=;++j)
scanf("%d",&shuju[i][j]);//读入数据ing
scanf("%d%d",&xx,&yy);
for(int i=n;i>=;i--)//从n~1循环
{
if((shuju[i][]<=xx)&&(shuju[i][]+shuju[i][]>=xx)&&(shuju[i][]<=yy)&&(shuju[i][]+shuju[i][]>=yy))//判断要找的点是否再这个地毯内
{
printf("%d",i);//如果有,就输出该点的编号
return ;//直接结束程序
}
}
printf("-1");//如果没有,就输出-1
return ;//还是结束程序
}

·总结:

  这道题还是很坑的,因为这道题不是单纯无脑的模拟,而是运用到了某种类似于“逆推还原”的思想,思路并不是很好想。所以在以后的解题过程当中,不要想当然,一定要仔细斟酌,然后就能AC啦!

一个蒟蒻的解题过程记录——洛谷P1003 铺地毯的更多相关文章

  1. 洛谷P1003 铺地毯 noip2011提高组day1T1

    洛谷P1003 铺地毯 noip2011提高组day1T1 洛谷原题 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n ...

  2. [NOIP2011] 提高组 洛谷P1003 铺地毯

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

  3. 洛谷P1003铺地毯(提高组)

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

  4. (水题)洛谷 - P1003 - 铺地毯

    https://www.luogu.org/problemnew/show/P1003 一开始觉得是用树套树来区间修改单点查询,但是发现空间不够开. 看了题解发现这个是静态的问题,而且只问一个点的结果 ...

  5. 洛谷—— P1003 铺地毯

    https://www.luogu.org/problem/show?pid=1003 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形 ...

  6. 洛谷P1003 铺地毯 模拟

    这一题就是一个很普通的模拟,每次输入的时候存储四个角的值 把四个角的横纵坐标存储在一排.然后在倒序遍历一遍,查找的时候就看所要查找的坐标在不在这个范围内,如果找到了就标记一下再输出,如果没有找到就输出 ...

  7. 洛谷 P1003 铺地毯

    嗯.... 一道比较水的模拟题.. 刚拿到题的时候被它的数据范围吓到了,二维数组不可能开那么大啊,可是一边做发现测试数据太水 ... 先看一下题吧... 题目描述 为了准备一个独特的颁奖典礼,组织者在 ...

  8. java解洛谷P1003铺地毯问题

    此题给出的最大地毯数量为10000,创建[10001][4]长度的二维数组 以稀松数组的方法,[第i个地毯]的 [0][1][2][3]分别保存地毯的坐标和大小 再用需要求的坐标比较即可 public ...

  9. noip2013Day2T3-华容道【一个蒟蒻的详细题解】

    描述 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面,华容道是否根本就无法完成,如果能完成,最少需要多少时间. 小 B 玩的华容道与经典的 ...

随机推荐

  1. c# 模拟post登录

    使用模拟登录大致可以分为两步 一.post登录获取cookis public CookieContainer GetCookie(string url,string account,string pa ...

  2. 自动内存管理机制之java内存区域与内存溢出异常

    一.运行时数据区域 java虚拟机所管理的内存会包括下面的几个部分: 1.程序计数器:是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器.一般情况下,字节码解释器工作的时候就是通过改变 ...

  3. 深入理解java虚拟机(2)

    一.对象的访问 ----------------------------------------------------- 1.对象的访问与java栈.堆和方法区之间的关联关系. eg:Object ...

  4. 010-监控windows主机

    1)下载windows的zabbix_agent下载地址:https://www.zabbix.com/download 下载客户端并解压到指定目录D:\zabbix,解压后有两个目录:bin和con ...

  5. Github删除仓库文件夹问题集合

    记得上次使用GitHub,看时间提示,最近的一次,是三年前,而且都是长传文件,这次是删除文件,才发现删除库可以,但是删除库里的某个目录,就不行了,除非是下载下来,在GitHub把仓库删了重新添加.使用 ...

  6. 了解ffmpeg生态

    我以前整理的ffmpeg相关资料: 了解ffmpeg要读的资料 https://blog.csdn.net/yyhustim/article/details/9078941 ffmpeg和ffserv ...

  7. JDK的二进制安装

    JDK的二进制安装步骤 1. Jdk1.8二进制包下载路径http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads- ...

  8. QT程序在发布的时候应注意的地方

    ---恢复内容开始--- 我们用QT开发好的应用程序,如果要发布到其他计算机上运行怎么办呢?我们在用VC编程时,单独运行编译好的可执行文件时,经常会发现提示缺少动态库.用QT编程也不例外,在一定程度上 ...

  9. 利用angular4和nodejs-express构建一个简单的网站(十)—好友模块

    上一章讲解了用户登录的相关代码.用户登录成功后,就会进入好友模块,在好友模块中会根据不同的用户ID显示相应的好友列表,点击好友列表中的单个好友就会进入编辑单个好友页面,对好友信息进行编辑.点击列表页面 ...

  10. Django报错 No module named 'django.templates'

    前言 Django 模板报错了 修改方法: 将你的工程文件下(my_site)的settings.py中的TEMPLATES中的templates字段全部改为template, 亲测可用~^~