2025重庆市赛
Dashboard - 第十三届重庆市大学生程序设计竞赛 - Codeforces
赛时,认出是个构造题,太紧张或者是其他原因,没有构造好。
思路:
构造1*2大小的方块,把两个不同的区域放一起,1与(2->n),2与(3->n),以此类推,都放进去。
放得下吗? 来看C(n,2)*2 与 n*n
放完之后,正方形 还有1*n的空闲区域。
来看代码:
#include <iostream>
#include <vector>
using namespace std;int main()
{int t;cin >> t;while (t--){int n;cin >> n;vector<vector<int>>arr(n, vector<int>(n,1));int x = 0;int y = 0;for (int i = 1; i < n; i++){for (int j = i+1; j <= n; j++){arr[x][y] = i;arr[x + 1][y] = j;if (y == n - 1){y = 0;x += 2;}elsey++;}}for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){cout << arr[i][j] << " ";}cout << "\n";}}
}