打包
问题描述
Lazy有N个礼物需要打成M个包裹,邮寄给M个人,这些礼物虽然很便宜,但是很重。Lazy希望每个人得到的礼物的编号都是连续的。为了避免支付高昂的超重费,他还希望让包裹的最大重量最小。
输入格式
一行两个整数N和M。
一行N个整数,表示N个礼物的重量。
输出格式
一个整数,表示最小的最大重量。
样例输入
3 2
1 1 2
样例输出
2
数据规模和约定
N, M <= 100,000
重量 <= 1,000
n,m=map(int,input().split())
la=list(map(int,input().split()))
lb=la
def judge(tar):
n=len(la)
tar2=tar
a=0
i=0
while i<n:
if la[i]<tar:
tar=tar-la[i]
i=i+1
else:
tar=tar2
a=a+1
if a>=m:
return False
return True
def erfen():
l,r=max(la),sum(la)
while l<=r:
mid=(l+r)//2
if judge(mid):
r=mid-1
else:
l=mid+1
print(min(l,r))
erfen()
最小字符串
问题描述
给定一些字符串(只包含小写字母),要求将他们串起来构成一个字典序最小的字符串。
输入格式
第一行T,表示有T组数据。
接下来T组数据
每组第一行一个正整数n,表示字符串个数。
接下来n行,每行一个字符串(长度不超过100)。
输出格式
T行,每行一个字符串。
样例输入
1
3
a
b
c
样例输出
abc
数据规模和约定
T<=7000,n<=100;
t=int(input())
lb=[]
for i in range(t):
n=int(input())
la=[]
for l in range(n):
la.append(input())
for j in range(n):
for k in range(j+1,n):
if la[j]+la[k]>la[k]+la[j]:
la[j],la[k]=la[k],la[j]
s="".join(la)
lb.append(s)
for i in range(t):
print(lb[i])