zoukankan      html  css  js  c++  java
  • 1340: 移动坐标

    1340: 移动坐标

    时间限制: 1 秒  内存限制: 128 MB  |  提交: 85  解决: 30

    题目描述

    给你两个点A、B,和固定移动距离(x,y),问是否可以通过移动A点若干次最终到B点。

    有四种移动方法:
    (a,b)->(a+x,b+y);
    (a,b)->(a+x,b-y);
    (a,b)->(a-x,b+y);
    (a,b)->(a-x,b-y);

    如果可以输出“YES”,否则输出“NO”。

    输入

    第一行:T,测试实例个数:

    第二行:四个整数。x1,y1,x2,y2。分别是A点的坐标和B点的坐标。 - 10^5 ≤ x1, y1, x2, y2 ≤ 10^5

    第三行:两个整数。x,y是固定移动距离    (1 ≤ x, y ≤ 105

    输出

    “YES”或者“NO”。

    样例输入

    2
    0 0 0 6
    2 3
    1 1 3 6 
    1 5
    

    样例输出

    YES
    NO
    思路:分别计算 x 方向和 y 方向 最少 需要多少次 移动可以到达 目标位置的 对应坐标。
       以最后到达的 方向为标准 另一方提前到达的方向只要可以通过左右移动 清除(最大减去最小 为 2 的倍数)已到达方向上多余的移动 就可以到达目标位置
    最后还需要注意,又可能 x 方向或者 y 方向上的 距离差 不是 x 与 y 的倍数 (对应方向永远不可能到达)
    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    
    using namespace std ; 
    
    int main(){
        
        int T ; 
        int x1 , y1 , x2 , y2 ; 
        int x , y ; 
        scanf("%d" , &T) ; 
        while(T--){
            scanf("%d%d%d%d" , &x1 , &y1 , &x2 , &y2) ; 
            scanf("%d%d" , &x , &y) ; 
            
            int dx = abs(x1 - x2) ; 
            int dy = abs(y1 - y2) ; 
            
            if((dx%x!=0)||(dy%y!=0)){
                printf("NO
    ") ; 
                continue ; 
            }
            
            if(dx/x > dy/y){
                int num = dx/x ; 
                num = num - dy/y ; 
                if(num%2 == 0 ){
                    printf("YES
    ") ; 
                    continue ; 
                } else {
                    printf("NO
    ") ; 
                }
            } else if(dx/x < dy/y){
                int num = dy/y ; 
                num = num - dx/x ; 
                if(num%2==0){
                    printf("YES
    ") ; 
                    continue ; 
                } else {
                    printf("NO
    ") ; 
                    continue ; 
                }
            } else if(dx/x == dy/y){
                printf("YES
    ") ; 
                continue ; 
            }
        }
        
        return 0 ; 
    } 
     
  • 相关阅读:
    递归实现全排列问题
    LeetCode
    LeetCode
    连续子元素最大和
    简单模板view调用
    如何清除PHP中不需要的Layout模板
    Model中设置表单验证方法
    数据修改操作
    MVC模式tp框架四中路由形式
    zend Framework的MVC模式的搭建
  • 原文地址:https://www.cnblogs.com/yi-ye-zhi-qiu/p/7869008.html
Copyright © 2011-2022 走看看