#34431: 範例2測資如何算?


s11104220@school.saihs.edu.tw (施同學)

學校 : 臺北市立松山高級工農職業學校
編號 : 221254
來源 : [118.165.11.221]
最後登入時間 :
2024-02-04 16:09:17
f606. 2. 流量 -- 2021年1月APCS | From: [123.193.213.137] | 發表日期 : 2023-03-19 17:28

800+400+800=2000

1450->450*2+1000*3=3900

820->820*3=2460

100->100*3=300

1590->590*2+1000*3=4180

2000+3900+2460+300+4770=12840 ???????

 
#34432: Re: 範例2測資如何算?


s11104220@school.saihs.edu.tw (施同學)

學校 : 臺北市立松山高級工農職業學校
編號 : 221254
來源 : [118.165.11.221]
最後登入時間 :
2024-02-04 16:09:17
f606. 2. 流量 -- 2021年1月APCS | From: [123.193.213.137] | 發表日期 : 2023-03-19 17:33

 

所有伺服器的位置 800+400+800=2000

城市0 1450->450*2+1000*3=3900

城市1 820->820*3=2460

城市2 100->100*3=300

城市3 1590->590*2+1000*3=4180

總和2000+3900+2460+300+4770=12840 ???????

我的程式碼

n,m,k=list(map(int,input().split()))
a=[]
for i in range(n):
    a.append(list(map(int,input().split())))
lowest=10000000000
for i in range(k):
    price=0
    plan=list(map(int,input().split()))
    for l in range(m):
        price2=0
        for j in range(n):
            if l==plan[j]:price+=a[j][l]
            else:price2+=a[j][l]
        if price2<=1000:price+=price2*3
        else:price+=(price2)*2+1000
    if lowest>price:
        lowest=price
print(lowest)
 
#34487: Re: 範例2測資如何算?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
f606. 2. 流量 -- 2021年1月APCS | From: [118.160.196.60] | 發表日期 : 2023-03-24 21:36

800+400+800=2000

1450->450*2+1000*3=3900

820->820*3=2460

100->100*3=300

1590->590*2+1000*3=4180

2000+3900+2460+300+4770=12840 ???????


你說的是2 1 2這個方案是吧?

題目:「若城市u有多個伺服器都要傳送流量到城市v,會先將這些起點終點相同的傳輸流量相加再計算花費。」

可是這個方案其中一個伺服器在不同城市(起點不同),所以不能這樣相加

 
#34545: Re: 範例2測資如何算?


s11104220@school.saihs.edu.tw (施同學)

學校 : 臺北市立松山高級工農職業學校
編號 : 221254
來源 : [118.165.11.221]
最後登入時間 :
2024-02-04 16:09:17
f606. 2. 流量 -- 2021年1月APCS | From: [123.193.213.137] | 發表日期 : 2023-03-28 19:41

你說的是2 1 2這個方案是吧?

題目:「若城市u有多個伺服器都要傳送流量到城市v,會先將這些起點終點相同的傳輸流量相加再計算花費。」

可是這個方案其中一個伺服器在不同城市(起點不同),所以不能這樣相加


你是如何算出來的

我還是算不出答案

 
#34546: Re: 範例2測資如何算?


s11104220@school.saihs.edu.tw (施同學)

學校 : 臺北市立松山高級工農職業學校
編號 : 221254
來源 : [118.165.11.221]
最後登入時間 :
2024-02-04 16:09:17
f606. 2. 流量 -- 2021年1月APCS | From: [123.193.213.137] | 發表日期 : 2023-03-28 19:44

你說的是2 1 2這個方案是吧?

題目:「若城市u有多個伺服器都要傳送流量到城市v,會先將這些起點終點相同的傳輸流量相加再計算花費。」

可是這個方案其中一個伺服器在不同城市(起點不同),所以不能這樣相加


你是如何算出來的

我還是算不出答案

或是2 1 2 方案不是最便宜的方案?

 
#34572: Re: 範例2測資如何算?


s11104220@school.saihs.edu.tw (施同學)

學校 : 臺北市立松山高級工農職業學校
編號 : 221254
來源 : [118.165.11.221]
最後登入時間 :
2024-02-04 16:09:17
f606. 2. 流量 -- 2021年1月APCS | From: [114.26.193.179] | 發表日期 : 2023-04-01 15:15

算出來了 但還是NA85%

 
#34580: Re: 範例2測資如何算?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
f606. 2. 流量 -- 2021年1月APCS | From: [118.231.152.169] | 發表日期 : 2023-04-01 20:04

算出來了 但還是NA85%


程式碼再貼上來吧,我看看是哪裡寫錯

 
#34683: Re: 範例2測資如何算?


s11104220@school.saihs.edu.tw (施同學)

學校 : 臺北市立松山高級工農職業學校
編號 : 221254
來源 : [118.165.11.221]
最後登入時間 :
2024-02-04 16:09:17
f606. 2. 流量 -- 2021年1月APCS | From: [123.193.213.137] | 發表日期 : 2023-04-07 18:35

import copy
n,m,k=list(map(int,input().split()))
ma=[]
for _ in range(n):ma.append(list(map(int,input().split())))
ans=[]
for _ in range(k):
    a=list(map(int,input().split()))
    ma2=copy.deepcopy(ma)
    money=0

    for i in range(len(a)-len(set(a))):
        #合併同城市的伺服器
        try:
            while True:
                #尋找除了第二個相同的數
                pos=a.index(a[i],a.index(a[i])+1)
                #sum
                for j in range(m):
                    ma2[i][j]+=ma2[pos][j]
                #刪掉第二個相同的伺服器
                del ma2[pos]
                del a[pos]
        except:#找不到就下一個
            pass
   
    #計算價格
    for i in range(len(a)):
        for j in range(m):
            if a[i]==j:money+=ma2[i][j]#如果伺服器在此城市
            elif ma2[i][j]>1000:money+=1000+ma2[i][j]*2#3000+(ma2[i][j]-1000)*2 = 1000+ma2[i][j]*2
            else:money+=ma2[i][j]*3
               
    ans.append(money)

print(min(ans))
 
#34698: Re: 範例2測資如何算?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
f606. 2. 流量 -- 2021年1月APCS | From: [39.10.9.182] | 發表日期 : 2023-04-08 22:10


    for i in range(len(a)-len(set(a))):


這個範圍不對吧,可以改成range(len(a)-1)

 
#34700: Re: 範例2測資如何算?


s11104220@school.saihs.edu.tw (施同學)

學校 : 臺北市立松山高級工農職業學校
編號 : 221254
來源 : [118.165.11.221]
最後登入時間 :
2024-02-04 16:09:17
f606. 2. 流量 -- 2021年1月APCS | From: [123.193.213.137] | 發表日期 : 2023-04-09 00:12


    for i in range(len(a)-len(set(a))):


這個範圍不對吧,可以改成range(len(a)-1)

謝謝 過關了

 
#34701: Re: 範例2測資如何算?


s11104220@school.saihs.edu.tw (施同學)

學校 : 臺北市立松山高級工農職業學校
編號 : 221254
來源 : [118.165.11.221]
最後登入時間 :
2024-02-04 16:09:17
f606. 2. 流量 -- 2021年1月APCS | From: [123.193.213.137] | 發表日期 : 2023-04-09 00:26


    for i in range(len(a)-len(set(a))):


這個範圍不對吧,可以改成range(len(a)-1)

謝謝 過關了

n,m,k=map(int,input().split())
a=[]
high=999999999
for i in range(n):a.append(list(map(int,input().split())))
for i in range(k):
    p=list(map(int,input().split()))
    b=[p[0]]
    c=[a[0].copy()]
    nprice=0
    for j in range(1,n):
        pj=p[j]
        try:
            for q in range(m):
                c[b.index(pj)][q]+=a[j][q]
        except:
            b.append(pj)
            c.append(a[j].copy())

    for j in range(len(b)):
        nprice+=c[j][b[j]]
        c[j][b[j]]=0
        for q in range(m):
            cjq=c[j][q]
            if cjq<=1000:nprice+=cjq*3
            else:nprice+=1000+cjq*2

    if nprice<high:high=nprice


print(high)
我剛剛重新做了一次



 
ZeroJudge Forum