دورهی طلا با دورهی تابستان تفاوت اساسی دارد. در دورهی تابستان بخش مهمی از زمان شما صرف یادگیری مباحث جدید و ساختن پایههای علمی میشود؛ اما در دورهی طلا انتظار میرود که بخش عمدهای از این پایهها را ساخته باشید و بتوانید دانش خود را در حل مسائل دشوار و در شرایط مسابقه به کار بگیرید.
در این دوره تنها ۸ نفر از بهترینهای المپیاد کامپیوتر کشور حضور دارند و در نهایت حداکثر ۴ نفر از میان آنها برای شرکت در المپیاد جهانی انتخاب خواهند شد. بنابراین رقابت جدی است و فاصلهی بین افراد نیز معمولاً بسیار کمتر از چیزی است که در مراحل قبل دیدهاید. در چنین شرایطی، صرفاً یادگرفتن مطالب جدید کافی نیست؛ باید بتوانید آنچه را میدانید، سریع، دقیق و کمخطا در یک مسابقهی واقعی به کار بگیرید.
هدف این صفحه آن است که به شما کمک کند از دورهی طلا بیشترین استفاده را ببرید و برای امتحانهای انتخاب تیم و در نهایت المپیاد جهانی آماده شوید.
در دورهی تابستان ممکن است هنوز در حال آشنا شدن با بسیاری از مفاهیم و الگوریتمها باشید. طبیعی است که بعضی از مطالب را برای اولین بار ببینید و برای یادگیری آنها زمان زیادی صرف کنید.
اما در دورهی طلا دیگر نباید انتظار داشته باشید که همهچیز در کلاس به شما آموزش داده شود. کلاسها برای تکمیل سیلابس، رفع نقاط ضعف، یادگیری مطالب پیشرفتهتر و عمیقتر کردن دانستههای قبلی برگزار میشوند؛ بخش مهمی از یادگیری شما باید خارج از کلاس و از طریق حل مسئله، شرکت در آزمون و بررسی راهحلها اتفاق بیفتد.
به عبارت دیگر، در دورهی طلا باید از «درس خواندن برای یادگیری» به سمت «تمرین کردن برای مسابقه دادن» حرکت کنید.
در این مرحله تفاوتهای کوچک اهمیت زیادی پیدا میکنند. ممکن است دو دانشپژوه هر دو یک الگوریتم را بدانند، اما یکی از آنها بتواند در ۲۰ دقیقه ایدهی مناسب را پیدا کند و بدون باگ پیادهسازی کند و دیگری به یک ساعت زمان نیاز داشته باشد. در سطح دورهی طلا، همین تفاوتهای ظاهراً کوچک میتوانند نتیجهی یک آزمون را تغییر دهند.
در سه هفتهی ابتدایی هر ماه، مجموعهای از مسائل برای تمرین در اختیار شما قرار میگیرد. این مسائل از منابع مختلف و در سطح مسابقات معتبر المپیادهای کامپیوتر انتخاب میشوند.
این تمرینها را نباید صرفاً مجموعهای از سوالهایی بدانید که باید از روی آنها عبور کنید. هدف اصلی این است که با حل آنها دامنهی ایدهها و تجربهی شما بیشتر شود و نقاط ضعف خود را پیدا کنید.
برای استفادهی بهتر از تمرینها:
در این مرحله کیفیت تمرین کردن از تعداد مسائل حلشده مهمتر است. ممکن است حل دقیق و عمیق یک مسئلهی دشوار، بیشتر از حل سریع چند مسئلهی ساده برای شما مفید باشد.
یکی از مهمترین مهارتهایی که در دورهی طلا باید به آن برسید، توانایی یادگیری از مسائلی است که نتوانستهاید حل کنید.
وقتی راهحل یک مسئله را میخوانید، از خودتان بپرسید:
بعد از خواندن راهحل، بهتر است صورت مسئله را ببندید و سعی کنید راهحل را بدون نگاه کردن دوباره بنویسید.
هدف از خواندن راهحل این نیست که تعداد بیشتری مسئله را «دیده باشید». هدف این است که مسئلهای که نتوانستید حل کنید، در آینده احتمال حل شدنش توسط شما را افزایش دهد.
آزمونهای دورهی طلا مهمترین فرصت شما برای تبدیل دانش به مهارت مسابقهای هستند.
در آزمونهای تمرینی، هدف فقط کسب نمره نیست. باید از هر آزمون اطلاعاتی دربارهی خودتان به دست آورید. بعد از هر آزمون، علاوه بر بررسی مسائل، عملکرد خودتان را نیز تحلیل کنید.
مثلاً بررسی کنید:
سعی کنید بعد از هر آزمون، چند نکتهی مشخص برای آزمون بعدی استخراج کنید. اگر هر آزمون فقط به یک نمره تبدیل شود، بخش بزرگی از ارزش آن را از دست دادهاید.
بخشی از آزمونهای دوره باید برای شبیهسازی شرایط واقعی المپیاد جهانی مورد استفاده قرار گیرد.
در چنین آزمونهایی باید خودتان را مجبور کنید شرایط مسابقهی واقعی را تجربه کنید: زمان محدود، چند مسئلهی دشوار، فشار روانی و نبودن کسی که بلافاصله به شما بگوید ایدهتان درست است یا نه.
در مسابقهی واقعی ممکن است feedback محدود باشد، ممکن است در مورد یک کد مطمئن نباشید و ممکن است شرایط دقیقاً مطابق انتظار شما پیش نرود. بنابراین باید به جایی برسید که بتوانید بدون وابستگی به شرایط ایدهآل، تصمیم درست بگیرید.
در آییننامهی دورهی طلا نیز بر آمادگی برای شرایطی تأکید شده است که حتی در صورت ایدهآل نبودن شرایط مسابقه بتوانید بهدرستی آزمون دهید؛ از جمله توانایی نوشتن برنامهی درست بدون وابستگی به feedback.
در این سطح، استراتژی مسابقه دادن به اندازهی دانش الگوریتمی اهمیت دارد.
هر دانشپژوه ممکن است استراتژی متفاوتی داشته باشد و قرار نیست همه دقیقاً یک روش را اجرا کنند. مهم این است که قبل از مسابقه، روش مناسب خودتان را پیدا کرده باشید.
برای مثال باید برای پرسشهای زیر پاسخ مشخصی داشته باشید:
تجربهی اعضای تیمهای سالهای گذشته میتواند در پاسخ دادن به این سؤالها بسیار مفید باشد؛ اما در نهایت باید این روشها را در آزمونهای تمرینی امتحان کنید و ببینید کدام استراتژی با روحیات و تواناییهای شما سازگارتر است.
آزمون تمرینی جای امتحان کردن استراتژیهای مختلف است؛ آزمون انتخاب تیم و المپیاد جهانی جای این کار نیست.
در دورهی طلا دیگر صرفاً «توانایی کدنویسی» کافی نیست. باید بتوانید کدی بنویسید که هم سریع نوشته شود، هم قابل اعتماد باشد و هم بتوانید در زمان کوتاه آن را اشکالزدایی کنید.
در مسابقهای که چند ساعت بیشتر طول نمیکشد، هر دقیقهای که به دلیل یک باگ ساده از دست میدهید میتواند ارزش زیادی داشته باشد.
بنابراین سعی کنید:
نوشتن کد کوتاهتر و سادهتر معمولاً به معنی حرفهایتر بودن آن است، به شرط آن که خوانایی و درستی آن حفظ شود.
یکی از تفاوتهای مهم بین یک برنامهنویس خوب و یک مسابقهدهندهی حرفهای، توانایی پیدا کردن سریع خطاهاست.
بعد از نوشتن برنامه، فقط چند نمونهی صورت سؤال را روی آن اجرا نکنید. به دنبال حالتهایی باشید که احتمال خراب شدن الگوریتم در آنها بیشتر است.
برای مثال:
در صورت امکان، از تستجنریتور و brute force برای مقایسهی راهحل خود با یک راهحل ساده استفاده کنید. یادگیری روش تستکردن، بخشی از آمادگی شما برای مسابقه است و نه کاری که فقط در مواقع خراب شدن برنامه انجام شود.
یکی از مهمترین تفاوتهای دورهی طلا با دورههای قبل این است که دیگر یک برنامهی یکسان برای همه مناسب نیست.
ممکن است یک دانشپژوه در گراف بسیار قوی باشد اما در DP ضعف داشته باشد و دانشپژوه دیگری دقیقاً شرایط معکوس را داشته باشد. بنابراین لازم است هرکس نقاط ضعف خودش را شناسایی کند و برای آن برنامهی مشخصی داشته باشد.
در طول دوره فهرستی از نقاط ضعف خود تهیه کنید. این نقاط ضعف میتوانند علمی، فنی یا مسابقهای باشند.
مثلاً:
برنامهی شخصی شما باید بر اساس همین نقاط ضعف تنظیم شود.
کلاسهای دورهی طلا با هدف پوشش کامل سیلابس IOI، عمیقتر کردن مطالب، رفع نقاط ضعف و آمادهسازی برای مسابقات برگزار میشوند.
در این دوره نباید کلاس را محلی برای یادگیری منفعلانه بدانید. اگر مطلبی را در کلاس یاد گرفتید، سعی کنید آن را در حل مسئله به کار ببرید.
همچنین ممکن است برخی مطالب فراتر از سیلابس رسمی IOI مطرح شوند. لازم نیست همهی این مطالب را به یک اندازه دنبال کنید. هدف اصلی شما باید توانایی حل مسئله باشد، نه صرفاً تمام کردن یک فهرست از الگوریتمها.
در کلاسها:
یکی از تمرینهای مفید در این دوره، طراحی سؤال است.
وقتی سعی میکنید برای یک ایدهی الگوریتمی مسئله طراحی کنید، مجبور میشوید دقیقتر بفهمید چه چیزی در آن ایده مهم است، چرا راهحل کار میکند و چگونه میتوان یک راهحل ساده را از راهحلهای پیچیدهتر جدا کرد.
بنابراین اگر فرصت داشتید، برای الگوریتمها یا ایدههایی که یاد گرفتهاید سؤال طراحی کنید و سعی کنید برای آن راهحل و تست مناسب نیز بسازید.
شما در دورهی طلا با افرادی کار میکنید که همگی از بهترین دانشآموزان المپیاد کامپیوتر کشور هستند.
این موضوع را صرفاً به عنوان یک رقابت نبینید. هرکدام از این افراد میتوانند منبع ارزشمندی برای یادگیری باشند.
از یکدیگر یاد بگیرید، دربارهی ایدهها صحبت کنید و تجربههای خود را به اشتراک بگذارید. البته در مورد آزمونهای دارای اثر مستقیم بر انتخاب تیم، قوانین و محدودیتهای تعیینشده توسط کمیته را کاملاً رعایت کنید.
همچنین مراقب باشید که مقایسهی دائمی خود با دیگران باعث از بین رفتن تمرکز شما نشود. در این مرحله ممکن است کسی در یک آزمون بسیار بهتر از شما عمل کند و در آزمون بعدی نتیجهی کاملاً متفاوتی بگیرد. چیزی که اهمیت دارد روند پیشرفت خود شماست.
یکی از سختترین بخشهای دورهی طلا، کنار آمدن با این واقعیت است که ممکن است با وجود تلاش بسیار زیاد، در نهایت جزو چهار نفر تیم نباشید.
تنها چهار نفر انتخاب میشوند، اما ارزش دورهی طلا و چیزهایی که در آن یاد میگیرید به انتخاب شدن یا نشدن شما محدود نیست.
از طرف دیگر، نباید این موضوع را بهانهای برای کمکاری قرار دهید. تا آخرین روز باید برای بهتر شدن تلاش کنید و نتیجهی نهایی را به آزمونها بسپارید.
سعی کنید به جای فکر کردن دائمی به رتبهی فعلی خود، روی چیزهایی تمرکز کنید که در کنترل شما هستند:
در رقابتی با هشت نفر از بهترینهای کشور، ممکن است فاصلهها بسیار کم باشد. بنابراین هیچ نتیجهای را زودهنگام قطعی تصور نکنید.
در مسابقهی واقعی ممکن است همهچیز مطابق برنامه پیش نرود. ممکن است یک مسئله بسیار دشوارتر از انتظار شما باشد، یک راهحل ساده به ذهنتان نرسد، برنامهتان باگ داشته باشد یا حتی شرایط فنی مسابقه کاملاً ایدهآل نباشد.
یکی از اهداف دورهی طلا این است که یاد بگیرید تحت چنین شرایطی نیز عملکرد خود را حفظ کنید.
بنابراین در آزمونهای تمرینی گاهی خودتان را در شرایطی قرار دهید که کاملاً مطابق برنامه نیست. یاد بگیرید اگر مسابقه بد شروع شد، مسابقه را برای خودتان تمامشده فرض نکنید.
یک مسابقهی پنجساعته مجموعهای از تصمیمهای متعدد است. خراب شدن یک ساعت اول الزاماً به معنی خراب شدن چهار ساعت بعدی نیست.
دورهی طلا دورهای فشرده است، اما قرار نیست تمام زندگی شما به المپیاد تبدیل شود.
خواب کافی، استراحت و داشتن زمانی برای فعالیتهای غیر درسی به شما کمک میکند کیفیت کار خود را حفظ کنید. کاهش شدید خواب برای چند ساعت مطالعهی بیشتر ممکن است در کوتاهمدت مفید به نظر برسد، اما معمولاً باعث کاهش تمرکز و افزایش خطا میشود.
بهخصوص در روزهای نزدیک به آزمونهای مهم، بهتر است به جای تلاش برای جبران حجم زیادی از مطالب، با ذهنی آماده و آرام وارد آزمون شوید.
در دورهی طلا ممکن است تصور کنید برای موفقیت باید هرچه بیشتر و بیشتر کار کنید. این تصور تا حدی درست است؛ بدون تلاش مستمر و جدی، رسیدن به سطح موردنیاز این دوره ممکن نیست. اما افزایش تعداد ساعت مطالعه بهتنهایی تضمینکنندهی پیشرفت نیست.
در این مرحله، کیفیت کاری که انجام میدهید اهمیت بسیار زیادی دارد. ممکن است دو دانشپژوه هر دو روزی چند ساعت برای المپیاد وقت بگذارند، اما یکی از آنها بخش زیادی از این زمان را صرف حل عمیق مسئله، بررسی راهحلها و تحلیل اشتباهات خود کند و دیگری بیشتر وقت خود را صرف خواندن مطالبی کند که از قبل میداند یا حل مسائل سادهای کند که چالش چندانی برایش ایجاد نمیکنند.
بنابراین به جای اینکه صرفاً تعداد ساعت کار خود را زیاد کنید، سعی کنید از زمانی که در اختیار دارید بیشترین استفاده را ببرید.
چند نکته در این زمینه:
در نهایت، معیار خوبی برای ارزیابی یک روز کاری این نیست که «چند ساعت کار کردم؟» بلکه این است که «امروز چه چیزی یاد گرفتم، چه مهارتی بهتر شد و کدام نقطهی ضعفم را پیدا یا برطرف کردم؟»
در دورهی طلا قرار نیست صرفاً بیشتر از دیگران کار کنید؛ باید یاد بگیرید بهتر از گذشتهی خودتان کار کنید.