題目描述:
做冰淇淋需要 n 種原料,現每種原料有存貨 w = [w1, w2, …] 個,對應的** v = [v1, v2, …]
存貨用完就需要去商店買,現共有錢 m 元。
問,最多能做多少冰淇淋。(1<=n,vi<=100,1<=m,wi<=10^12)
示例輸入:
3 10
2 5 3
2 1 3
輸出:4
這是當時寫的**,思路就是選存貨最少的做成冰淇淋,存貨全部減去這個數,再買材料,思路正確,但是複雜度太高,主要是每次找最少太費時間了,應該直接先排序的,或者根本不用找最小,就每次做乙個。這道題的複雜度貌似必須是o(n)。
import sys
if __name__ == "__main__":
n, m = [int(x) for x in sys.stdin.readline().strip().split()]
exist = [int(x) for x in sys.stdin.readline().strip().split()]
money = [int(x) for x in sys.stdin.readline().strip().split()]
total_money = sum(money)
ans = 0
min_num = min(exist)
ans += min_num
exist_buf = [i - min_num for i in exist]
exist = exist_buf
while m > 0:
min_num = max(1, m // total_money)
ans += min_num
need = [i - min_num for i in exist]
need_money = 0
for i in range(n):
exist_buf[i] = max(exist[i] - min_num, 0)
if need[i] < 0:
need_money += abs(need[i]) * money[i]
exist = exist_buf
m -= need_money
if m < 0:
ans -= 1
print(ans)
騰訊筆試記
這是乙個千載難逢的機會,這是乙個程式愛好者之間的擂台,這是一次千里挑一的冒險,這是乙個走向地獄與天堂的路口,這是一場充滿著變數的遊戲,歸根結底,這是一次筆試 筆試嘛,考的是什麼?是知識,是細心,是心理素質。從今天凌晨2點27分收到筆試的簡訊通知,心裡著實開始緊張了,我的心裡素質一向不太發達,尤其是面...
騰訊筆試總結
1 二叉樹遍歷例如 先序 中序 後序 2元件可靠性 3記憶體分配 最佳,最差,迴圈等 4命令 chown chmod 5那種方案是安全的。作業系統。程序,可用資源數,最大分配,已經分配 6測試用例 7最短路徑 8位址轉換 9sizeof 10雜湊函式,雜湊函式,衝突探測 11risc 12有限自動機...
騰訊筆試題
一.單選題 每題4 分,15題,共60分 1.考慮函式原型void hello int a,int b 7,char pszc 下面的函式呼叫鐘,屬於不合法呼叫的是 a hello 5 b.hello 5,8 c.hello 6,d.hello 0,0,2.下面有關過載函式的說法中正確的是 a.過載...