原题链接
思路:
这题是在模拟的关卡里,我网上找了半天对模拟还不是很理解,我觉得说的好点的就是这个:
在自然界和日常生活中,许多现象具有不确定的性质,有些问题甚至很难建立数学模型,
或者很难用计算机建立递推、递归、枚举、回溯法等算法。在这种情况下,一般采用模拟
策略。所谓模拟策略就是模拟某个过程,通过改变数学模型的各种参数,进而观察变更这
些参数所引起的过程状态的变化,由此展开算法设计。
这题按照题目所给的输入,先输入n,然后我是将每组(a,b,g,k)存入结构体数组中,然后输入x,y。将结构数组从下标n-1遍历满足(x, y)就输出序号,否则输出-1.
struct Data {
int x;
int y;
int a;
int b;
};
int main() {
int n;
sfd(n);
Data* data = new Data[n];
for( int i=0; i<n; i++ ) {
sfd(data[i].x);
sfd(data[i].y);
sfd(data[i].a);
sfd(data[i].b);
}
int x, y, i;
sfd(x);
sfd(y);
for( i=n-1; i>=0; i-- ) {
if( x>=data[i].x&&x<=(data[i].x+data[i].a)&&y>=data[i].y&&y<=(data[i].y+data[i].b) ) {
pfd(i+1);//i+1就是地毯编号
break;
}
}
if( i<0 ) {
pfd(-1);
}
return 0;
}