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


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

Ви не зайшли.

#51 2005-11-19 14:45:25

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

Re: У кого какое решение?

Vladislav Simonenko написав:

Spunky написав:

Andy написав:

6
1 4 6 2 2 4
3 3 5 6 1 5

ответ 3

Сейчас исправлю, просто я вобще пишу на Паскале а для DeusEx перевел на С++, и случайно пропустил строчку.

я раньше писал на паскале, так что мог не стараться smile но все равно спасибо smile.

Поза форумом

 

#52 2005-11-19 14:48:17

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

Re: У кого какое решение?

И на чем удобнее писать: на Паскале или на Срр?


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

Поза форумом

 

#53 2005-11-19 14:53:15

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

Re: У кого какое решение?

Anna написав:

И на чем удобнее писать: на Паскале или на Срр?

С++ однозначно smile только надо привыкнуть. 3 года писал олимпиады на паскале и только сейчас понял, что С++ действительно язык высокого уровня и одинаковые задачи, на нем решаются быстрее. Освоить его чуть труднее, я переходил на него почти месяц, пока не освоился полностью. Могу книжку порекомендовать.

Поза форумом

 

#54 2005-11-19 14:58:16

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

Re: У кого какое решение?

Порекомендуй. Скажу спасибо. А ты пишешь под unix или под Windows?

Відредаговано Anna (2005-11-19 14:58:55)


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

Поза форумом

 

#55 2005-11-19 15:01:16

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

Re: У кого какое решение?

Anna написав:

Порекомендуй. Скажу спасибо. А ты пишешь под unix или под Windows?

а разницы? пишу под windows т.к. у меня тут стоят приложения мне необходимые, а на другой машине FreeBSD (UNIX).

Учебник для вузов. "С/С++. Программирование на языке высокого уровня.". Т.А. Павловская.
Могу дать почитать, т.к. мне она уже не нужна.

Поза форумом

 

#56 2005-11-19 16:14:37

jack_spektor
Олімпієць
Звідки: Украина Одесса
Зареєстрований: 2005-11-12
Повідомлень: 116
Вебсайт

Re: У кого какое решение?

DeusEx написав:

Andy написав:

у кого какой ответ для задачи Newpatience на такой тест:

100
98 39 69 13 2 40 84 85 16 78 98 22 34 4 99 86 94 36 11 33 90 86 75 10 35 55 63 96 26 30 28 49 17 41 50 15 99 37 12 33 65 34 24 60 25 54 50 79 65 31 53 8 36 1 84 7 22 91 61 100 69 42 59 71 38 12 23 58 42 53 83 21 46 40 52 89 74 5 77 76 44 6 20 58 73 17 18 44 52 81 88 54 14 55 37 64 56 9 97 78
51 14 35 71 83 57 88 31 11 29 38 15 16 70 97 43 47 20 62 70 26 66 93 48 47 39 45 94 48 80 77 95 82 30 1 85 10 62 25 3 79 67 7 13 64 29 72 72 82 18 19 59 92 24 56 43 60 32 27 66 23 81 92 95 9 74 63 87 61 75 96 89 100 90 28 4 68 21 6 19 91 68 3 41 67 27 87 93 49 45 76 2 46 8 32 51 73 80 5 57

31

Ты данные вручную вводил или как?


Delphi IT!!!
Мой сайт:http:\\mr-kody.blogspot.com

Поза форумом

 

#57 2005-11-19 16:47:10

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

Re: У кого какое решение?

Andy написав:

у кого какой ответ для задачи Newpatience на такой тест:

100
98 39 69 13 2 40 84 85 16 78 98 22 34 4 99 86 94 36 11 33 90 86 75 10 35 55 63 96 26 30 28 49 17 41 50 15 99 37 12 33 65 34 24 60 25 54 50 79 65 31 53 8 36 1 84 7 22 91 61 100 69 42 59 71 38 12 23 58 42 53 83 21 46 40 52 89 74 5 77 76 44 6 20 58 73 17 18 44 52 81 88 54 14 55 37 64 56 9 97 78
51 14 35 71 83 57 88 31 11 29 38 15 16 70 97 43 47 20 62 70 26 66 93 48 47 39 45 94 48 80 77 95 82 30 1 85 10 62 25 3 79 67 7 13 64 29 72 72 82 18 19 59 92 24 56 43 60 32 27 66 23 81 92 95 9 74 63 87 61 75 96 89 100 90 28 4 68 21 6 19 91 68 3 41 67 27 87 93 49 45 76 2 46 8 32 51 73 80 5 57

А у меня - 48!!!
Если данные корректны - то по идее правильно!!!

Відредаговано respect (2005-11-19 16:51:18)


Не бывает сложных задач бывают тупые решатели!!!! smile

Поза форумом

 

#58 2005-11-19 16:52:43

jack_spektor
Олімпієць
Звідки: Украина Одесса
Зареєстрований: 2005-11-12
Повідомлень: 116
Вебсайт

Re: У кого какое решение?

respect написав:

Andy написав:

у кого какой ответ для задачи Newpatience на такой тест:

100
98 39 69 13 2 40 84 85 16 78 98 22 34 4 99 86 94 36 11 33 90 86 75 10 35 55 63 96 26 30 28 49 17 41 50 15 99 37 12 33 65 34 24 60 25 54 50 79 65 31 53 8 36 1 84 7 22 91 61 100 69 42 59 71 38 12 23 58 42 53 83 21 46 40 52 89 74 5 77 76 44 6 20 58 73 17 18 44 52 81 88 54 14 55 37 64 56 9 97 78
51 14 35 71 83 57 88 31 11 29 38 15 16 70 97 43 47 20 62 70 26 66 93 48 47 39 45 94 48 80 77 95 82 30 1 85 10 62 25 3 79 67 7 13 64 29 72 72 82 18 19 59 92 24 56 43 60 32 27 66 23 81 92 95 9 74 63 87 61 75 96 89 100 90 28 4 68 21 6 19 91 68 3 41 67 27 87 93 49 45 76 2 46 8 32 51 73 80 5 57

А у меня - 48!!!
Если данные корректны - то по идее правтильно!!!

У меня 27.
Идея вроде правильная.
Лично мне кажеться,что тем меньше переворотов - тем ближе к истине.
Истина гдето рядом...


Delphi IT!!!
Мой сайт:http:\\mr-kody.blogspot.com

Поза форумом

 

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

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

Re: У кого какое решение?

вручную

Поза форумом

 

#60 2005-11-19 16:55:07

jack_spektor
Олімпієць
Звідки: Украина Одесса
Зареєстрований: 2005-11-12
Повідомлень: 116
Вебсайт

Re: У кого какое решение?

Anna написав:

И на чем удобнее писать: на Паскале или на Срр?

Удобнее писать на Паскале.
Лучше на Плюсах
Лично я пишу на Паскале - всё равно потом на городской на Паскале писать придёться...


Delphi IT!!!
Мой сайт:http:\\mr-kody.blogspot.com

Поза форумом

 

#61 2005-11-19 16:55:17

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

Re: У кого какое решение?

jack_spektor написав:

respect написав:

Andy написав:

у кого какой ответ для задачи Newpatience на такой тест:

100
98 39 69 13 2 40 84 85 16 78 98 22 34 4 99 86 94 36 11 33 90 86 75 10 35 55 63 96 26 30 28 49 17 41 50 15 99 37 12 33 65 34 24 60 25 54 50 79 65 31 53 8 36 1 84 7 22 91 61 100 69 42 59 71 38 12 23 58 42 53 83 21 46 40 52 89 74 5 77 76 44 6 20 58 73 17 18 44 52 81 88 54 14 55 37 64 56 9 97 78
51 14 35 71 83 57 88 31 11 29 38 15 16 70 97 43 47 20 62 70 26 66 93 48 47 39 45 94 48 80 77 95 82 30 1 85 10 62 25 3 79 67 7 13 64 29 72 72 82 18 19 59 92 24 56 43 60 32 27 66 23 81 92 95 9 74 63 87 61 75 96 89 100 90 28 4 68 21 6 19 91 68 3 41 67 27 87 93 49 45 76 2 46 8 32 51 73 80 5 57

А у меня - 48!!!
Если данные корректны - то по идее правтильно!!!

У меня 27.
Идея вроде правильная.
Лично мне кажеться,что тем меньше переворотов - тем ближе к истине.
Истина гдето рядом...

Да, у всех ответы разные...


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

Поза форумом

 

#62 2005-11-19 16:57:25

jack_spektor
Олімпієць
Звідки: Украина Одесса
Зареєстрований: 2005-11-12
Повідомлень: 116
Вебсайт

Re: У кого какое решение?

DeusEx написав:

Учебник для вузов. "С/С++. Программирование на языке высокого уровня.". Т.А. Павловская.
Могу дать почитать, т.к. мне она уже не нужна.

Павловская?Это то,что со страусом на обложке?
Лучше купить Шилдта.Там гораздо больше полезного материала.


Delphi IT!!!
Мой сайт:http:\\mr-kody.blogspot.com

Поза форумом

 

#63 2005-11-19 17:04:07

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

Re: У кого какое решение?

А у Andy какой ответ на этот придуманный вручную тест???? smile


Не бывает сложных задач бывают тупые решатели!!!! smile

Поза форумом

 

#64 2005-11-19 17:04:43

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

Re: У кого какое решение?

100
98 39 69 13 2 40 84 85 16 78 98 22 34 4 99 86 94 36 11 33 90 86 75 10 35 55 63 96 26 30 28 49 17 41 50 15 99 37 12 33 65 34 24 60 25 54 50 79 65 31 53 8 36 1 84 7 22 91 61 100 69 42 59 71 38 12 23 58 42 53 83 21 46 40 52 89 74 5 77 76 44 6 20 58 73 17 18 44 52 81 88 54 14 55 37 64 56 9 97 78
51 14 35 71 83 57 88 31 11 29 38 15 16 70 97 43 47 20 62 70 26 66 93 48 47 39 45 94 48 80 77 95 82 30 1 85 10 62 25 3 79 67 7 13 64 29 72 72 82 18 19 59 92 24 56 43 60 32 27 66 23 81 92 95 9 74 63 87 61 75 96 89 100 90 28 4 68 21 6 19 91 68 3 41 67 27 87 93 49 45 76 2 46 8 32 51 73 80 5 57

правильно - 48 smile

Поза форумом

 

#65 2005-11-19 17:06:28

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

Re: У кого какое решение?

Angry Coder написав:

А ты откуда знаешь правильный ответ???


Не бывает сложных задач бывают тупые решатели!!!! smile

Поза форумом

 

#66 2005-11-19 17:08:41

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

Re: У кого какое решение?

Angry Coder написав:

А ты откуда знаешь правильный ответ???


Не бывает сложных задач бывают тупые решатели!!!! smile

Поза форумом

 

#67 2005-11-19 17:08:47

Pavel
Олімпієць
Зареєстрований: 2005-10-10
Повідомлень: 20

Re: У кого какое решение?

48

Поза форумом

 

#68 2005-11-19 17:09:52

jack_spektor
Олімпієць
Звідки: Украина Одесса
Зареєстрований: 2005-11-12
Повідомлень: 116
Вебсайт

Re: У кого какое решение?

Angry Coder написав:

100
98 39 69 13 2 40 84 85 16 78 98 22 34 4 99 86 94 36 11 33 90 86 75 10 35 55 63 96 26 30 28 49 17 41 50 15 99 37 12 33 65 34 24 60 25 54 50 79 65 31 53 8 36 1 84 7 22 91 61 100 69 42 59 71 38 12 23 58 42 53 83 21 46 40 52 89 74 5 77 76 44 6 20 58 73 17 18 44 52 81 88 54 14 55 37 64 56 9 97 78
51 14 35 71 83 57 88 31 11 29 38 15 16 70 97 43 47 20 62 70 26 66 93 48 47 39 45 94 48 80 77 95 82 30 1 85 10 62 25 3 79 67 7 13 64 29 72 72 82 18 19 59 92 24 56 43 60 32 27 66 23 81 92 95 9 74 63 87 61 75 96 89 100 90 28 4 68 21 6 19 91 68 3 41 67 27 87 93 49 45 76 2 46 8 32 51 73 80 5 57

правильно - 48 smile

Ты мой код смотрел?
Не может быть,чтобы больший ответ был правильный.
Посмотри код - там ошибка может быть только при превышении кол-ва операций.Меньше правильного там быть не может.


Я написав:

program newpatiance;
type
card=record
t,b:integer;
end;
cds=array[1..1000]of card;

procedure turn(var c:card);
var
temp:integer;
begin
temp:=c.t;
c.t:=c.b;
c.b:=temp;
end;

procedure sort(var cards:cds;n:integer);
var
temp:card;
i,j:integer;
changed:boolean;
begin
for i:=1 to N-1 do
    for j:=1 to N-1 do
        if(cards[j].t>cards[j+1].t)or((cards[j].t=cards[j+1].t)and(cards[j].b>cards[j+1].b))then
         begin
         temp:=cards[j];
         cards[j]:=cards[j+1];
         cards[j+1]:=temp;
         end;
end;

procedure show(c:cds;n:integer);
var
i:integer;
begin
for i:=1 to n do
write('(',c[i].t,' ',c[i].b,') ');
writeln;
end;

var
cards:cds;
n,res:integer;
i,z,r1,r2:integer;
f:Text;
begin
assign(f,'in.txt');
reset(f);
read(f,n);
for i:=1 to n do read(f,cards[i].t);
for i:=1 to n do read(f,cards[i].b);
close(f);
{show(cards,n);}
sort(cards,n);
{show(cards,n);}
res:=0;
for i:=1 to n do
begin
     if(cards[i].t=cards[i+1].t)then
     if(cards[i].b=cards[i+1].b)then
     begin
     turn(cards[i]);
     sort(cards,n);
{     show(cards,n);}
     inc(res);
     end else
     begin
     for z:=1 to n do if(cards[z].t=cards[i].b)then turn(cards[i+1]) else turn(cards[i]);
     sort(cards,n);
{     show(cards,n);}
     inc(res);
     end;
end;
writeln(res);
end.

Создаёшь файл "in.txt".Вставляшь туда тест и проверяй.Ответ - 27.
Можешь показать твоё решение?

Відредаговано jack_spektor (2005-11-19 17:11:42)


Delphi IT!!!
Мой сайт:http:\\mr-kody.blogspot.com

Поза форумом

 

#69 2005-11-19 17:12:57

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

Re: У кого какое решение?

Блин, ну сказано 48 - правильно!!! Не порть мне настроение пока не выяснилось что это не правильно!!! smile


Не бывает сложных задач бывают тупые решатели!!!! smile

Поза форумом

 

#70 2005-11-19 17:13:01

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

Re: У кого какое решение?

#include <stdio.h>
#include <vector>
#include <deque>
#include <utility>
#include <algorithm>
using namespace std;

int main()
{
    int i,n;
    scanf("%d",&n);
    vector<pair<int,int> > A(n);
    vector<char> U(n,1);
    vector<pair<int,int> > M(66000,pair<int,int>(-1,-1));
    for(i=0;i<n;i++){
        scanf("%d",&A[i].first);
        if (M[A[i].first].first<0) M[A[i].first].first=i;
        else M[A[i].first].second=i;
    }
    for(i=0;i<n;i++){
        scanf("%d",&A[i].second);
        if (M[A[i].second].first<0) M[A[i].second].first=i;
        else M[A[i].second].second=i;
    }
    int res=0;
    for(i=0;i<n;i++) if (U[i]){
        U[i]=0;
        int j=i;
        int fl=1;
        int t1=0,t2=1;
        deque<int> Q;
        while (fl || U[j]){
            fl=0;
            int next=M[A[j].second].first;
            if (next==j) next=M[A[j].second].second;
            if (A[next].first!=A[j].second){
                t1++;
                swap(A[next].first,A[next].second);
                Q.push_back(next);
            }
            j=next;
        }
        while (!Q.empty()){
            swap(A[Q[0]].first,A[Q[0]].second);
            Q.pop_front();
        }
        fl=1;
        swap(A[i].first,A[i].second);
        while (fl || U[j]){
            fl=0;
            int next=M[A[j].second].first;
            if (next==j) next=M[A[j].second].second;
            if (A[next].first!=A[j].second){
                t2++;
                swap(A[next].first,A[next].second);
            }
            U[j]=0;
            j=next;
        }
        if (t2<t1) t1=t2;
        res+=t1;
    }
    printf("%d",res);
    return 0;
}



несколоько тяжелоя, для разбора. но оптимальное. разве что я мог где-то ошибится:)

Поза форумом

 

#71 2005-11-19 17:14:28

jack_spektor
Олімпієць
Звідки: Украина Одесса
Зареєстрований: 2005-11-12
Повідомлень: 116
Вебсайт

Re: У кого какое решение?

respect написав:

Блин, ну сказано 48 - правильно!!! Не порть мне настроение пока не выяснилось что это не правильно!!! smile

Это выяснится не ранее того момента, когда покажут результаты :-)


Delphi IT!!!
Мой сайт:http:\\mr-kody.blogspot.com

Поза форумом

 

#72 2005-11-19 17:15:44

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

Re: У кого какое решение?

Раз у двух - у меня и у Злого Кодера ответы сошлись - значит правильно!!
Ведь больше ни у кого не совпало!!!!
smile


Не бывает сложных задач бывают тупые решатели!!!! smile

Поза форумом

 

#73 2005-11-19 17:16:54

jack_spektor
Олімпієць
Звідки: Украина Одесса
Зареєстрований: 2005-11-12
Повідомлень: 116
Вебсайт

Re: У кого какое решение?

Angry Coder написав:

#include <stdio.h>
#include <vector>
#include <deque>
#include <utility>
#include <algorithm>
using namespace std;

int main()
{
    int i,n;
    scanf("%d",&n);
    vector<pair<int,int> > A(n);
    vector<char> U(n,1);
    vector<pair<int,int> > M(66000,pair<int,int>(-1,-1));
    for(i=0;i<n;i++){
        scanf("%d",&A[i].first);
        if (M[A[i].first].first<0) M[A[i].first].first=i;
        else M[A[i].first].second=i;
    }
    for(i=0;i<n;i++){
        scanf("%d",&A[i].second);
        if (M[A[i].second].first<0) M[A[i].second].first=i;
        else M[A[i].second].second=i;
    }
    int res=0;
    for(i=0;i<n;i++) if (U[i]){
        U[i]=0;
        int j=i;
        int fl=1;
        int t1=0,t2=1;
        deque<int> Q;
        while (fl || U[j]){
            fl=0;
            int next=M[A[j].second].first;
            if (next==j) next=M[A[j].second].second;
            if (A[next].first!=A[j].second){
                t1++;
                swap(A[next].first,A[next].second);
                Q.push_back(next);
            }
            j=next;
        }
        while (!Q.empty()){
            swap(A[Q[0]].first,A[Q[0]].second);
            Q.pop_front();
        }
        fl=1;
        swap(A[i].first,A[i].second);
        while (fl || U[j]){
            fl=0;
            int next=M[A[j].second].first;
            if (next==j) next=M[A[j].second].second;
            if (A[next].first!=A[j].second){
                t2++;
                swap(A[next].first,A[next].second);
            }
            U[j]=0;
            j=next;
        }
        if (t2<t1) t1=t2;
        res+=t1;
    }
    printf("%d",res);
    return 0;
}

несколоько тяжелоя, для разбора. но оптимальное. разве что я мог где-то ошибится:)

К сожалению Си я настолько хорошо не знаю...
Знал бы - разобрал бы.


Delphi IT!!!
Мой сайт:http:\\mr-kody.blogspot.com

Поза форумом

 

#74 2005-11-19 17:19:00

jack_spektor
Олімпієць
Звідки: Украина Одесса
Зареєстрований: 2005-11-12
Повідомлень: 116
Вебсайт

Re: У кого какое решение?

respect написав:

Раз у двух - у меня и у Злого Кодера ответы сошлись - значит правильно!!
Ведь больше ни у кого не совпало!!!!
smile

Единственный вариант рассудить нас - ручками проверять...
Шутка.

И вообще Кодер вовсем не злой.Он аг-р-р-есивный... :-)
angry - сердитый,аггресивный (англ.)

Відредаговано jack_spektor (2005-11-19 17:24:12)


Delphi IT!!!
Мой сайт:http:\\mr-kody.blogspot.com

Поза форумом

 

#75 2005-11-19 17:22:25

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

Re: У кого какое решение?

Удачи тебе вручную считать!!! smile

Ладно закругляемся!!!
В вторник-среду будут результаты тогда и посмотрим, зачем форум засорять!!! smile


Не бывает сложных задач бывают тупые решатели!!!! smile

Поза форумом

 

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

Powered by Likt
© Copyright 2002–2009 Likt