UVa:11100 The Trip, 2007
2014-01-17 18:39
381 查看
这个题从8月8号第一次写WA,8月25号再写又WA,今天写了几次又WA,最后AC。。这么水的题居然WA了这么多次。。
题意是让你把一串数字分成几组严格递增的数组,要满足两个原则,1是数组总数尽量少,2在1的前提下最长的数组尽量短。
由于是special judge,思路很简单。最少的数组数量就是里面重复次数最多的数字的个数,要满足2条件,只需要把数字排个序然后挨个往每个数组里加即可。
题意是让你把一串数字分成几组严格递增的数组,要满足两个原则,1是数组总数尽量少,2在1的前提下最长的数组尽量短。
由于是special judge,思路很简单。最少的数组数量就是里面重复次数最多的数字的个数,要满足2条件,只需要把数字排个序然后挨个往每个数组里加即可。
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <queue> #include <vector> #include <algorithm> #define MAXN 10005 #define MOD 1000000007 #define INF 2139062143 #define ll long long using namespace std; int main() { int n,kase=0; while(scanf("%d",&n)&&n) { if(kase) printf("\n"); int arr[MAXN]= {0}; for(int i=0; i<n; ++i) scanf("%d",&arr[i]); sort(arr,arr+n); int same=0,maxn=0; for(int i=0;i<n;++i) { if(!i||arr[i]!=arr[i-1]) same=1; else same++; maxn=max(same,maxn); } vector<int> bag[MAXN]; int ans=0; for(int i=0,j=0; i<n; ++i,++j) { j=j%maxn; bag[j].push_back(arr[i]); } printf("%d\n",maxn); for(int i=0; i<maxn; ++i) { for(int j=0; j<bag[i].size(); ++j) if(!j) printf("%d",bag[i][j]); else printf(" %d",bag[i][j]); printf("\n"); } kase=1; } return 0; }
相关文章推荐
- uva 11100 The Trip, 2007
- UVA - 11100 The Trip, 2007
- UVA 11100 The Trip,2007(贪心)
- [贪心]UVA11100 - The Trip, 2007
- 旅行 The Trip, 2007 UVA - 11100 构造&输出技巧
- UVA 11100 The Trip, 2007 水题一枚
- UVA 11100 - The Trip, 2007
- UVa 11100 - The Trip, 2007
- UVA 11100 The Trip, 2007
- UVA 11100 - The Trip, 2007(贪心)
- UVA 11100 The Trip, 2007 贪心(输出比较奇葩)
- uva 11100 The Trip, 2007
- UVa 11100 - The Trip, 2007
- UVA 11100 The Trip, 2007
- UVA11100- The Trip, 2007
- UVa 11100 The Trip, 2007 (水题)
- uva 11100 The Trip, 2007(贪心)
- UVa 11100 - The Trip, 2007
- UVa 11100 The Trip, 2007 (排序)
- UVA 11100(p81)----The Trip, 2007