Страницы

Поиск по вопросам

четверг, 12 декабря 2019 г.

Знание или мышление? [закрыт]

#cpp


        
             
                
                    
                        
                            Closed. This question is opinion-based. It is not currently
accepting answers.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Want to improve this question? Update the question so
it can be answered with facts and citations by editing this post.
                        
                        Closed 4 года назад.
                                                                                
           
                
        
Сразу вопрос (пояснение ниже): Как решаются олимпиадные задачи? На каждую задачу
уже есть определенный алгоритм и его можно адаптировать к задаче или новые (порой гениальные
алгоритмы) придумываются с нуля?
На вопрос натолкнула вот эта весьма простая задача. Я бросился решать её в лоб, создав
список элементов с ссылками на левый и правый элемент, затем просто просматривал элементы,
подсчитывал расстояния и находил минимальное. Около 120 строчек кода.
А теперь решение пользователя Delostik:
#include 
using namespace std;

int n,d[110],dist1,s,t;

int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>d[i];
        d[i]+=d[i-1];
    }
    cin>>s>>t;
    if(s>t) swap(s,t);
    dist1=d[t-1]-d[s-1];
    cout<


Ответы

Ответ 1



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

Ответ 2



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

Ответ 3



1) когда читаю задачу, сразу вспоминаются подобные, и сразу всплываются решения. 2) читаю ограничения, и сразу пытаюсь понять особенность задачи, в чем сложность: проблема памяти проблема скорости просто придумать как решить (в лоб) 3) Если есть готовые решения в голове, просто его пишу. Если таковых нету, то приходится либо адаптировать, либо свой придумывать. 4) Придумывание своего алгоритма - очень творческое занятие. Можно попробовать поискать закономерности и т.д. Например, читая задачу "Определите площадь выпуклого многоугольника" у меня вспоминается сразу один алгоритм. Т.е. данное решение пришло в голову программиста из-за опыта в решении подобных задач.

Ответ 4



Часто решения подобного рода задач сводятся использованию "естественных" трюков, не противоречащих здравому смыслу. Для этой задачи например, достаточно вспомнить наши поезда или метро, там ведь пишут не расстояние между парами соседних вершин, а расстояние от начала до конкретной вершины. Что касается решения очень сложных задач, или задач нового класса, то, как говорилось выше, нужны тренировки + разминка мозга. Вот, кстати, хороший сайт на эту тему. Гениальность и способности - вопрос сложный и спорный. Прекрасное исследование на эту тему. Советую к прочтению.

Комментариев нет:

Отправить комментарий