内部网站如何做,南阳网站建设制作,青岛建设集团网站,公众号营销【题目描述】 现在#xff0c;我的 上有 n 个数字#xff0c;分别是 a1; a2; a3; :::; an。 我现在需要删除其中的 k 个数字。当然我不希望随随便便删除#xff0c;我希望删除 k 数字之后#xff0c;剩下的 n k 个数中有最多的不同的数 【输入格式】 第 两个正整数 n 和 …【题目描述】 现在我的 上有 n 个数字分别是 a1; a2; a3; :::; an。 我现在需要删除其中的 k 个数字。当然我不希望随随便便删除我希望删除 k 数字之后剩下的 n k 个数中有最多的不同的数 【输入格式】 第 两个正整数 n 和 k含义如题 描述。 接下来 有 n 个 负整数分别是 a1 到 an。 【输出格式】 共 个整数 ans表 删除了 k 个数字后最多的不同的数的个数。 【样例输入】 4 1 1 3 1 2 【样例输出】 3 【样例解释】 如果删去第 个 1: 在312中有 3 个不同的数 如果删去 3: 在112中有 2 个不同的数 如果删去第 个 1: 在132中有 3 个不同的数 【解题思路】 排序去重什么的然后判断一下有木有比k大大概就是这个样子 1 program del;2 var a:array[0..100000] of longint;3 i,j,n,k,ans:Longint;4 procedure sort(l,r: longint);5 var6 i,j,x,y: longint;7 begin8 i:l;9 j:r;
10 x:a[(lr) div 2];
11 repeat
12 while a[i]x do
13 inc(i);
14 while xa[j] do
15 dec(j);
16 if not(ij) then
17 begin
18 y:a[i];
19 a[i]:a[j];
20 a[j]:y;
21 inc(i);
22 j:j-1;
23 end;
24 until ij;
25 if lj then
26 sort(l,j);
27 if ir then
28 sort(i,r);
29 end;
30 begin
31 assign(input,del.in); reset(input);
32 assign(output,del.ans); rewrite(output);
33 read(n,k);
34 ans:n;
35 for i:1 to n do read(a[i]);
36 sort(1,n);
37 for i:1 to n do
38 begin
39 if a[i]a[i-1] then
40 begin
41 if k0 then dec(k);
42 dec(ans);
43 end;
44 end;
45 writeln(ans-k);
46 close(input);
47 close(output);
48 end. 转载于:https://www.cnblogs.com/wuminyan/p/4744007.html