首页 > 代码库 > 【noi 2.7_2987】小兔子捡金币(算法效率)
【noi 2.7_2987】小兔子捡金币(算法效率)
题意:问蛇形回文的访问次序。
解法:很基础的一道题,先算出询问的点处在第几环,再用4个while一个个走一遍这一圈。P.S.我一直想办法想用不用while(),可是真的一直WA!所以用while()既方便又准确,不要小瞧她。
P.P.S.本蒟蒻刷DP刷累了(不会做~(┬_┬)),便来做这题,可惜耗时也不小......
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 #define N 10010 7 8 int n,x,y,xx,yy; 9 10 int mmin(int x,int y) {return x<y?x:y;} 11 int judge() {return (x==xx&&y==yy)?1:0;} 12 13 int solve() 14 { 15 int c=mmin(mmin(x-1,y-1),mmin(n-x,n-y)),t=0; 16 int e=n-1; 17 for (int q=1;q<=c;q++) t+=4*e,e-=2; 18 xx=c+1,yy=c; 19 while (!judge()&&yy<n-c) yy++,t++; 20 while (!judge()&&xx<n-c) xx++,t++; 21 while (!judge()&&yy>c+1) yy--,t++; 22 while (!judge()&&xx>c+1) xx--,t++; 23 return t; 24 } 25 26 int main() 27 { 28 int T; 29 scanf("%d%d",&T,&n); 30 while (T--) 31 { 32 scanf("%d%d",&x,&y); 33 printf("%d\n",solve()); 34 } 35 return 0
【noi 2.7_2987】小兔子捡金币(算法效率)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。