给出一个长度为 n 的序列
相信读者们看完题目这题都切了吧。
这题显然是贪心。
线性扫一遍序列,如果可以延长序列的长度就延长,否则就新分一段序列。
同时开个桶维护一下某种元素出现的个数即可。
varzd:array[0..540000] of int64;ql:array[0..540000] of int64;a:array[0..540000] of int64;n,ans,i:longint;k,u:int64;
beginreadln(n,k);ans:=1;for i:=1 to n dobeginread(a[i]);if ql[a[i]]<>ans thenbeginql[a[i]]:=ans;zd[a[i]]:=0;end;u:=u+zd[a[i]];if u>k thenbegininc(ans);zd[a[i]]:=0;ql[a[i]]:=ans;u:=0;end;inc(zd[a[i]]);end;writeln(ans);
end.
本文发布于:2024-01-30 13:42:10,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170659333320398.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |