Модераторы: Alx, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Областная олимпиада 
:(
    Опции темы
Strannik
Дата 17.2.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: нет
Всего: 2



Ура. 16-17 прошла областная олимпиада (Украина, Донецкая область). Если кому интересно - выложу задания и свои результаты.
PM MAIL   Вверх
V.A.KeRneL
  Дата 17.2.2007, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

Репутация: нет
Всего: 14



Цитата(Strannik @  17.2.2007, 19:43 Найти цитируемый пост)

Если кому интересно - выложу задания и свои результаты.

Ещё спрашивает!.. А то! smile Я те уж в асю хотел стучать, спрашивать как прощло, но тебя всё не было, а теперь ты сам голос подал. smile



--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
Strannik
Дата 17.2.2007, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: нет
Всего: 2



Цитата

но тебя всё не было

Дык олимпиада... не до аськи...

Собственно задачи, первый тур, задача 1.

Есть бинарная последовательность (последовательность состоящая из 0 и 1). Разрешается применять следующую операцию - выбрать несколько (не обязательно подряд идущих) элементов последовательности (порядок элементов сохраняется), и если они образуют палиндром чётной длины, то символы входящие во вторую половину палиндрома удаляются.

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

Ввод
1000011
Вывод
10

Писать на С++ или Pas.
Остальные думаю в других темах...
PM MAIL   Вверх
Sartorius
Дата 17.2.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Strannik, я наверно условия не понял. Почему не 1 в ответе или 0. Можно же выбрать 11 или 00- полиндром.  smile 
PM MAIL ICQ   Вверх
Strannik
Дата 17.2.2007, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: нет
Всего: 2



Sartorius, Покажи последовательность удалений чтоб получилось 1 или 0.
PM MAIL   Вверх
Sartorius
Дата 17.2.2007, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Strannik, ты написал 
Цитата

 выбрать несколько (не обязательно подряд идущих) элементов последовательности (порядок элементов сохраняется),

 я выбираю 1 и 1. длина "11" = 2 и удаляю вторую 1. Поясни условие.
PM MAIL ICQ   Вверх
Strannik
Дата 17.2.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: нет
Всего: 2



Э не... удаляем символы из исходной строки...
PM MAIL   Вверх
V.A.KeRneL
Дата 17.2.2007, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

Репутация: нет
Всего: 14



Sartorius, 
Цитата(Strannik @  17.2.2007, 20:18 Найти цитируемый пост)

символы входящие во вторую половину




--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
Sartorius
Дата 17.2.2007, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



аааа.... тогда все норм  smile 
PM MAIL ICQ   Вверх
Strannik
Дата 17.2.2007, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: нет
Всего: 2



Было 1000011
Выбрали 1000011, удалили, стало 1000011
Выбрали 1000011, удалили, стало 1000011
PM MAIL   Вверх
Sartorius
Дата 17.2.2007, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



 Ограничение по времени есть?
PM MAIL ICQ   Вверх
Strannik
Дата 17.2.2007, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: нет
Всего: 2



Ну по времени - 2*(время работы авторского)
Размер последовательности - до 100000...
PM MAIL   Вверх
Sartorius
Дата 17.2.2007, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



ну вообщем то из последовательности можно выбирать в  подпоследовательность только 0 или только 1. в итоге от этих символов останется только один.
1000011 -> 10011 - > 1011
ну и с единицами тоже самое
1011-> 101->10

В общем только четыре варианта вывода может быть
10 01 1(если нет 0) и 0(если нет 1)
можно такую программку написать
Код

#include <iostream>
char str[] = "1000011";

void deleteAllButFirst(char c)
{
    bool isFirst = true;
    for(int i = 0; i < strlen(str) ; i ++)
    {
        if(str[i] == c && !isFirst)
        {
            for(int j = i; j < strlen(str) ; j++)
            {
                str[j] = str[j+1];
            }
            i--;
        }
        else
        {
            if(str[i] == c) isFirst = false;
        }
    }
}

int main()
{

    deleteAllButFirst('1');

    deleteAllButFirst('0');
    
    std::cout << str;
    

}


Это сообщение отредактировал(а) Sartorius - 17.2.2007, 22:05
PM MAIL ICQ   Вверх
V.A.KeRneL
Дата 18.2.2007, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

Репутация: нет
Всего: 14



Цитата(Strannik @  17.2.2007, 20:18 Найти цитируемый пост)

(не обязательно подряд идущих)

Тьху, ты хосподи!.. Тада, действительно, халява! 
Нет, всё-таки, надо купить тапорик, чтобы зарубать себе на носу, что всегда нужно трижды внимательно читать условие!..

Sartorius, не стал разбираться в твоём решении, т.к. моё проще [имхо], и эффективнее [точно] (за линейное время).

На Ruby: 
Код

#!/usr/bin/env ruby

syms = gets.scan(/./)
res = syms.shift
other = (res.to_i ^ 1).to_s
res << other if syms.include?(other)
puts res


На C: 
Код

#include <stdio.h>
//#include <stdlib.h>

char * 
trunc_palins(const char *str, char *res) 
{ 
    char *str_p = (char *) str;
    char *res_p = res;
    
    *res_p = *str_p++;
    while (*str_p != '\0') { 
        if (*res_p != *str_p) { 
            *++res_p = *str_p;
            goto _ret;
        }
        ++str_p;
    }
    
_ret: 
    *(++res_p) = '\0';
    
    return (res);
}  /* trunc_palins() */

char str[10001];
char res[3];

int 
main(void) 
{ 
    scanf("%s", str);
    trunc_palins(str, res);
    puts(res);
    
    return (0);
}  /* main() */



Это сообщение отредактировал(а) V.A.KeRneL - 18.2.2007, 01:34


--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
Sartorius
Дата 18.2.2007, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



V.A.KeRneL, у меня действительн N^2. Я особо не парился.  smile  Легко и N делается. В общем в задаче ничего особо сложного нет. Вторая поинтересней
ЗЫ ай-ай-ай goto написали  smile  нехорошо  smile 

Это сообщение отредактировал(а) Sartorius - 18.2.2007, 01:51
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




[ Время генерации скрипта: 0.0529 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.