题目一:
题目描述
最近小强很喜欢玩一款勇士打怪的游戏,勇者和怪物都有一个属性:能力值。当勇者遭遇一个怪物时,战斗方式如下:
如果勇者的能力值不低于怪物的能力值,勇者胜。
否则勇者败。
勇者可以以任意顺序与怪物战斗,当勇者成功击败一只怪物后他可以获得一枚金币,初始时勇者全币数为0,任意时刻勇者手中的金币数不能为负。
勇者可以在任意时刻花费一枚金币,提升1点能力值。 现在小强想知道,勇者手中最多可以有多少金币,怪物可以不打完。
输入描述
第一行两个空格分隔的正整数 a a a, n n n,分别代表勇者的初始能力值和怪物的数量。
接下来一行n个空格分隔的正整数 A i {A_i} Ai,用来描述第i只怪物的能力值。
输出描述
仅一行一个整数表示答案。
示例1
输入
1 3
2 2 1
输出
2
说明
击败能力值最低的怪物获得1金币,然后提高1能力值,然后击败剩下两只怪物,手中有2金币。
'''
贪心算法
'''
def max_coins(ability, monster_abilities):
monster_abilities.sort() # 对怪物的能力值进行排序
coins = 0
max_coins = 0
for monster_ability in monster_abilities:
if ability >= monster_ability: # 战胜怪兽
coins += 1
max_coins = max(max_coins, coins)
else: # 使用钞能力也无法战胜怪兽
if monster_ability > coins + ability:
break
else: # 临阵花钱提升自己
coins -= monster_ability - ability
coins += 1
ability = monster_ability
return max_coins
if __name__ == '__main__':
ability , num_monsters = map(int, input().split())
monster_abilities = list(map(int, input().split()))
print(max_coins(ability, monster_abilities))
2
题目二:
题目描述
小红计划在 m m m天刷 n n n道题,第 i i i天计划刷 a i a_i ai题。小红会严格按照计划刷题,到第 i i i天时,小红会评估剩下平均每天需要刷 t t t题。若 a i a_i ai大于 t t t,则记录 > > >;若等于 t t t则记录 = = =;若小于 t t t,则记录 < < <。
请你输出小红的评估记录。
输入描述
第一行输入两个正整数n和m。
接下来第二行输入m个非负整数 a i a_i ai。
保证所有的 a i a_i ai的和等于n。
输出描述
输出为一行字符串,表示小红评估记录。
示例1
输入
15 6
4 5 0 3 1 2
输出
‘>><><=’
示例2
输入
12 4
3 2 5 2
输出
‘=<>=’
'''
模拟
'''
def solve(n, m, arr):
resi = n
ans = ''
for idx, num in enumerate(arr):
if num > resi / (m - idx):
ans += '>'
elif num < resi / (m - idx):
ans += '<'
else:
ans += '='
resi -= num
return ans
if __name__ == '__main__':
n, m = map(int, input().split())
arr = list(map(int, input().split()))
print(solve(n, m, arr))
>><><=
两道题只在用例上做了测试,如果有错误,欢迎交流!