codeforces194a

link:http://codeforces.com/contest/334/problem/A

很有意思的一道构造题。发现CF上经常出这种不难但是很不错的构造题。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cstring>
 5 #include <cmath>
 6 #include <cctype>
 7 #include <algorithm>
 8 #include <queue>
 9 #include <deque>
10 #include <queue>
11 #include <list>
12 #include <map>
13 #include <set>
14 #include <vector>
15 #include <utility>
16 #include <functional>
17 #include <fstream>
18 #include <iomanip>
19 #include <sstream>
20 #include <numeric>
21 #include <cassert>
22 #include <ctime>
23 #include <iterator>
24 const int INF = 0x3f3f3f3f;
25 const int dir[8][2] = {{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,-1},{1,1}};
26 using namespace std;
27 int main(void)
28 {
29     int n;
30     while (~scanf("%d",&n))
31     for (int i=1;i<=n*n/2;++i)
32     {
33         for (int j=1;j<=n/2;++j)
34         {
35             printf("%d %d ",i,n*n-i+1);
36             ++i;
37         }
38         i--;
39         printf("
");
40     }
41     return 0;
42 }

o(╯□╰)o

官方解题报告上面写的很明白

1  n^2

2  n^2-1

..  ..

n^2/2  n^2/2+1

然后这就是n^2/2组,每一组的和都相同。n^2/2/(n/2) = n组,所以我们只需要从这n^2/2组里面选择n/2组就满足了一个解,这样,恰好可以选出n组来。

原文地址:https://www.cnblogs.com/liuxueyang/p/3260488.html