zoukankan      html  css  js  c++  java
  • codeforce 贪心1

    走棋子到棋盘四个角,输出最小步数

    codeforces

    输入:m*n  (棋盘 从1开始)

            i  j  (当前位置)

           a b  (每次可以走 (i+a,j+b) (i+a,j-b) (i-a,j-b) (i-a,j+b) ) 这为一步

    /************************************************* 
    *
    * 画个图出来就可以了~~ 
    * 
    **************************************************/ 
    
    #include<iostream>
    #include<cmath>
    int n,m,i,j,a,b; 
    const int oo = 1000000000;
    using namespace std;
    int find(int x,int y)
    {
        if((x%a)||(y%b)) return oo; // position satisfied
        x=abs(x/a);y=abs(y/b); 
        int k=x-y;               // cout<< x << " " <<y<<" "<<k<<endl; 
        if(k&1)  return oo;      // 奇偶不同,不在交叉线上, 
        if(!k )  return y;      // 正方形对角线  
        if((k<0)){
            if((i>a)||(i+a<=n))  return y;   //留一个单位,对角线交叉着跳     
            return oo;
        }
        if((k>0)&&((j>b)||(j+b<=m)))  return x;
        return oo;
    }
    
    int main()
    { 
        ios::sync_with_stdio(0);
        cin>>n>>m>>i>>j>>a>>b;
        
        int ans,t;
        ans=min(find(i-1,j-1),find(i-1,m-j));
        t = min(find(n-i,j-1),find(n-i,m-j));  //cout<<find(n-i,m-j)<<" "<<t<<endl;
        ans=min(ans,t);
        if(ans==oo) cout<<"Poor Inna and pony!"<<endl;
        else cout<<ans<<endl;   
        
        return 0;
    }
  • 相关阅读:
    最终一致性解决实例
    分布式事务一致性方案
    分布式事务
    OSX
    JAVA
    Eclipse
    Activiti
    CentOS
    用Visual Studio 2015 编写 MASM 汇编程序(二)从头开发一个Win32汇编程序
    Oracle
  • 原文地址:https://www.cnblogs.com/tinyork/p/3482334.html
Copyright © 2011-2022 走看看