Змінюй хід війни! Допомагай ЗСУ!
  • Знижка на баннерну рекламу 30%! Банер на всіх сторінках сайту, в мобільній та десктопній версії за 14 тис. грн на місяць. Статистика сайту. Контакт: [email protected]

Вы смотрите телепередачу "А нука, гуру!"

  • Автор теми Автор теми dr_mousefly
  • Дата створення Дата створення
Здравствуйте.
Вот наконец близок тот день,когда мы услышим условие новой задачи.
А готовы ли вы к ее выполнению ?
А сделали ли вы правильные выводы из процесса решения первой задачи ?
Напомним ,что решение сводилось к расположению в каждой корзине заданного минимума мячиков ,вычислению остатка оставшихся мячиков,
и формированию массива из количества элементов,равного числу корзинок, каждый элемент которой мог принимать значения от 1 до (мах - мин) ,в сумме которые состовляли бы число,равное оставшимся мячикам.
Второй способ предпологал большое количество как карзинок ,так и мячиков ,что приводит к перебору огромного количества вариантов ,поэтому сводился к рсположению в каждой карзинке минимального числа ,как и в первом способе,определению числа оставшихся и максимального числа добрасываемых, далее распределению по каждой корзине в разы,сколько позволяло число максимум,и выход на остаток ,меньший чем число корзинок .Далее мы складываем сформированную матрицу с корректирующей,в которой к числам с порядковым номером до остатка прибавится 1,а к остальным ноль.
Также мы с автором задачи, доктором Музефлаем желали увидеть законченный вариант програмного комплекса ,который мог быть конкуренто-способным продуктом в мировом сообществе пользователей современных средств расчетов.


Спартак это громко сказано.Я спартанец и могу пописать на любого дворянина.
Бред (с)
Я считаю, что путь с расстановкой сначала минимума а потом дооптимизированием изначально недалек и дает только ****окод.
Почему не раздать среднее и считать от него +/-? Почему не раздать максимум и не вычитать, пока не будет заданное число?
В любом из ьрех решений вы изначально прицеливаетесь чесать ухо ногой, вместо рандомизиации по тому, чего от вас хотят, вы рандомизируете так, как умеете. Отсюда и ****окод.
На любого прямо? А на Герцога слабо?
 
Бред (с)
Я считаю, что путь с расстановкой сначала минимума а потом дооптимизированием изначально недалек и дает только ****окод.
Почему не раздать среднее и считать от него +/-? Почему не раздать максимум и не вычитать, пока не будет заданное число?
В любом из ьрех решений вы изначально прицеливаетесь чесать ухо ногой, вместо рандомизиации по тому, чего от вас хотят, вы рандомизируете так, как умеете. Отсюда и ****окод.
На любого прямо? А на Герцога слабо?

Ну ты просто вылитое с......е. Я забираю свой чирик.,ошибка недоразумения случилась по Вас.
В описании второго варианта предложена единая функция для расчета каждого элемента массива.В первом варианте задача сводится к решению с использованием известных средств математики методом приближения для нахождения последовательностей из заданных элементов,удовлетворяющих условию.
Как я мог так ошибиться,может это ваша супруга или сестра писала за Вас,им респект от меня и приветики.
Кто такой герцог и почему ты считаешь,что я и на него должен ?Он что тебе брат ? Зачем впутал его ?
Тепер будешь купаться два раза .
 
dr_mousefly сказав(ла):
если честно, я ничего не понял в решении товарища korian, но у меня совсем нет времени разбираться. буду благодарен, если он напишет свой алгоритм словами.

основная идея в том, чтобы число расложить на два слогаемых.
для второго слогаемого, соответственный фор:
Код:
for (unsigned int lastSummand = maxSummand; lastSummand * (lastSummand + 1) / 2 >= number; --lastSummand)
первое соответственно получаеться по формуле:
Код:
const unsigned int firstSummand = number - lastSummand;
для всех (почти) результатов для числа firstSummand (полюбому уже вычесленные ранее), добавляется второе слогаемое (lastSummand) и все это является результатом для текущего числа.
 
Ыш как завернул)))
крутотень, премия "Обманул Судьбу" вполне заслуженная.
 
Кориян, мы изучили Ваш проект ,необходимо убрать зацепку "почти" с помощью корректирующего элемента для подитоживания всего процесса.Признаем его самостоятельной незаконченной работой.Ждем выснавкив модераторов ,которые озвучат процесс переписки и сразу опечатаем результаты.
 
Останнє редагування:
вот и клоуны снова на арене
:попкорн::попкорн::попкорн::попкорн:

встречайте!
 
а что, "клоун Тыемураз" звучит многообещающе...

дорогие дети! сейчас ваш любимый клоун Тыемураз исполнит свой номер "Исступление эмоций".
просим на арену нашего техноцирка...
:пятниця:
 
а что, "клоун Тыемураз" звучит многообещающе...

дорогие дети! сейчас ваш любимый клоун Тыемураз исполнит свой номер "Исступление эмоций".
просим на арену нашего техноцирка...
:пятниця:
Пусть летит твоя Зульфия на канатах ко мне на матрас.
 
а.
я попутал.. номер называется "*****отоксикоз".
а губозакатывательную машинку Вам не надо?

*****а вернется назад и ты сдашь ее в лабораторию и получишь(выручишь) деньги.
На базе предварительных анализов надеюсь,в тебе возникнет задача по случайному моделированию успеха плодотворных стрелок между яйцеклетками, которая и будет третьим и последним эпизодом твоего времяпрепровождения в рялякционных базах.
 
p0814.gif


popc.gif
popc.gif
popc.gif
popc.gif
popc.gif
popc.gif
popc.gif
popc.gif
popc.gif
 

Вкладення

  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 41
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 44
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 39
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 46
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 40
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 61
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 40
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 42
vlad7; сказав(ла):
Вот где должен выйти на сцену интеллект Оршански и из экспоненциального брутал форса сделать алгоритм с логарифмической зависимостью . Прошу ведущего добавить ему немного времени на разработку.

Можно и такое. Это на скорую руку на всех вариантах не прогонял, но задел для оптимизации широкий :)

Код:
#include <iostream>
#include <vector>
#include <sys/time.h>
#include <time.h>

typedef std::vector<int> Int_Vector;

class splitter
{
public:
    splitter(int N, int M);
    ~splitter();
    void get_result(std::vector<Int_Vector>& v) { v = _v; }
private:
    struct node
    {
        int index;
        std::vector<node*> data;
    };
    int _N;
    int _M;
    node* _tree;
    std::vector<Int_Vector> _v;
private:
    void fill_tree(node* n);
    void tree_iterator(node* n, int l);
    void accumulator(node* n, int sum, std::vector<int>& vec);
    void destruct(node* n);
};

splitter::splitter(int N, int M)
:_N(N),_M(M)
{
    _tree = new node;
    _tree->index = 1;
    fill_tree(_tree);
    tree_iterator(_tree,_M);
}

splitter::~splitter()
{
    destruct(_tree);
}

void splitter::destruct(node* n)
{
    std::vector<node*>::const_iterator it = n->data.begin();
    for(; it<n->data.end(); it++)
    {
	destruct(*it);
    }		
    delete n;		        
}

void splitter::fill_tree(node* n)
{
    for(int i=n->index+1; i<_M; i++)
    {
	node* next = new node;
	next->index = i;
	if(((n->index+next->index)<=_M) && (next->index<=_N))
	{
	    fill_tree(next);
	    n->data.push_back(next);
	}
    }			      
}

void splitter::accumulator(node* n, int sum, std::vector<int>& vec)
{
    sum += n->index;
    
    if(sum==_M)
    {
	vec.push_back(n->index);
	_v.push_back(vec);
	vec.pop_back();
    }
    
    std::vector<node*>::const_iterator it = n->data.begin();
    for(;it<n->data.end();it++)
    {
	vec.push_back(n->index);
	accumulator(*it,sum,vec);
	vec.pop_back();	
    }			    
}

void splitter::tree_iterator(node* n, int l)
{
    Int_Vector vec;
    accumulator(n,0,vec);    
    
    std::vector<node*>::const_iterator it = n->data.begin();
    for(;it<n->data.end(); it++)
    {
	if((*it)->index < l)
	    tree_iterator(*it, (*it)->index+1);
    }
}

int main()
{
    struct timezone tz;
    struct timeval t1;                                                            
    struct timeval t2;                                                            

    gettimeofday(&t1,&tz);                                                                 	                                                                                    
    splitter s(9,30);    
    gettimeofday(&t2,&tz);                                                                 
    printf("Processing time %d us\n", t2.tv_usec - t1.tv_usec);
    
    std::vector<Int_Vector> v;
    s.get_result(v);
    std::vector<Int_Vector>::iterator itv = v.begin();
    for(;itv<v.end(); itv++)
    {
	Int_Vector::iterator it = itv->begin();
	for(;it<itv->end(); it++)
	    std::cout<<*it<<" ";
	std::cout<<std::endl;
    }
    return 0;
}

Код:
Processing time 444 us
1 2 3 4 5 6 9 
1 2 3 4 5 7 8 
1 2 3 7 8 9 
1 2 4 6 8 9 
1 2 5 6 7 9 
1 3 4 5 8 9 
1 3 4 6 7 9 
1 3 5 6 7 8 
1 5 7 8 9 
2 3 4 5 7 9 
2 3 4 6 7 8 
2 4 7 8 9 
2 5 6 8 9 
3 4 6 8 9 
3 5 6 7 9 
4 5 6 7 8 
6 7 8 9
 
Останнє редагування:
Можно и такое. Это на скорую руку на всех вариантах не прогонял, но задел для оптимизации широкий :)
Спасибо, пооптимизировал.
Пока гуру читают дворянский код, удаленная с конкурса сявка-женщина-клоун читает телезрителям новые вопросы для размышления смеха
- кто по национальности тыемурез?
- сколько простых слагаемых в треугольнике "препод-зульфия-ганарея"?
- угол наклона чего равен 51 градус 50 минут?
- сколько вложенныхьциклов надо, чтобы смоделировать неделю брасса?
- есть ли в курсе математики циркового училища теория вероятности?
- когда пройдет кома у еланда ( а то мы исстрадились без картинок с шерифом)?
- кто выпил воду из крана?
- что такое "формальное тз"?
- что важнее в плане оптимизации: алгоритм или граф?
- родит ли тс следующую задачу?
- почему в ****окоде участников так много римей циклов?
- как зовут препода?

а теперь говорит стрензер.
Друзья, предлагаю серьёзную задачу в временем выполнения порядка минуту. Тут есть специалисты в разных языках: похапэ, си, питончик, пёрдл, жаба. Интересны, также, гавнорешения на поскале, делфине, шарповиче, рубике etc.
ТС, че, померяемся у кого сколько? 25 см надо подкрепить быстрым кодом.
 
Останнє редагування:
Anacher; сказав(ла):
Да это я сам подумал, спасибо. Просто мне показалось, что считать поднятые биты у двоичного представления числа как-то долго будет. Ну и такой странноватый аргумент, что для двоичного представления упор будет на N=64, а дальше не получится или надо будет что-то придумывать с "очень большим целым числом". Хотя фактически 32 уже выше башни, это миллиард вариантов, и мой атлончик задумчиво хрустит винчестером, не выдавая мне решение в разумное время.

N = 20 - 3 секунды (1.8ГГц процессор). Значит, для N=30 будет уже час, а для N = 64 - 16 миллиардов часов.

korien; сказав(ла):
написал алгоритм, который решает задачу, со сложностью (если не заморачиваться и брать по максимуму) где-то O(n^3). реально гдето O(n^2).
у вас, как я понял, алгоритм как минимум O(2^n), что намного дольше.
выкладывать или подумаете еще?

проверил для 4
и для 9 в промежутках 3-14, 39-45, остальное влом стало проверять

:іржач: Витя, ну как вы могли такой Бред пропустить, ну ладно меня не было, а еще в экспертную комиссию заделались! Это не может бесследно пройти для совета. В совете - маразм.
 
Безмятежная масштабность удивляет и обобщенность структурированного подхода к использованию готового проекта.Всевозможные неповторяемые комбинации расчленения числа на слагаемые имеет смысл к существованию.
Но важным следствием остается подход к предварительному свершению будущей задачи.
Комиссия засчитывает результат с оценкой отлично и + за отсутствие обмана, стрихополированного в предыдущих решениях.
Ждем результатов Корияна.
Сам автор задачи присоединяется к выводам комиссии и приветствует решение Оршанского
 

Вкладення

  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 46
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 48
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 42
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 50
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 42
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 46
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 45
  • popc.gif
    popc.gif
    12.3 КБ · Перегляди: 42
Останнє редагування:
:іржач: Витя, ну как вы могли такой Бред пропустить, ну ладно меня не было, а еще в экспертную комиссию заделались! Это не может бесследно пройти для совета. В совете - маразм.

Дима, не заморачивайтесь на пустяки.
Лучше предложите нам интересную задачу с длинным временем выполнения, чтобы пацаны поупражнялись. Померякемся процессорами, быстрым кодом и поднимем Веселого Рождера, а? :D

Как секретарь совета, даю информацию.
Совет признал работу экспертной комиссии в составе председателя мауслфая, и членов стрензера и макаки-приветчика неудовлетворительной, поскольку в пректе-решении ничегог нет про откровенный бред, сформулированный одним из соискателей в своей работе.
Предлагается переизбрать комиссию в составе:
председатель оошанский
члены: еланд и тыемурез
(к сведению слискателей, за лежащего в коме еланда крестик на пронекте-решении поставит серкетарша зульфия). Кто "за"? Прошу голосовать!
 
то ТЗ не такое, то комиссия не такая.
преподы они такие преподы.
пишите прямо: зеркало грязное.
 
то ТЗ не такое, то комиссия не такая.
преподы они такие преподы.
пишите прямо: зеркало грязное.

А как преподы будут оправдываться, когда они сами будут в комиссии формулировать ТЗ? Дадим же им шанс!
 
Назад
Зверху Знизу