【loj】#6003. 「网络流 24 题」魔术球(贪心)

来源:互联网 发布:2017linux系统推荐 编辑:程序博客网 时间:2024/06/05 03:33

记录一个菜逼的成长。。

题目链接

假设现在有k个柱子(k<n),现在要放的数是num
如果num都不能放在前k个柱子上,就把num放在第k+1个柱子上

#include <bits/stdc++.h>using namespace std;#define ALL(v) (v).begin(),(v).end()#define cl(a,b) memset(a,b,sizeof(a))#define clr clear()#define pb push_back#define mp make_pair#define fi first#define se secondtypedef long long LL;typedef pair<int,int> PII;const int INF = 0x3f3f3f3f;const int maxn = 100 + 10;vector<int>a[maxn];bool issqnumber(int x){  int k = floor(sqrt(x));  return k * k == x; }int main(){  int n;  while(~scanf("%d",&n)){    int num = 1;    int k = 1;    while(1){      int flag = 0;      for( int i = 1; i <= k; i++ ){        if(a[i].empty() || issqnumber(num + a[i].back())){          a[i].pb(num++);          flag = 1;        }      }      if(!flag){        if(k < n)k++;        else break;      }    }    printf("%d\n",num-1);    for( int i = 1; i <= n; i++ ){      for( auto x : a[i] ){        printf("%d ",x);      }      puts("");    }  }  return 0;}
阅读全文
0 0