Home PageDIY ContestsProblemsRanklistStatusStatistics
3 5 3 21
5 no ans
主要就是建好矩阵和存贮坐标和
不小心还wa了一次。。唉
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 1000000+1500
int stamp[1005][1005];
int coor[N];
int t1,t2,n,cir;
void value(int x,int y)
{if(x%2==0){stamp[x][y]=t1;coor[t1]=x+y+2;t1+=2;}else{stamp[x][y]=t2;coor[t2]=x+y+2;t2+=2;}}
void build()
{for(int i=0;i<=(n-1)/2;i++){for(int j=i;j<n;j++)if(!stamp[i][j])value(i,j);for(int j=i;j<n-i;j++)if(!stamp[j][n-1-i])value(j,n-1-i);for(int j=n-1-i;j>=0;j--)if(!stamp[n-1-i][j])value(n-1-i,j);for(int j=n-1-i;j>i;j--)if(!stamp[j][i])value(j,i);}}
int main()
{int m;while(~scanf("%d %d",&n,&m)){t1=1,t2=2,cir=0;memset(stamp,0,sizeof(stamp));memset(coor,0,sizeof(coor));build();int result=0x3fffffff;t1-=2,t2-=2;int end=max(t1,t2);for(int i=1;i<=end;i++){if(m-i<=0)break;if(m-i<N&&m<N){if(coor[i]&&coor[m-i]&&i!=m-i)result=min(result,coor[i]+coor[m-i]);}}if(result!=0x3fffffff)printf("%dn",result);elseprintf("no ansn");}return 0;
}
本文发布于:2024-02-05 06:45:44,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170726597264037.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |