分糖果

问题描述

11.分糖果 - 蓝桥云课 (lanqiao.cn)

最近暑期特训算法班的同学们表现出色,他们的老师肖恩决定给他们分发糖果。肖恩购买了 个不同种类的糖果,用小写的阿拉字母表示。每个糖果必须分发给一个同学,并且每个同学至少要分到一个糖果。同学们的开心程度定义为他们所分到的糖果组成的字符串 s的字典序。肖恩希望同学们的开心程度相差尽量小,因此他要找到一种方案,使得所有糖果组成的字符串中字典序最大 的字符串尽可能小。请输出能够实现字典序最小可能的 max(s1, 2,s3,...,st)。

输入描述

第一行输入两个整数n和2,分别表示有n个糖果个同学 第二行输入一个长度为n的字符串S,S表示第i个糖果的种类

输出描述

输出一个字符串,为所有糖果组成的字符串中字典序最大的字符串最小的可能值。

<iframe src="//player.bilibili.com/player.html?aid=794169633&bvid=BV1FC4y1k7sv&cid=1416149200&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" width="100%" height="650px"

MyCode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#https://www.bilibili.com/video/BV1FC4y1k7sv?t=871.0
import math
n,x=map(int,input().split())# n是糖果个数 x是同学人数
s=list(input())
s.sort()
s=['']+s#让下标从1开始
if s[1]==s[x]:#因为已经排序,如果第一个和最后一个相同,即所有的糖果都相同
if s[x+1]==s[-1]:
print(s[x],end="")#先每人分一个糖果
for i in range(x+1,x+math.ceil(((n-x)/x)+1)):#剩下的糖果平均分,ceil向上取整
print(s[i],end="")
else:
print("".join(s[x:]))#剩下的糖果平均分给一人
else:
print(s[x])#剩下的糖果平均分给一人

分糖果
https://ianwusb.blog/2024/03/21/分糖果/
作者
Ianwusb
发布于
2024年3月21日
许可协议