食堂評測(python實現)
阿新 • • 發佈:2021-02-03
食堂測評(通訊網理論基礎)
成都某大學已建成n座食堂。國慶期間,小朱同學受朋友小白的邀請,評測該大學的食堂。每座食堂在大眾點評上有一定的評分,每測評一個食堂獲得該食堂分數;同時,每座食堂也有一定概率吃到衛生不達標的食物。小朱要想盡一切辦法,打卡得到儘可能多的分數。現在,為了保證晚上能愉快的玩耍,小白設定了一個踩坑概率。他認為只要概率低於這個水平,他們就不會鬧肚子。
輸入:第一行樣例數量t。對每一個樣例,第一行為踩坑概率P(浮點數),和食堂數量n<1000,之後n行,每行為一個評分m<10000,一個概率p(浮點數)。
輸出:對於每一個樣例,輸出打卡到的最大評分。
樣例:
輸入
3
0.04 3
1 0.02
2 0.03
3 0.05
0.06 3
2 0.03
2 0.03
3 0.05
0.13
1 0.03
2 0.02
3 0.05
輸出:
2
4
6
題目分析:
採用01揹包思路進行處理解決。
import sys, time,math
start_1=time.time()
ML=0
M1=[]
M1_S=[]
M2_P=[]
Memory_formal=[]
Memory_latter=[]
cou=0
def backet(M1_S,M2_P,Cap):
if cou==1:
for item in range(Cap+1):
Memory_latter. append(0)
for i in range(len(M1_S)):
Memory_formal.clear()
for i0 in range(len(Memory_latter)):
Memory_formal.append(Memory_latter[i0])
for item in range(1,Cap+1):
if M1_S[i] <= Cap:
if item-M1_S[i]<0:
Memory_latter[ item] = Memory_formal[item]
else:
if(Memory_formal[item] > Memory_formal[item-M1_S[i]]+M2_P[i]):
Memory_latter[item]=Memory_formal[item]
else:
Memory_latter[item]=Memory_formal[item-M1_S[i]]+M2_P[i]
f = open('1.txt', 'r')
Count=int(f.readline())
for item1 in range(Count):
cou=0
M1.clear()
M1_S.clear()
M2_P.clear()
ML=0
Memory_formal.clear()
Memory_latter.clear()
Cap,Num=f.readline().split()
Num=int(Num)
for item2 in range(Num):
a,b=f.readline().split()
ml=len(b)
if(ML<ml):
ML=ml
M1.append(eval(b))
M2_P.append(int(eval(a)))
Cap=int(eval(Cap)*(10**(ML-2)))
for item3 in range(Num):
M1_S.append(int((M1[item3])*(10**(ML-2))))
cou=cou+1
backet(M1_S,M2_P,Cap)
print(Memory_latter[-1])
end_1= time.time()
print('Running time: %s Seconds' % (end_1 - start_1))
讀取資料存放至txt文件中即可。
測試結果如下: