luogu1003:铺地毯:逆向查找:NOIP2011提高组T1

题目链接:该题是luogu试炼场的2-1:T1


试炼场2-1题解包:

2-1 简单模拟  
题号 题目 备注
1003 铺地毯 逆向查找
1067 多项式输出 分段模拟
1540 机器翻译 循环队列
1056 排座椅 统计排序
1328 生活大爆炸版石头剪刀布 暴力模拟
1563 玩具谜题 环形思维

题目大意:

 

在平面直接坐标系内,有n块方形地毯,依次铺上去,求某个点最上面一层的地毯编号


解题思路:

1 主要了解平面直角坐标系,用桶来做的话,数组没办法开;

2 反向模拟就可以了:从最后一块地毯往前数,先覆盖到该点的,就是答案!


上代码:

//luogu试炼场2-1:1:1003:铺地毯
//2011提高组T1:逆向查找 

#include
int n,x,y;
int a[10005],b[10005];//地毯左下角的坐标(a,b); 
int g[10005],k[10005];//地毯右上角的坐标(g,k); 

int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)//存储四个角的信息 
	{
		scanf("%d %d %d %d",&a[i],&b[i],&g[i],&k[i]);
		g[i]+=a[i];
		k[i]+=b[i];
	}
	scanf("%d %d",&x,&y);//目标点 
	for(int i=n;i>=1;i--)//逆向查找,只要在框内,就结束了 
	{
		if(x>=a[i]&&x<=g[i]&&y>=b[i]&&y<=k[i])
		{
			printf("%d",i);
			return 0;
		}
	}
	printf("-1");
	return 0 ;
} 

 

你可能感兴趣的:(题解,luogu,题表,大礼包,luogu试炼场,模拟,NOIP2011)