嘛嘛……作为一只滚回去高考的高三退役OIer,抱着打酱油的心态回来再参加一次NOIP……
今天刚好有心情,还是补一篇题解吧,权当弥补一下没啥时间给学弟学妹(雾)们讲题的补偿……
P.S. 由于高三了= =所以没A的题就不改了……就写写暴力思路好了
其实之前也做了几场比赛,不过时间关系就没写题解……
不过断了这么久大概已经没人会看到了吧……0.0哇一不小心就1点多了
Day1
magic
题目难度很和谐= =签到题,然而本弱鸡写的太慢了囧,被旁边的高二学弟完虐(大雾)
做法:直接分情况讨论模拟吧……
1 //SX-064 Tunix NOIP2015 day1 T1 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> 5 #include<iostream> 6 #include<algorithm> 7 #define rep(i,n) for(int i=0;i<n;i++) 8 #define F(i,j,n) for(int i=j;i<=n;++i) 9 #define D(i,j,n) for(int i=j;i>=n;--i) 10 using namespace std; 11 12 typedef long long LL; 13 const int N=50; 14 15 int a[N][N],n; 16 17 int main(){ 18 freopen("magic.in","r",stdin); 19 freopen("magic.out","w",stdout); 20 scanf("%d",&n); 21 22 a[1][n/2+1]=1; 23 int x=1,y=n/2+1; 24 25 F(i,2,n*n){ 26 if (x==1 && y!=n){ 27 a[n][y+1]=i; 28 x=n; y=y+1; 29 } 30 else if (y==n && x!=1){ 31 a[x-1][1]=i; 32 x=x-1; y=1; 33 } 34 else if (x==1 && y==n){ 35 a[2][n]=i; 36 x=2; 37 } 38 else if (x!=1 && y!=n){ 39 if (a[x-1][y+1]==0){ 40 a[x-1][y+1]=i; 41 x=x-1; y=y+1; 42 }else{ 43 a[x+1][y]=i; 44 x=x+1; 45 } 46 } 47 } 48 F(i,1,n) 49 F(j,1,n) printf("%d%c",a[i][j],j==n ? '\n' : ' '); 50 return 0; 51 }