Re: задачка с acm.uva.es :)
- From
- Sergey Andrianov (2:5020/1507.400)
- To
- Alexey Burdin
- Date
- 2002-12-08T23:23:44Z
- Area
- RU.ALGORITHMS
Здравствуй, Alexey!
Однажды 07-Dec-02 в 23:42 Alexey Burdin (2:5012/32.768)
написал All по поводу
-=- задачка с acm.uva.es :) -=-
AB> Дана матрица 100х100 (ну или меньше) целых чисел от -127 до 127.
AB> Необходимо найти в ней такой прямоугольник, чтобы сумма всех чисел
AB> в нем была максимальна (из всех возможных таких прямоугольников).
AB> На ум (?) сразу приходит полный перебор: 1<=x1,y1<=100 , x1<=x2<=100,
AB> y1<=y2<=100, s=sum a[y,x] x1<=x<=x2, y1<=y<=y2.
AB> Для матрицы 100х100 считал на Celeron 466 аж 15 минут :)
AB> Хотелось бы что-нибудь более оптимальное, но влезающее в досовые 400к :),
AB> желательно чтобы работало на "раз-два-три".
Постарайся учесть, что если известна сумма для одного прямоугольника, то при сдвигании его на одну клетку нет необходимости вычислять сумму целиком, достаточно вычесть строку/столбец с одной стороны и прибавить - с другой. При этом строки/столбцы определенной длины могут быть вычислены заранее и с использованием такой же оптимизации, т.е. верхняя строка столбцов считается целиком, а со второй и ниже - путем прибавления/вычитания по одному числу. Думаю, объем вычислений таким образом можно значительно сократить.
До свидания, в 23:19 MSK
Sergey
---
* Origin: Sergiev Posad (2:5020/1507.400)