Форум Всеукраїнської інтернет-олімпіади NetOI


На форумі обговорюються лише питання, пов'язані з олімпіадою

Ви не зайшли.

#51 2005-11-19 14:59:54

xXx
Олімпієць
Звідки: Kirovsk-city
Зареєстрований: 2005-11-16
Повідомлень: 123
Вебсайт

Re: Обсудим решения

DeusEx написав:

какие еще проекции? вы что? задача решается элементарно - просто проводим окружность с центром совпадающим с центром стола и диаметром равным диагонали карты, находим точки пересечения и растояния между ними, наименьшее растояние - это наибольшая ширина карты с таким диаметром, если класть карту не горизонтально. Горизонтальный вариант проверяется вообще в одну строчку.

я так и сделал...
а проекции - это только для проверки...


icq - 402174

Поза форумом

 

#52 2005-11-19 15:03:03

xXx
Олімпієць
Звідки: Kirovsk-city
Зареєстрований: 2005-11-16
Повідомлень: 123
Вебсайт

Re: Обсудим решения

Pavel написав:

посмотри по диагоналям. Диагональ карты больше. Ну никак не влезет

160*160+4*4  <  140*140+80*80


icq - 402174

Поза форумом

 

#53 2005-11-19 15:06:16

Angry Coder
Олімпієць
Зареєстрований: 2005-11-03
Повідомлень: 42

Re: Обсудим решения

X=160
Y=4
A=140
B=80

    double ang=asin(A/sqrt(X*X+Y*Y))-asin(Y/sqrt(X*X+Y*Y));   //   =1.039877          - вычисление угла, чтоб одна проекция была 140
    double pr1=Y*cos(ang)+X*sin(ang); //   =140.000000
    double pr2=Y*sin(ang)+X*cos(ang); //   =84.461612  больше 80 - не поместится

Поза форумом

 

#54 2005-11-19 15:09:03

DeusEx
Олімпієць
Зареєстрований: 2005-11-17
Повідомлень: 127

Re: Обсудим решения

Angry Coder написав:

X=160
Y=4
A=140
B=80

    double ang=asin(A/sqrt(X*X+Y*Y))-asin(Y/sqrt(X*X+Y*Y));   //   =1.039877          - вычисление угла, чтоб одна проекция была 140
    double pr1=Y*cos(ang)+X*sin(ang); //   =140.000000
    double pr2=Y*sin(ang)+X*cos(ang); //   =84.461612  больше 80 - не поместится

гхм...и вправду интересное решение smile. Но через окружность проще и быстрее.

Поза форумом

 

#55 2005-11-19 15:13:24

Angry Coder
Олімпієць
Зареєстрований: 2005-11-03
Повідомлень: 42

Re: Обсудим решения

это не решение:) я просто наглядно хотел убедить хХх в правильности ответа. я делал ее еще проще, чем окружности. ни одного вычисления типом double(real). все на интах. очень просто:)

Поза форумом

 

#56 2005-11-19 15:15:05

Angry Coder
Олімпієць
Зареєстрований: 2005-11-03
Повідомлень: 42

Re: Обсудим решения

xXx написав:

Оказываеться мы проекции не умеем считать... sad
То, что ты написал - это ни как не проекции на стороны стола...

а что же это:))) ?

Поза форумом

 

#57 2005-11-19 15:15:17

DeusEx
Олімпієць
Зареєстрований: 2005-11-17
Повідомлень: 127

Re: Обсудим решения

Angry Coder написав:

это не решение:) я просто наглядно хотел убедить хХх в правильности ответа. я делал ее еще проще, чем окружности. ни одного вычисления типом double(real). все на интах. очень просто:)

так чего ждем? выкладывай решение smile

Поза форумом

 

#58 2005-11-19 15:18:07

Angry Coder
Олімпієць
Зареєстрований: 2005-11-03
Повідомлень: 42

Re: Обсудим решения

#include <stdio.h>

int main()
{
    int i,n;
    double a,b,c,d;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%lf%lf%lf%lf",&c,&d,&a,&b);
        if ((c<=a && d<=b)||(d<=a && c<=b)) {printf("1"); continue;}
        if ((a<=c && a<=d)||(b<=c && b<=d)) {printf("0"); continue;}
        double k=c*c-d*d;
        double kx=b*c*c-c*a*d;
        double ky=-d*b*c+a*d*d+a*k;
        if (kx*kx+ky*ky<c*c*k*k) printf("0");
        else printf("1");
    }
    return 0;
}

Поза форумом

 

#59 2005-11-19 15:20:16

DeusEx
Олімпієць
Зареєстрований: 2005-11-17
Повідомлень: 127

Re: Обсудим решения

на мой взгляд мое проще. вот одна формула и вся задача.           

z=sqrt((0.5*b-sqrt(0.25*(x*x+y*y-a*a)))*(0.5*b-sqrt(0.25*(x*x+y*y-a*a)))+ (0.5*a-sqrt(0.25*(x*x+y*y-b*b)))*(0.5*a-sqrt(0.25*(x*x+y*y-b*b))) );

Поза форумом

 

#60 2005-11-19 15:22:53

DeusEx
Олімпієць
Зареєстрований: 2005-11-17
Повідомлень: 127

Re: Обсудим решения

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

Поза форумом

 

#61 2005-11-19 15:25:05

Angry Coder
Олімпієць
Зареєстрований: 2005-11-03
Повідомлень: 42

Re: Обсудим решения

просто решение на интах - это круто. никаких ошибок точности. все четко. числа с плавающей точкой не рулят.

Поза форумом

 

#62 2005-11-19 15:25:30

xXx
Олімпієць
Звідки: Kirovsk-city
Зареєстрований: 2005-11-16
Повідомлень: 123
Вебсайт

Re: Обсудим решения

Angry Coder написав:

xXx написав:

Оказываеться мы проекции не умеем считать... sad
То, что ты написал - это ни как не проекции на стороны стола...

а что же это:))) ?

pr1 - сумма длин проекций Y на одну сторону и X на другую
pr2 - с точностью до наоборот...


icq - 402174

Поза форумом

 

#63 2005-11-19 15:27:23

DeusEx
Олімпієць
Зареєстрований: 2005-11-17
Повідомлень: 127

Re: Обсудим решения

Angry Coder написав:

просто решение на интах - это круто. никаких ошибок точности. все четко. числа с плавающей точкой не рулят.

я думаю на этой олимпиаде, на этом туре и для этой задачи это не столь важно. Я потратил на задачу 20 мин в целом и меня это устраивает.

Поза форумом

 

#64 2005-11-19 15:29:18

Anna
Олімпієць
Звідки: Киев
Зареєстрований: 2005-11-06
Повідомлень: 122

Re: Обсудим решения

Посмотрим потом на результаты...


Хорошо смеется тот, кто смеется последним...

Поза форумом

 

#65 2005-11-19 15:29:53

Angry Coder
Олімпієць
Зареєстрований: 2005-11-03
Повідомлень: 42

Re: Обсудим решения

xXx написав:

Angry Coder написав:

xXx написав:

Оказываеться мы проекции не умеем считать... sad
То, что ты написал - это ни как не проекции на стороны стола...

а что же это:))) ?

pr1 - сумма длин проекций Y на одну сторону и X на другую
pr2 - с точностью до наоборот...

ты не прав. может ты не понял, что такое угол ang? это угол между стороной X и A.
в таком случае это проекции. посмотри внимательно.

Поза форумом

 

#66 2005-11-19 15:32:59

xXx
Олімпієць
Звідки: Kirovsk-city
Зареєстрований: 2005-11-16
Повідомлень: 123
Вебсайт

Re: Обсудим решения

DeusEx написав:

на мой взгляд мое проще. вот одна формула и вся задача.           

z=sqrt((0.5*b-sqrt(0.25*(x*x+y*y-a*a)))*(0.5*b-sqrt(0.25*(x*x+y*y-a*a)))+ (0.5*a-sqrt(0.25*(x*x+y*y-b*b)))*(0.5*a-sqrt(0.25*(x*x+y*y-b*b))) );

проще не бывает...)
это на сколько голова должна быть трезвой чтоб это понять? (или сгенерить?) smile


icq - 402174

Поза форумом

 

#67 2005-11-19 15:36:04

DeusEx
Олімпієць
Зареєстрований: 2005-11-17
Повідомлень: 127

Re: Обсудим решения

xXx написав:

DeusEx написав:

на мой взгляд мое проще. вот одна формула и вся задача.           

z=sqrt((0.5*b-sqrt(0.25*(x*x+y*y-a*a)))*(0.5*b-sqrt(0.25*(x*x+y*y-a*a)))+ (0.5*a-sqrt(0.25*(x*x+y*y-b*b)))*(0.5*a-sqrt(0.25*(x*x+y*y-b*b))) );

проще не бывает...)
это на сколько голова должна быть трезвой чтоб это понять? (или сгенерить?) smile

да ну smile тут действительно все просто. пару раз теорему пифагора используешь и все. кажется мы ее учили еще 3 или 4 года назад.

Поза форумом

 

#68 2005-11-19 15:38:23

Anna
Олімпієць
Звідки: Киев
Зареєстрований: 2005-11-06
Повідомлень: 122

Re: Обсудим решения

Имеешь в виду, что карта лежит  параллельно диагонали? А ты уверен, что варинт оптимальный?


Хорошо смеется тот, кто смеется последним...

Поза форумом

 

#69 2005-11-19 15:40:15

DeusEx
Олімпієць
Зареєстрований: 2005-11-17
Повідомлень: 127

Re: Обсудим решения

Anna написав:

Имеешь в виду, что карта лежит  параллельно диагонали? А ты уверен, что варинт оптимальный?

параллельно? м...нет...параллельно она лежит только если стол квадратный...Я предлагаю провести окружность через центр стола с диаметром карты. И найти точки пересечения окружности со столом.

Поза форумом

 

#70 2005-11-19 15:41:28

xXx
Олімпієць
Звідки: Kirovsk-city
Зареєстрований: 2005-11-16
Повідомлень: 123
Вебсайт

Re: Обсудим решения

Angry Coder написав:

xXx написав:

Angry Coder написав:


а что же это:))) ?

pr1 - сумма длин проекций Y на одну сторону и X на другую
pr2 - с точностью до наоборот...

ты не прав. может ты не понял, что такое угол ang? это угол между стороной X и A.
в таком случае это проекции. посмотри внимательно.

короче фигня получаеться...
формулы какие-то не такие...
если хочешь, можешь поискать авторские решения...и проверь на них, если на твоём тесте будет 0, то я л...р(не хороший человек)


icq - 402174

Поза форумом

 

#71 2005-11-19 15:43:53

Anna
Олімпієць
Звідки: Киев
Зареєстрований: 2005-11-06
Повідомлень: 122

Re: Обсудим решения

DeusEx написав:

Anna написав:

Имеешь в виду, что карта лежит  параллельно диагонали? А ты уверен, что варинт оптимальный?

параллельно? м...нет...параллельно она лежит только если стол квадратный...Я предлагаю провести окружность через центр стола с диаметром карты. И найти точки пересечения окружности со столом.

ну, собственно, я так и делала...


Хорошо смеется тот, кто смеется последним...

Поза форумом

 

#72 2005-11-19 15:45:28

Angry Coder
Олімпієць
Зареєстрований: 2005-11-03
Повідомлень: 42

Re: Обсудим решения

xXx написав:

короче фигня получаеться...
формулы какие-то не такие...
если хочешь, можешь поискать авторские решения...и проверь на них, если на твоём тесте будет 0, то я л...р(не хороший человек)

да мне не за чем:) я уверен на 100%. по крайней мере в формулах для проекций.

Поза форумом

 

#73 2005-11-19 15:45:55

DeusEx
Олімпієць
Зареєстрований: 2005-11-17
Повідомлень: 127

Re: Обсудим решения

Anna написав:

DeusEx написав:

Anna написав:

Имеешь в виду, что карта лежит  параллельно диагонали? А ты уверен, что варинт оптимальный?

параллельно? м...нет...параллельно она лежит только если стол квадратный...Я предлагаю провести окружность через центр стола с диаметром карты. И найти точки пересечения окружности со столом.

ну, собственно, я так и делала...

значит могу тебя уже поздравить с хорошими результатами по этой задаче smile. Ладно пошел я с этого форума, все равно администрация спит и результатов мы не дождемся. Если что - пиши на e-mail.

Поза форумом

 

#74 2005-11-19 15:46:15

Anna
Олімпієць
Звідки: Киев
Зареєстрований: 2005-11-06
Повідомлень: 122

Re: Обсудим решения

По задаче про цепь : там действительно не может быть больше 2х разрезов? У меня получилось именно так...


Хорошо смеется тот, кто смеется последним...

Поза форумом

 

#75 2005-11-19 15:47:56

DeusEx
Олімпієць
Зареєстрований: 2005-11-17
Повідомлень: 127

Re: Обсудим решения

Anna написав:

По задаче про цепь : там действительно не может быть больше 2х разрезов? У меня получилось именно так...

конечно. 1 или 2....и цепь не всю надо рассматривать, а 3\4 максимум....

вот решение :
# include <iostream.h>
# include <string.h>
using namespace std;
int main() {
    int n,x,c0,c1,c,first;
    cin >> n;
    string str("");
    c0=0;
    c1=0;
    c=0;
    for (int i=1;i<=n;i++){
        cin >> x;
        c++;
        if (x==0) {str.append("0");};
        if (x==1) {str.append("1");};
       
        if (str.substr(0,1)=="0"){first=0;};
        if (str.substr(0,1)=="1"){first=1;};

        if (x==0) {c0++;};
        if (x==1) {c1++;};
        if (c>=n/2) {
                    if (c0==c1) {
                                if (c-n/2>0) {cout << "2 " << c-n/2 << " " << c-n/2+1 << " " << c << " " << c+1 << endl;};
                                if (c-n/2==0) {cout << "1 " << c << " " << c+1 << endl;};
                                };
                    if (c0!=c1) {
                                if (first==0) {c0--;};
                                if (first==1) {c1--;};
                                str.erase(0,1);
                                };
                    };
    }
    return 0;
}

Поза форумом

 

Нижній колонтитул

Powered by Likt
© Copyright 2002–2009 Likt