宝石项链 时间限制:1.0 s 内存限制:512.0 MB 题目描述 小 A 有一串包含n枚宝石的宝石项链,这些宝石按照在项链中的顺序依次以1,2,...,n编号,第n枚宝石与第1枚宝石相邻。项链由m种宝石组成,其中第i枚宝石种类为ti。 小 A 想将宝石项链分给他的好朋友们。具体而言,小 A 会将项链划分为若干连续段,并且需要保证每段都包含全部种宝石。请帮小 A 计算在满足条件的前提下,宝石项链最多可以划分为多少段。 输入格式 第一行,两个正整数n,m,分别表示宝石项链中的宝石的数量与种类数。 第二行,n个正整数ti,t2,...,tn,表示每枚宝石的种类。 输出格式 输出一行,一个整数,表示宝石项链最多可以划分的段数。 输入样例 1 6 2 1 2 1 2 1 2 输出样例 1 3 输入样例 2 7 3 3 1 3 1 2 1 2 输出样例 2 2 数据范围 对于 40的測试点,保证 2 ≤ n ≤ 1000。 对于所有测试点,保证 2 ≤ n ≤ 105, 2 ≤ m < n, 1 < ti < m, 保证 1,2,...,m 均在t1,t2,..,tn 中出现。
正确答案:参考程序(Python):n,m=map(int,input().split());t=list(map(int,input().split()));from collections import Counter;cnt=Counter();seg=0;need=m;for x in t:if cnt[x]==0:need-=1;cnt[x]+=1;if need==0:seg+=1;cnt.clear();need=m;print(seg)。样例→3、2。核心:贪心切分含全部种。
试卷来源:202512 CCF-GESP编程能力等级认证C++八级真题