На форумі обговорюються лише питання, пов'язані з олімпіадою
Ви не зайшли.
Давайте например бламблам кто как делал : я лично бинарным от диагонали но сто процентов все не пройдет. Какие задачи считаете халявными кроме Беар - я лично Циркуит считаю легким с точки зрения программирования
Поза форумом
Я лично Блям сдалал с помощью уравнения:
Нарисовал,подумал и высчитал корни.Но помойму решение у меня глючное.
Наверное неправильное.
Если интересно посмотри решение на:
http://www.TheJack.narod.ru/olymp.rar
Поза форумом
jack_spektor написав:
Я лично Блям сдалал с помощью уравнения:
Нарисовал,подумал и высчитал корни.Но помойму решение у меня глючное.
Наверное неправильное.
Если интересно посмотри решение на:
http://www.TheJack.narod.ru/olymp.rar
Имееш ввиду по диагонали тогда я тож так пробовал но глюк нашел в решении и переделал на бинарный поиск
Поза форумом
CIRCUIT совсем легко!!!
Поза форумом
ROBOT написав:
CIRCUIT совсем легко!!!
Согласен. Ладно задам самый интересующий щас вопрос : кто как нюпатиенс делал?
Поза форумом
Я делал,по мойму правильно...
Поза форумом
necro написав:
Имееш ввиду по диагонали тогда я тож так пробовал но глюк нашел в решении и переделал на бинарный поиск
Я думал,насчёт поиска...
На мой взгляд данная задача чисто геометрическая...
Но тест нас рассудит...
Поза форумом
ROBOT написав:
CIRCUIT совсем легко!!!
Не сказал бы...
У тебя когда-нибудь получалось больше двух разрезов?
Мне чего-то кажеться, что там больше двух не может быть...
Поза форумом
jack_spektor написав:
ROBOT написав:
CIRCUIT совсем легко!!!
Не сказал бы...
У тебя когда-нибудь получалось больше двух разрезов?
Мне чего-то кажеться, что там больше двух не может быть...
Совсем не легко!!!
На эту задачу я больше всего времени потратил...(пока не доказал, что больше 2-ух разрезов быть не может)
А если так легко, то может кто-нибудь объяснит как доказать(кроме полного перебора), что 2 разреза - этом максимум...
Поза форумом
А больше 2 и не надо
Поза форумом
доказательство:
для наглядности заменим 0 на -1 тогда
заиндексируем элементы с 0.
сумма по i от 0 до n-1( сумма по j от и i до i+n\2-1 (А[i] mod n) ) = 0 (очевидно каждая 1 и -1 войдет в сумму n раз)
все влагаемые внешней суммы кратны 2 и два соседних по модулю могут отличатся не больше чем на 2.
значит если в сумме существует положительное слагаемое (а значит существует и отрицательное) то на переходе между ними обязательно! будет нулевое слагаемое, которое и является решением.
Поза форумом
jack_spektor написав:
necro написав:
Имееш ввиду по диагонали тогда я тож так пробовал но глюк нашел в решении и переделал на бинарный поиск
Я думал,насчёт поиска...
На мой взгляд данная задача чисто геометрическая...
Но тест нас рассудит...
Правильный взгляд...
#include<stdio.h> #include<math.h> #define swap(a,b) a=(a^=b)^(b^=a) #define sort(a,b) if(a>b)swap(a,b) short Test() { int X,Y,A,B; scanf("%d%d%d%d",&X,&Y,&A,&B); sort(X,Y); sort(A,B); if(X<=A && Y<=B)return 1; else if(X>A && Y>B)return 0; else if(Y>B){ swap(X,Y); swap(A,B); } X*=X;Y*=Y; A*=A,B*=B; A-=X+Y-B; B+=A+B; if(A<0 || B<0 || A+B<Y)return 0; return 1; } int main() { int N; for(scanf("%d",&N);N;N--) printf("%d",Test()); return 0; }
Відредаговано xXx (2005-11-19 13:47:15)
Поза форумом
бламблам чисто геометрическая и решается на интах:)
но бинарный поиск должен взять все тесты
Поза форумом
Нафлудили уже. Не буду разбираться.
Мое мнение:
Bear - без комментариев.
Piece - чистая вычислительная геометрия. Сложность в том, чтобы сделать как можно меньше операций с вещественными числами. В 3-4 можно уложиться.
Blamblam - Опять же вычислительная геометрия. Случай с диагональным размещением просто прописывается (тут кто-то писал про круг описываемый картой - так и надо!). Корни все что здесь нужно.
Newpatience - Ужас, а не задача. Пасьянс всегда сходится (доказывается). Есть короткое и относительно простое решение за n^2. Но можно сложно и геморойно пробить за n*log(n). У меня получилось уложиться в 5кб (с++). Но послал все-таки короткое решение. Ибо геморойное не вписывается в формат первого тура.
Circuit - задача-шутка. За счет дискретной непрерывности ответ либо 1 (пополам) либо 2. Отсюда же и следует решение.
Нынче первый гораздо сложнее прошлого.
Поза форумом
Angry Coder написав:
доказательство:
для наглядности заменим 0 на -1 тогда
заиндексируем элементы с 0.
сумма по i от 0 до n-1( сумма по j от и i до i+n\2-1 (А[i] mod n) ) = 0 (очевидно каждая 1 и -1 войдет в сумму n раз)
все влагаемые внешней суммы кратны 2 и два соседних по модулю могут отличатся не больше чем на 2.
значит если в сумме существует положительное слагаемое (а значит существует и отрицательное) то на переходе между ними обязательно! будет нулевое слагаемое, которое и является решением.
Генерил в реалтайме? (грузонуто получилось)
Это доказательство - доказательство не простоты задачи!!!
Поза форумом
xXx написав:
Правильный взгляд...
неправильный:(
тест: 1 150 4 140 80 => 1 должно быть.
Поза форумом
Pavel написав:
Newpatience - Ужас, а не задача. Пасьянс всегда сходится (доказывается). Есть короткое и относительно простое решение за n^2. Но можно сложно и геморойно пробить за n*log(n). У меня получилось уложиться в 5кб (с++). Но послал все-таки короткое решение. Ибо геморойное не вписывается в формат первого тура.
Newpatience o(n) и к тому же простое для написания;)
Поза форумом
xXx написав:
Генерил в реалтайме? (грузонуто получилось)
- ага
xXx написав:
Это доказательство - доказательство не простоты задачи!!!
да оно ж простое! словами - рассмотрим суммы цифр на всех отрезках длины n/2 и докажем, что там есть отрезок с нулевой суммой (если числа -1 и 1).
Поза форумом
2Angry.
за линейное? Ты не прав: попробуй 3 1 1 2 3 2 3 (если я правильно предположил твое решение)
насчет цепи согласен (рамка длиной n/2).
Поза форумом
Angry Coder написав:
xXx написав:
Генерил в реалтайме? (грузонуто получилось)
- ага
xXx написав:
Это доказательство - доказательство не простоты задачи!!!
да оно ж простое! словами - рассмотрим суммы цифр на всех отрезках длины n/2 и докажем, что там есть отрезок с нулевой суммой (если числа -1 и 1).
Не я то понял, но оно не очевидно...
Поза форумом
Pavel написав:
2Angry.
за линейное? Ты не прав: попробуй 3 1 1 2 3 2 3 (если я правильно предположил твое решение)
насчет цепи согласен (рамка длиной n/2).
рамка n/2 это к Circuit доказательство.
В пасьянсе решение такое: рассмотрим одну карточку. она в оптимальном решении может лежать либо так, как лежит, либо должна перевернутся. попробуем оставить так. ее фиксированое положение однозначно задает положение карточки, с такой же цифрой, как на ней. та в свою очередь задает положение еще одной. и так далее пока цикл не замкнется. теперь попробуем другой вариант. то же самое. далее перейдем к следующей карточке не из этого цикла, если такая еще есть. итого если мы умеем искать положение карточки с заданым числом за О(1) (а это легко) то алгоритм сработает за О(n).
Поза форумом
Angry Coder написав:
xXx написав:
Правильный взгляд...
неправильный:(
тест: 1 150 4 140 80 => 1 должно быть.
Нет, правильный!!!
Просто я из-за мысли о простоте задачи допустил грубую ошибку и не протестил!!!
A-=X+Y-B; //вот здесь я изменил A и не учёл в следующей строке B-=X+Y-A; //а вот и та ошибка!!!
А вот это работает:
int T=A; A-=X+Y-B; B-=X+Y-T;
или так:
A-=X+Y-B; B+=A+B;
Відредаговано xXx (2005-11-19 13:50:10)
Поза форумом
тогда: 1 160 4 140 80 => 0 должно быть
Поза форумом
Angry Coder написав:
итого если мы умеем искать положение карточки с заданым числом за О(1) (а это легко)
Вот к этому и вопрос КАК?
Поза форумом