Codeforces 141B Hopscotch

Posted ezsyshx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 141B Hopscotch相关的知识,希望对你有一定的参考价值。

传送门:CF141B Hopscotch
算法分析:

  1. 判断是否在边界上((a|y)),是否在第一、二象限((y>0))
  2. 接着,判断 (y) 是否比 (a) 小,(x)是否在第一个正方形内
    技术图片
  3. (y)减去(a)(删去第一层),(dir=frac{y}{2a}+1) 表示其所在的层数
  4. 然后就可以得到当前可能位置下的个数 (bottom=(dir-1)*3+2) ,并把可能位置以下的层数减去
  5. 最后再做一遍第一步的判断

    时间复杂度:(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的主要内容,如果未能解决你的问题,请参考以下文章

Hopscotch(codeforces 141B)

Codeforces 141B Hopscotch

River Hopscotch-[二分查找贪心]

A - River Hopscotch

River Hopscotch POJ - 3258

River Hopscotch