码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 141B Hopscotch

时间:2019-02-10 16:25:05      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:bottom   code   算法分析   psc   www.   第一个   判断   ||   block   

传送门: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

标签:bottom   code   算法分析   psc   www.   第一个   判断   ||   block   

原文地址:https://www.cnblogs.com/ezsyshx/p/10359360.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!