[贪心]总结

最优装箱

n,m=map(int,input().split())
l=list(map(int,input().split()))
l.sort()
cnt,ans=0,0
for i in l:
    if m-i>=0:
        m=m-i
        cnt+=1
        ans+=i
print(cnt,ans)

整数配对

n,m=map(int,input().split())
S=list(map(int,input().split()))
T=list(map(int,input().split()))
S.sort()
T.sort()
s,t=0,0
ans=0
while True:
    if s>=n or t>=m:
        break
    if S[s]<=T[t]:
        s+=1
        t+=1
        ans+=1
    else:
        t+=1
print(ans)

最大组合整数

l=list(map(int,input().split()))
ans=''
for i in range(9,-1,-1):
    if l[i]!=0 or i==0:
        ans+=str(i)*l[i]
print(int(ans))

区间不相交问题

n=int(input())
l=[]
for i in range(n):
    a,b=map(int,input().split())
    l.append([a,b])
l.sort(reverse=True)#先按左端点从小到大排序
print(l)
l.sort(key= lambda x:x[1])#再按右端点从小到大排序
#保证区间宽度最小,且较靠左边的区间在前面
#print(l)
a,b=l[0][0],l[0][1]
ans=1
for i in range(1,n):
    if l[i][0]>=b:
        ans+=1
        b=l[i][1]
print(ans)

区间选点问题

n=int(input())
l=[]
for i in range(n):
    a,b=map(int,input().split())
    l.append([a,b])
l.sort()
l.sort(key= lambda x:x[1])
#print(l)
a,b=l[0][0],l[0][1]
ans=1
for i in range(1,n):
    if l[i][0]>b:#改为大于即可
        ans+=1
        b=l[i][1]
print(ans)

拼接最小数

注意,直接用sort排序会出错

n=int(input())
l=input().split()
def bubble_sort(nums):
    for i in range(n-1):
        for j in range(n-i-1):
            if int(nums[j]+nums[j+1]) > int(nums[j+1]+nums[j]):
                nums[j], nums[j+1] = nums[j+1], nums[j]
    return nums
s=''.join(bubble_sort(l))
print(int(s))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值