给你一个单调不减的序列,问最多能分割成几个严格单调的子序列。
注意到序列个数与出现次数最多的元素有关,直接统计即可。
#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
using namespace std;
const int N=110;
template <class I>
inline void read(I &z)
{
z=0;
char c=getchar();int base=1;
while (!isdigit(c) && c!=‘-‘) c=getchar();
if (c==‘-‘) c=getchar(),base=-1;
while (isdigit(c)) z=z*10+c-‘0‘,c=getchar();
z*=base;
}
int n,T,cnt[N],ans,x;
int main(int argc, char const *argv[])
{
read(T);
while (T--)
{
read(n);
ans=-1;
for (int i=1;i<=n;++i) cnt[i]=0;
for (int i=1;i<=n;++i)
{
read(x);
++cnt[x];
ans=max(ans,cnt[x]);
}
printf("%d\n",ans);
}
return 0;
}
Codeforces Round #698 (Div. 2) 题解
原文:https://www.cnblogs.com/Harexx/p/14354795.html