![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
xxx000 |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ввод из: Стандартный ввод Время выполнения на одном тесте: 1 с
Вывод в: Стандартный вывод Ограничение памяти программы на одном тесте: 2000 кб После долгих и мучительных попыток Власу с помощью программистов из ТРТУ удалось, наконец, замостить уголками доску размера 2nx2n без произвольной клетки. Однако Еник вовсе не уверен, что предложенное Власом и программистами решение верно. Он просит вас написать программу, проверяющую правильность мощения. Напоминаем, что на месте вырезанной клетки должен стоять 0. Остальные клетки должны содержать числа от 1 до (2 в n степени*2 в n степени-1)/3 соответственно принадлежности клетки определенному уголку. Уголки не должны перекрываться и не должно быть непокрытых клеток (кроме вырезанной, естественно). Входные данные: В первой строке – число n (0<n<10). Во второй строке - координаты вырезанной клетки. Далее 2 в n степени строк по 2 в n степени чисел в каждой через пробел – схема замощения доски. Выходные данные: вывести «Accepted», если предложенная схема замощения является верной, или «Wrong Answer», если нарушено одно из правил замощения. Пример входных данных: 2 1 1 0 1 2 2 1 1 3 2 4 3 3 5 4 4 5 5 Пример выходных данных: Accepted ---------------------------------------
-------------------------------------------- система пишет, что превышен лимит памяти, помогите!! -------------------------------------------- и ещё это задача с 7-й олимпиады ФАВТ, нам её училка задала, а мы тока в 8 классе. што умеем, то и делаем Сообщение отредактировано: xxx000 - 15.04.2010 21:58 |
![]() ![]() |
Client |
![]()
Сообщение
#2
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
a:array [0..1200,0..1200] of integer;вот ошибка, на ТР не будет работать Да и зачем настолько большая матрица? |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата вот ошибка, на ТР не будет работать Абсолютно по этой же причине не будет работать и на FPC: 1220 * 1200 * 4 (каждый Integer) = 5760000 байт. А это 5625 Кб. Ограничение в 2000 Кб используемой памяти явно превышено. |
xxx000 |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
и что делать
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Подумать над заданным выше вопросом:
Цитата зачем настолько большая матрица? У тебя неверно вычисляется Z... Как только ты введешь значение N большее, чем 2, ты в этом убедишься - допустим, ввел N = 3. Чему будет равно Z по-твоему алгоритму? 8. Это неверно. Программа ожидает не 2n, а 2*n строк и столбцов. Отсюда, при максимальном N = 10 необходимый размер матрицы равен не 210 = 1024, как ты предполагал, а всего 2*10 = 20. Опиши матрицу 20*20, ее должно хватить... |
xxx000 |
![]()
Сообщение
#6
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo
тут неправильно показано, это степень. и я сдаю на FP Сообщение отредактировано: xxx000 - 15.04.2010 21:53 |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
В таком случае будь добр исправить первый пост, и показать его ПРАВИЛЬНО. А то решать "то, не знаю, что" - как-то не очень интересно.
|
xxx000 |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
я не знаю как поднять n.
Вроде исправил, помогите пожалуйста ... Сообщение отредактировано: xxx000 - 15.04.2010 22:00 |
xxx000 |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
помогите пожалуйста
|
Client |
![]()
Сообщение
#10
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Цитата я не знаю как поднять n. т.е. возвести число в степень? |
xxx000 |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
ну в условии БЫЛО 2n, а надо 2 в n
Client, пожалуйста помогите решить Сообщение отредактировано: xxx000 - 15.04.2010 22:44 |
Client |
![]()
Сообщение
#12
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
varВот, например, возводит х в степень n. или writeln( exp(ln( x ) * n):0:3 ); |
xxx000 |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
Client, я знаю как возводить в степень, я не знаю как её сделать (задачу), что бы памяти было не > 2000 Кб
Сообщение отредактировано: xxx000 - 15.04.2010 22:56 |
Client |
![]()
Сообщение
#14
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
спрошу еще раз: зачем массив 1200*1200 ? кто столько значений будет вводить? даже если программно заполнить массив, то все равно нет смысла.
А что сделать - описать массив поменьше, причем намного поменьше. 100*100 или 200*200 будет предостаточно. Что еще не понятно? |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Цитата зачем массив 1200*1200 ? кто столько значений будет вводить? Программа получит файл, который ей надо обработать. Что, Онлайн-серверы не знаешь как работают? ![]() Цитата Вот, например, возводит х в степень n. А там надо не Xn, а 2n, все проще:или writeln( exp(ln( x ) * n):0:3 ); z := 1 shl n; Цитата я не знаю как её сделать (задачу), что бы памяти было не > 2000 Кб Вот смотрю я на твой код, и вижу, что у тебя в каждый момент времени (давай скажем по-другому, на каждой итерации цикла по строкам матрицы) используется только три строки из всей матрицы: Текущая (с индексом i), предыдущая (с индексом i-1), и следующая (с индексом i+1)... А почему бы тебе не отказаться от идеи читать СРАЗУ все в массив? Читай построчно. Обработал очередную строку - сдвинул их на 1 (то, что было текущей - стало предыдущей, то, что было следующей - стало текущей), прочитал новую строку из файла. Так тебе понадобится всего 3*1024*4 байта = меньше 15К |
Client |
![]()
Сообщение
#16
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Цитата Программа получит файл, который ей надо обработать Да, это так, но... ![]() Цитата Что, Онлайн-серверы не знаешь как работают? Неа. Расскажешь? ![]() |
xxx000 |
![]()
Сообщение
#17
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo а как читать по три строки, НЕ из ФАЙЛА
|
volvo |
![]()
Сообщение
#18
|
Гость ![]() |
А я не предлагал читать не из файла. Я предлагал читать порциями, а не все сразу. Вот код, аналогичный твоему:
var А теперь посмотри, сколько памяти требует твой, а сколько - мой. |
xxx000 |
![]()
Сообщение
#19
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo конечно спасибо, но
fpc Неверный ответ на тесте 10 88 1072 я и массив D больше делал,но всё равно fpc Неверный ответ на тесте 10 88 1072 вот ещё одно из моих решений var , но оно не проходит 4 тест, то есть выводит Wrong Answer, а нада Accepted Сообщение отредактировано: xxx000 - 17.04.2010 21:14 |
volvo |
![]()
Сообщение
#20
|
Гость ![]() |
Что-то твой сервер не то делает... Во-первых, я добавил чуть-чуть размер массива, чтобы не было даже теоретической возможности выхода за его пределы (при любых корректных значениях N). Во-вторых, добавил проверку, которой у тебя изначально не было, что не все числа идут по порядку: скажем, число 1 пропущено, и заполнение начинается с двойки - твой код (первый) это не ловил, и мог выдать неверный ответ при таком стечении обстоятельств.
Также я добавил в код проверку на особый случай - введено N = 0, значит X и Y должны быть равны 1, и считанное число должно быть нулем. В конце каждой итерации была добавлена проверка на то, что элемент d[ c ] стал больше 3, это означает мгновенный выход из программы, дальше искать нечего. После всего этого он мне заявляет, что тест №13 не пройден? Извини, я стесняюсь спросить, а с каких пор в онлайн-тестировании ВООБЩЕ больше 10 тестов, тем более, начиная от 0? Где-то в правилах пользования этой системой написано вообще, СКОЛЬКО тестов он будет гонять? Где-то можно посмотреть сами тесты? На usaco, например, как только твоя программа тест не прошла - тебе показываются входные данные. Откуда я знаю, что там передается в программу? Вслепую? Уволь, я гаданием на кофейной гуще не занимаюсь. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:50 |