【铺地毯】蒟蒻题解

原题:传送门


本蒟蒻的题解,让大神们见笑了!

从上图,大家可以发现一点:后铺的地毯要比先铺的位置要更靠上,这点很重要。

\(OK\),开始进入代码讲解。

#include<iostream>
using namespace std;
int a[10001],b[10001],g[10001],k[10001],n,i,j,d,x,y;
int main()
{
    cin>>n;
    for(d=1;d<=n;d++)
        cin>>a[d]>>b[d]>>g[d]>>k[d];
    cin>>x>>y;

输入部分没什么可以讲的,咋们就跳过了。

for(d=n;d>=1;d--)
        if(x>=a[d]&&x<=g[d]+a[d]&&y>=b[d]&&y<=k[d]+b[d])
        {
            cout<<d;
            return 0;
        }

(敲黑板)接下来是重点,注意看哦。

有的眼尖的朋友可能会发现:我是倒着循环的,这是一个涉及到贪心的一个小技巧,前面我们也讲到了,后铺的地毯要比先铺的位置要更靠上,那么,从最后铺的地毯开始查找,会更省时间。

然后呢,其实就是查找\((x,y)\)这个点是不是在这张地毯的范围内,如果是,则直接输出这张地毯的编号,然后\(return\)就行了。

cout<<"-1";
    return 0;
}

如果\((x,y)\)这个点上并没有地毯,那么直接输出“\(-1\)”,表示:这个\((x,y)\)点上没有铺过地毯。

完整代码如下:

#include<iostream>
using namespace std;
int a[10001],b[10001],g[10001],k[10001],n,i,j,d,x,y;
int main()
{
    cin>>n;
    for(d=1;d<=n;d++)
        cin>>a[d]>>b[d]>>g[d]>>k[d];
    cin>>x>>y;
    for(d=n;d>=1;d--)
        if(x>=a[d]&&x<=g[d]+a[d]&&y>=b[d]&&y<=k[d]+b[d])
        {
            cout<<d;
            return 0;
        }
    cout<<"-1";
    return 0;
}

原文地址:https://www.cnblogs.com/clear-skies/p/12255315.html

时间: 2024-08-05 20:30:58

【铺地毯】蒟蒻题解的相关文章

dp专场的蒟蒻题解

前言:一直想练练dp,正好衣神弄了个训练赛..上次看cgold大佬的题解心血来潮所以自己试着写了第一次题解..可惜本蒟蒻的能力太差有两道题做不太出,只好搬运学习其它大佬的题解了.. a题 https://vjudge.net/contest/355951#problem/A 这题做题的过程十分痛苦 我又双叒叕看错题意了.. 以为是必须在对角线上 其实是随便n*n的都行.. 大概思路是从一个角开始更新,统计左边和上边相同的长度 #include <iostream> #include <c

【单词方阵】蒟蒻题解

题目:传送门 题外闲话 这道题是一个\(DFS\)(深度优先搜索 \(Depth\) \(Frist\) \(Sreach\))的题目,可是-我就是不想敲递归(我绝对不会告诉你我是想偷懒的),于是就有了这个程序和这篇题解-- 题目分析 首先,这是一个二维的题目,要寻找8个方向,如下图所示: (-1,-1) (-1, 0) (-1, 1) ( 0,-1) 在这向八个方向寻找 ( 0,1) (1,-1) (1,0) (1,1) 所以,要预处理八个方向: int dx[8]={-1,-1,-1,0,0

【跳马问题】蒟蒻题解

原题:传送门 上来先看(鬼畜的题目背景)题目描述.一看就是一个二维的深搜. 有芥末一条马,只会往右跳(话说它左腿系不系瘸了)日字形. 再一看数据范围,n,m<=18.等等,半棋盘不是只有4行6列吗?算了,跟\(OI\)讲什么道理啊. 好了,闲话完毕,步入正题. #include<iostream> using namespace std; 为了用坐标模拟马向右跳的动作,就要写一个坐标变化表. int dx[4]={2,-2,1,-1},dy[4]={1,1,2,2};//模拟坐标x,y的

USACO 简易题解(蒟蒻的题解)

蒟蒻难得可以去比赛,GDOI也快到了,还是认真刷题(不会告诉你之前都在颓废),KPM 神犇既然都推荐刷USACO, 辣就刷刷. 现在蒟蒻还没刷完,太蒟刷得太慢,so 写了的搞个简易题解(没代码,反正NOCOW一堆) x_y_z(表示 Section x.y 的第z题) 1_1_1 这个..... ASCII码搞一搞就好了吧... 1_1_2 直接模拟,注意均分后剩下的钱还是他的 1_1_3 日期的题最难受了,直接模拟往下推就好了 1_1_4 枚举断开的位置,然后爆枚左右,注意处理 w 如果左右第

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

描述 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面,华容道是否根本就无法完成,如果能完成,最少需要多少时间. 小 B 玩的华容道与经典的华容道游戏略有不同,游戏规则是这样的: 在一个 n*m 棋盘上有 n*m 个格子,其中有且只有一个格子是空白的,其余 n*m-1个格子上每个格子上有一个棋子,每个棋子的大小都是 1*1 的: 有些棋子是固定的,有些棋子则是可以移动的: 任何与空白的格子相邻(有公共的边)的格子上的棋子都可以移动到空白

luoguP1003 铺地毯 题解(NOIP2011)

luoguP1003 铺地毯  题目 #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> using namespace std; inline int read() { int sum=0,p=1;char ch=getchar(); while(!(('0'<=c

蒟蒻ACMer回忆录 &#183; 一段弱校ACM的奋斗史

三年半的ACM生涯终于迎来了终点,退役之时,感慨万分,故写此文以纪念逝去的时光,那些为ACM拼搏的日子,那段弱校ACM的奋斗史. 三年半的ACM生涯,窝见证了CUMT从打铁到铜牌的突破,又见证了从铜牌到银牌的突破:见证了集训队员从3人发展到10余人,又见证了ACM实验室的落实. 三年半的ACM生涯,窝经历了太多,有Accepted时的欢笑,有Wrong Answer时的沮丧,有Time Limit Exceeded时的无奈,有Runtime Error时的尴尬,有打铁的失落,有拿牌的惊喜. 13

bzoj 4636: 蒟蒻的数列

4636: 蒟蒻的数列 Description 蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列 题目描述 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个区间中所有比k小的数改为k,他想知 道N次操作后数列中所有元素的和.他还要玩其他游戏,所以这个问题留给你解决. Input 第一行一个整数N,然后有N行,每行三个正整数a.b.k. N<=40000 , a.b.k<=10^9 Output 一个数,数列中所有元素的和 Sample Input 4 2 5

BZOJ3786 星系探索 蒟蒻出题人给跪

本蒟蒻闲得蛋疼于是在BZOJ上加了一道水题,果然被瞬间水过... 只能说本蒟蒻实在是太弱了. Q:你为什么要写这篇博客? A:我只是为了水经验233.... 正常向的数据.题解.标程请自行传送下面的云盘... http://pan.baidu.com/s/1qWsMHM8 吐槽: 为什么本地不开O2 10s在OJ上开O2 还需要20+s啊!!!我本来不想卡常数好不好. 因为这个原因用数组实现数据结构被卡的请见谅...现在是40s应该卡不掉了. 另外如果发现自己被卡掉请重交一次.原因不解释. 为什