【洛谷】P2694 接金币(排序)
2024-08-28 22:44:31
题目描述
在二维坐标系里,有N个金币,编号0至N-1。初始时,第i个金币的坐标是(Xi,Yi)。所有的金币每秒向下垂直下降一个单位高度,例如有个金币当前坐标是(xf, yf),那么t秒后金币所在的位置就是(xf, yf-t)。初始时,FJ在(0,0)坐标处,FJ每秒只能向左移动一个单位距离或者向右移动一个单位距离,当然FJ也可以不移动。如果在某个时刻某个金币和FJ所在的位置重合,那么FJ就能接住这个金币。FJ能否把所有的金币都接住?如果行输出Abletocatch,否则输出Notabletocatch。
输入输出格式
输入格式:
多组测试数据。
第一行,一个整数G,表示有G组测试数据。1 <= G <= 5。
每组测试数据格式如下:
第一行,一个整数N。 1 <= N <= 50。
接下来有N行,第i行两个整数表示Xi、Yi。
-1000<=Xi<=1000。0<=Yi<=1000。
输出格式:
共G行,每行输出Abletocatch或Notabletocatch。
输入输出样例
输入样例#1:
5
3
-1 1
1 3
0 4
1
-3 2
3
-1 1
1 2
0 4
3
0 9
-1 1
1 3
8
70 141
-108 299
52 402
-70 280
84 28
-29 363
66 427
-33 232 输出样例#1:
Abletocatch
Notabletocatch
Notabletocatch
Abletocatch
Notabletocatch
--------------------------------------------------------------------
分析:日常切水题。以y为标准从大到小排序,那么只要前后两个x之差的绝对值大于y之差的绝对值,那么FJ就来不及跑到那里,Notabletocatch。否则Abletocatch。
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
struct coins
{
int x,y;
}a[];
bool cmp(coins a,coins b)
{
if(a.y<=b.y) return true;
return false;
}
int main()
{
int g,n;
scanf("%d",&g);
while(g--)
{
bool flag=false;
scanf("%d",&n);
a[].x=a[].y=;n++;
for(int i=;i<n;i++)
{
scanf("%d%d",&a[i].x,&a[i].y);
}
sort(a,a+n,cmp);
for(int i=;i<n-;i++)
{
if(abs(a[i].x-a[i+].x)>abs(a[i+].y-a[i].y))
{
printf("Notabletocatch\n");
flag=true;
break;
}
}
if(!flag) printf("Abletocatch\n");
}
return ;
}
最新文章
- 原生js事件和jquery事件的执行顺序问题
- lufylegend游戏引擎
- DllImport 相关错误
- self.view添加UIView时添加动画
- sys.default_constraints
- multipath.conf
- Pgsql 里面 COALESCE的用法
- ROHS無鉛問題解答!ROHS IPC SGS
- (转)iOS7界面设计规范(1) - UI基础 - 为iOS7而设计
- chapter 12_1 数据文件
- 我也谈javascript正则匹配
- NYOJ--139--我排第几个(康托展开)
- 【Swift】ios开发中巧用 description 打印对象时,打印对象的属性
- Invalid tld file: ";/WEB-INF/tags/xxxt.tld";, see JSP 2.2 specification section 7.3.1 for more details
- 自动化测试-10.selenium的iframe与Frame
- Python3.7.0的安装方法
- Spring学习手札(四)谈谈Spring Bean的生命周期及作用域
- MFC+WinPcap编写一个嗅探器之一(准备)
- NHibernate初学六之关联多对多关系
- 深入浅出ObjC之消息 (转)