30道选择, 两道算法
两套卷子,一套Android,一套iOS
两个都不会,因为iOS接触都没接触过,所以选了Android
选择不说了,没学过Java、Android,啥也不会,有几个关于网络的题勉强选了一下
直接看算法题吧
战斗
时间限制: 3000MS
内存限制: 589824KB
题目描述:
小明是一位战士,某天他在和一个怪物战斗,他有n个技能,使用第i个技能能造成ai点伤害,在m个回合中,
每个回合只能释放一种技能,每种技能总共能释放任意次数,但不能连续释放同一个技能超过k次。请问他在这m回合中最多能造成多少伤害。
输入描述 :
第一行包含三个正整数n、m和k ,分别表示技能数量,回合数和同一个技能最多连续释放次数。
第二行包含n个正整数a1,a2,…,an (1 ≤ ai ≤ 109),其中ai表示第 i 个技能能造成的伤害。 ( 2 ≤ n ≤
50000,1 ≤ m ≤ 109,1 ≤ k ≤ 109 ) 数字间两两有空格隔开 输出描述 输出一个数,表示总共能造成伤害的最大值。
样例输入
4 4 2
4 3 2 1
样例输出
15
提示
可以先连续释放技能1两次,造成8点伤害,此时不能再释放技能1,所以释放技能2一次,造成3点伤害,再释放技能1一次,造成4点伤害,总计造成伤害15点,这是能达到的最大值。
63%的通过率
n, m, k = map(int, input().split())
sh = list(input().split())
sh.sort(reverse=True)
res, cnt = 0, 0
now = int(sh[0])
while m > 0:
res += now
cnt += 1
if cnt == k:
cnt = 0
res += int(sh[1])
m -= 1
m -= 1
print(res)
旅行者与山峰
时间限制: 3000MS
内存限制: 589824KB
题目描述:
n座山峰横亘在旅行者与目的地之间,阻挡着他的去路,旅行者必须依次经过这n座山峰到达目的地,即,旅行者必须先经过第一座山,再经过第二座,……,最后经过第n座。
山峰的险峻程度可以用险峻值h衡量,第i座山峰的险峻值为hi。同时,旅行者登山的能力可以用能力值k衡量。
经过一座山峰的方式有两种:攀登和绕过。如果旅行者的能力值k不小于山峰的险峻值h,那么旅行者既可以攀登这座山峰,也可以绕过这座山峰;反之,如果旅行者的能力值小于山峰的险峻值,那么旅行者既不能攀登也不能绕过这座山峰。
同时,每座山峰具有一个加成值a,第i座山峰的加成值为ai。如果旅行者选择攀登第i座山峰,那么在攀登结束后,旅行者的能力值将增加ai;如果旅行者选择绕过,则能力值不会获得加成。
给出旅行者的初始能力值k0,n座山峰的险峻值hi和加成值ai(1≤i≤n),求旅行者至少需要攀登几座山峰才能到达目的地。
输入描述:
首先输入一行,包含两个整数n,k0。其中1≤n≤105,表示山峰个数;1≤k0≤109,表示旅行者的初始能力值。
之后输入一行,包含n个整数h1,h2,……,hn,表示各个山峰的险峻值。1≤hi≤109。
最后输入一行,包含n个整数a1,a2,……,an,表示各个山峰的加成值。0≤ai≤109。
输出描述:
输出一行,包含一个整数,表示旅行者为了到达目的地至少需要攀登的山峰个数。如果旅行者无法到达目的地,则输出-1。
样例输入
5 3
3 2 5 4 6
1 2 1 3 0
样例输出
2
样例解释
样例一中,旅行者可以选择攀登第2和第3座山,这样旅行者经过第1至5座山时的能力值分别为:3、3、5、6、6,均不小于各座山的险峻值。
54%的通过率
def isok(l, k):
for i in range(len(l)):
if int(l[i]) > k:
return -1
return 1
def l11(h1):
l1 = []
for i in range(len(h1)):
if k0 >= int(h1[i]):
l1.append(i)
return l1
def rek(k1, h, cnt):
l1 = l11(h)
res = l1[0]
for i in l1:
res = max(res, int(a[i]))
k1 += res
cnt += 1
return k1, cnt
n, k0 = map(int, input().split())
h = list(input().split())
a = list(input().split())
cnt = 0
for i in range(n):
k0, cnt = rek(k0, h, cnt)
res = isok(h, k0)
if res == 1:
break
if isok(h, k0) == 1:
print(cnt)
else:
print("-1")
——————————————————————————————
下午去了趟医院,回来就只休息了,要是晚上会看算法题的话再写《代码随想路day2》的内容
但估计不会了,身体不舒服还是早点休息比较好,磨刀不误砍柴工嘛