NC213818. [网络流24题]魔术球问题
描述
输入描述
第1 行有1个正整数n,表示柱子数。
输出描述
程序运行结束时,将n 根柱子上最多能放的球数以及相应的放置方案输出。文件的第一行是球数。接下来的n行,每行是一根柱子上的球的编号。
示例1
输入:
4
输出:
11 1 8 2 7 9 3 6 10 4 5 11
C++ 解法, 执行用时: 4ms, 内存消耗: 428K, 提交时间: 2022-07-08 13:51:45
#include<bits/stdc++.h> #define pii pair<int,int> using namespace std; typedef long long ll; const int maxn=60; int n,m,s,t; int f[60][60]; int main(){ ios::sync_with_stdio(0), cin.tie(0); cin>>n; int p=(n*(n+2)+(n&1)-2)/2; cout<<p<<"\n"; for(int i=1;i<=p;i++) for(int j=1;j<=n;j++){ int num=f[j][f[j][0]]; if(!num||(((int)sqrt(num+i))*((int)(sqrt(num+i))))==num+i){ f[j][++f[j][0]]=i; break; } } for(int i=1;i<=n;i++){ for(int j=1;j<=f[i][0];j++) cout<<f[i][j]<<" "; cout<<"\n"; } }