题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1800
看图明白的题意……贪心的思路。先排序,让一个等级高的尽可能多地带小弟,然后记下有多少组即可。
1 #include <algorithm> 2 #include <iostream> 3 #include <iomanip> 4 #include <cstring> 5 #include <climits> 6 #include <complex> 7 #include <fstream> 8 #include <cassert> 9 #include <cstdio> 10 #include <bitset> 11 #include <vector> 12 #include <deque> 13 #include <queue> 14 #include <stack> 15 #include <ctime> 16 #include <set> 17 #include <map> 18 #include <cmath> 19 20 using namespace std; 21 22 const int maxn = 3010; 23 int n, x, c; 24 int s[maxn]; 25 26 int main() { 27 // freopen("in", "r", stdin); 28 while(~scanf("%d", &n)) { 29 c = 1; 30 x = 1; 31 for(int i = 0; i < n; i++) { 32 scanf("%d", &s[i]); 33 } 34 sort(s, s+n); 35 for(int i = 1; i < n; i++) { 36 s[i]==s[i-1]?x=max(x,++c):c=1; 37 } 38 printf("%d\n", x); 39 } 40 }
转而一想,就是算这一堆数据里出现次数最多的那个数据。因为有前置0的问题,可以作为字符串处理,用hash或者trie来做。
时间: 2024-10-25 20:42:44