您的位置:首页 > 其它

cf A. Inna and Pink Pony(思维题)

2013-12-19 17:28 288 查看
题目:http://codeforces.com/contest/374/problem/A

题意:求到达边界的最小步数。。

刚开始以为是 bfs,不过数据10^6太大了,肯定不是。。。

一个思维题,要注意超边界。。。

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

const int INF=(1<<28);
int n,m,x,y,a,b;

int ok(int x1,int y1)
{
if(x1<0) x1=-x1;
if(y1<0) y1=-y1;
if(x1%a==0&&y1%b==0)//能恰好 到达边界
{
if((x1/a-y1/b)%2==0)//而且两个的差为偶数。。
{
if(x1/a>y1/b)
return x1/a;
else
return y1/b;
}
}
return INF;
}
int main()
{
int d[10];
while(cin>>n>>m>>x>>y>>a>>b)
{
if((x==1&&y==m)||(x==n&&y==1)||(x==n&&y==m)||(x==1&&y==1))
{
cout<<"0"<<endl;
continue;
}
if(a>=n||b>=m)//有可能一步就会越界。。
{
cout<<"Poor Inna and pony!"<<endl;
continue;
}
d[0]=ok(x-1,y-m);
d[1]=ok(x-n,y-1);
d[2]=ok(x-n,y-m);
d[3]=ok(x-1,y-1);
sort(d,d+4);
if(d[0]==INF)
cout<<"Poor Inna and pony!"<<endl;
else
cout<<d[0]<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: