P1003铺地毯

这道题是2011年提高组第一题,在洛谷被评为普及—。看到题目后直接写了一个纯模拟,结果第一次提交全部RE,后将数组开大,随即MLE。然后又去思索其余方法,采用先将每一个地毯的对角线存下来,然后i--看目标坐标是否在这个地毯下面,经过多次调试,发现竟是一个低级错误作怪,修正后AC。

1.注意看数据范围,数组大小,时空复杂度需要计算。
2.模拟题要思考巧妙方法。
3.写代码要严谨,冷静去写。调试时放松心态,认真去找错误。

代码:
int n;
int sx,sy;
int lx,ly;
int ax,ay;
int left_x[MAXN];
int left_y[MAXN];
int right_x[MAXN];
int right_y[MAXN];
bool flag=false;
int main(){
cin>>n;
for(int i=1;i<=n;i++){//存对角线
cin>>sx>>sy>>lx>>ly;
left_x[i]=sx;//左下横
left_y[i]=sy;//左下纵
right_x[i]=sx+lx;//右上横
right_y[i]=sy+ly;//右上纵
}
cin>>ax>>ay;
for(int i=n;i>=1;i--){
if(ax>=left_x[i]&&ax<=right_x[i]&&ay>=left_y[i]&&ay<=right_y[i]){
flag=true;
cout<<i;
break;
}
}
if(flag==false) cout<<-1;
return 0;
}

posted @ 2019-07-15 15:49  毛炯人  阅读(213)  评论(0编辑  收藏  举报