• 洛谷 P2694 接金币


    题目描述

    在二维坐标系里,有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
    思路:数学+模拟
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int T,n,flag;
    int x[55],y[55];
    int main(){
        scanf("%d",&T);
        while(T--){
            scanf("%d",&n);
            flag=0;x[0]=0;y[0]=0;
            for(int i=1;i<=n;i++)    scanf("%d%d",&x[i],&y[i]);
            for(int i=0;i<=n;i++){
                for(int j=i+1;j<=n;j++){
                    if(abs(x[i]-x[j])>abs(y[i]-y[j])){
                        cout<<"Notabletocatch"<<endl;
                        flag=1;break;
                    }
                }
                if(flag)    break;
            }
            if(flag)    continue;
            else cout<<"Abletocatch"<<endl;
        }
    }
     
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    逆向学习-内嵌补丁(洞穴代码)
    ubuntu下创建ftp用户,该用户只访问特定目录下的内容
    Ubuntu 14.04 FTP服务器--vsftpd的安装和配置
    Hdu 4223 Dynamic Programming?
    Hdu 3873 Invade the Mars
    Hdu 2025 查找最大元素
    Hdu 1520 Anniversary party
    Hdu 4283 You Are the One
    HTTP协议
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7892476.html
Copyright © 2020-2023  润新知