• 注册
当前位置:1313e > 默认分类 >正文

题解 P1003 【铺地毯】

关于 P1003 铺地毯 的答案 and some problem

关于此题,铺地毯,那就一张张铺吧。

这样不是很好?

模拟

来一段:


#includeusing namespace std;int n;
int a,b,g,k;
int x,y;
short mp[10010][10010];//map与我有仇
int main()
{scanf("%d",&n);for(register int jsq=1;jsq<=n;jsq++){scanf("%d%d%d%d",&a,&b,&g,&k);for(register int i=a;i<=a+g;i++){for(register int j=b;j<=b+k;j++){mp[i][j]=jsq;}}}scanf("%d%d",&x,&y);if(mp[x][y]>=1){printf("%hd",mp[x][y]);}else printf("-1");return 0;
}

很明显一张一张铺,后边的地毯将前面的覆盖,数字覆盖


but

洛谷告诉我:Unaccepted 50

AC RE AC AC AC AC RE RE RE MLE

这么辣鸡的做法怎么可以过,过了则毫无天理。

语文不好的人向来是先粘代码的


#includeusing namespace std;int n;
int a[10010],b[10010],g[10010],k[10010];
int x,y;
int ans=-1
int main()
{scanf("%d",&n);for(register int i=1;i<=n;i++){scanf("%d%d%d%d",&a[i],&b[i],&g[i],&k[i]);}scanf("%d%d",&x,&y);for(register int i=n;i>=1;i--){if(a[i]<=x&&x<=a[i]+g[i]&&b[i]<=y&&y<=b[i]+k[i]){ans=i;break;}}printf("%d",ans);return 0;
}

(敲黑板)思路改变

不选择“铺”,而是只见范围去算,合适就改变。

倒着循环的,以免一些可怕的问题

同时,后铺的地毯要比先铺的位置要更靠上,那么,从最后铺的地毯开始查找,会更省时间。

同时将多余的,无需计算的部分删掉,不理它。

就这样。

完了吗?

还有一件事:数据内没有 -1 !!!!!!

谢谢!!!

完结撒花~~~~~~


做人做事最好的状态就是:不刻意。不刻意自我表现,也不刻意淡泊名利;不刻意迎合,也不刻意狂狷;不刻意追逐流行,也不刻意卓尔不群。如是,则不心累,不纠结,不失望。

The best state of being a man is: not deliberately. Not deliberately self - expression, and not deliberately indifferent to fame and wealth; not deliberately to cater for, nor deliberate crazy; not deliberately chasing popular, not deliberately outstanding. If it is, it is not tired, not entangled, not disappointed.

身を処して事をしてベストな状態ではないか。自己表現もない工夫を凝らし、工夫を凝らして名利にはあっさりしないにも工夫を凝らして、工夫を凝らして狂強情なない工夫を凝らして追いかけて流行、工夫を凝らして衆人より一段優れている。このように、心は疲れない、からみ合って、失望しない。

转载于:https://www.cnblogs.com/XSZCaesar/p/10549519.html

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录
相关推荐