Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 5, 2008 14:25:08

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

а где?
во флейме, или прямо здесь?
создавай, я присоединюсь)



Офлайн

#2 Авг. 5, 2008 14:30:57

crchemist
От:
Зарегистрирован: 2008-07-09
Сообщения: 379
Репутация: +  0  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

я тільки пропоную - то до модераторів. Просити певно треба alafin або slav0nic.



Офлайн

#3 Авг. 5, 2008 14:45:18

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

ты имеешь в виду не тему, а раздел?
спортивное программирование?



Офлайн

#4 Авг. 5, 2008 14:47:53

crchemist
От:
Зарегистрирован: 2008-07-09
Сообщения: 379
Репутация: +  0  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

шось типу того



Офлайн

#5 Авг. 5, 2008 14:50:25

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

я отписался



Офлайн

#6 Авг. 5, 2008 15:08:25

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

crchemist
эта тема не на настолько актуальна, чтоб создавать раздел, создавайте отдельные темы по названию конкурсов например

да и на spoj есть раздел по питону, хотя там не принято постить ответы)

Офлайн

#7 Авг. 5, 2008 15:18:03

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

ок, будем постить в этой теме)



Офлайн

#8 Авг. 7, 2008 00:06:01

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

Я расстроен, я думал этот код будет очень быстрым:

import gc
gc.disable()
import sys
import psyco
psyco.full()
fin = sys.stdin.read
#from datetime import datetime#
#f = open("sumtrian.txt")#
#fin = f.read#
#fout = open("sumtrian.out", "w")#
#tmpout = sys.stdout#
#sys.stdout = fout#

def fmax(l):
result = None
for x in l:
result = x if x > result else result
return result

def main():
nums = {}
for x in range(100):
nums[str(x)] = x

data = fin().split()
dataLen = len(data)
for i in range(1,dataLen):
data[i] = nums[data[i]]
start = 2
while start < dataLen:
i = 0
rc = data[start-1]-1
while i < rc:
data[start+i+1] += data[start]
for j in range(start, start+i):
data[j+i+2] += data[j] if data[j] > data[j+1] else data[j+1]
start += i + 1
i = i + 1
data[start+i] += data[start-1]
print fmax(data[start: start+i+1])
start += i + 2

#t = datetime.now()#
main()
#sys.stdout = tmpout#
#print datetime.now() - t#
#fout.close()#
#f.close()#
а он на лучшем выдал 0.99
есть только надежда допилить его до SUMITR



Офлайн

#9 Авг. 15, 2008 13:03:51

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

вернулся к старому коду и оптимизировал его в соответствии со своими же замерами
в итоге 0.80 на следующем коде:

from collections import defaultdict
import sys
from cStringIO import StringIO
import gc; gc.disable()
import psyco
psyco.full()
fin = StringIO(sys.stdin.read())
fout = StringIO()
rinput = fin.readline
routput = fout.write

def fmax(l):
result = None
for x in l:
result = x if x > result else result
return result

def main():
nums = defaultdict(int)
for x in range(100):
nums[str(x)] = x
for caseNum in range(int(rinput())):
rowCount=nums[rinput().rstrip()]
lastLine = prevLine = [nums[rinput().rstrip()],]
for i in range(1, rowCount):
lastLine = rinput().split()
for i in range(len(lastLine)):
lastLine[i] = nums[lastLine[i]]
lastLine[0] += prevLine[0]
lastLine[-1] += prevLine[-1]
for j in range(1, i):
lastLine[j] += prevLine[j] if prevLine[j] > prevLine[j - 1] else prevLine[j - 1]
prevLine = lastLine
routput('%d\n' % fmax(lastLine))
fout.seek(0)
sys.stdout.write(fout.read())
main()



Офлайн

#10 Авг. 15, 2008 13:06:49

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Как еще можно оптимизировать следующий код?

с заменой max было понятно, но это дало только 0.1
а вот самый интересный, хотя и логичный, прирост произошел с заменой

[nums[x] for x in rinput().split()]
на
lastLine = rinput().split()
for i in range(len(lastLine)):
lastLine[i] = nums[lastLine[i]]



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version