1 条题解
-
0
#include<iostream> #include<cstdio> #include<cmath> using namespace std; int m,n,s,xbrox,xbroy,minx,miny;//xbrox,xbroy表示 谢bro 当前位置坐标 //minx,miny表示 谢bro 距离最近的扔饭卡的地点的坐标 double mindist;//mindist表示 谢bro 距离最近的扔饭卡的地点的距离 signed main() { scanf("%d%d%d",&m,&n,&s); xbrox=xbroy=m/2; if(m&1==0) xbrox--,xbroy--; for(int i=1;i<=n;++i) { int x=i,y=i;//老师坐标 int lx=max(i-s,1),rx=min(i+s,m);//老师巡查的 x 轴范围 int ly=max(i-s,1),ry=min(i+s,m);//老师巡查的 y 轴范围 if(xbrox>=lx&&xbrox<=rx&&xbroy>=ly&&xbroy<=ry)//如果 谢bro 的位置在巡查范围内 { cout<<"no";//扔不了一点 return 0;//结束 } else { double curdist=max(abs(xbrox-x),abs(xbroy-y));//计算直线坐标 if(abs(xbrox-x)!=abs(xbroy-y))//如果跨对角线 curdist+=0.5;//算上对角线更长的距离 mindist=min(mindist,curdist);//更新最短路 } } cout<<mindist;//输出答案(必须用cout) return 0; }
- 1
信息
- ID
- 599
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 2
- 已通过
- 1
- 上传者