Codeforces 141B Hopscotch
Posted ezsyshx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 141B Hopscotch相关的知识,希望对你有一定的参考价值。
传送门:CF141B Hopscotch
算法分析:
- 判断是否在边界上((a|y)),是否在第一、二象限((y>0))
- 接着,判断 (y) 是否比 (a) 小,(x)是否在第一个正方形内
- 将(y)减去(a)(删去第一层),(dir=frac{y}{2a}+1) 表示其所在的层数
- 然后就可以得到当前可能位置下的个数 (bottom=(dir-1)*3+2) ,并把可能位置以下的层数减去
最后再做一遍第一步的判断
时间复杂度:(O(1))
```cpp
include
include
using namespace std;
int a,y; double x;
void work();
int main()
{
cin>>a>>x>>y;
if(y%a==0 || y<=0) printf("-1");
else work();
return 0;
}
void work()
{
if(y>0 && y<a && x>-a1.0/2 && x<a1.0/2)
{printf("1"); return;}
y-=a;
int dir=y/(2a)+1;
int bottom=(dir-1)3+2;
y-=(dir-1)2a;
if(y>0 && y<a)
if(x>-a1.0/2 && x<a1.0/2)
{
printf("%d",bottom); return;
}
if(y>a && y<a*2)
{
if(x==0) {printf("-1"); return;}
if(x>-a && x<0)
{
printf("%d",bottom+1); return;
}
else
if(x>0 && x<a)
{
printf("%d",bottom+2); return;
}
}
printf("-1");
}
以上是关于Codeforces 141B Hopscotch的主要内容,如果未能解决你的问题,请参考以下文章