پیشنهادات برای عملی
اول اولش باید بگم که عذر میخوایم که انقدر دیر داریم پست های جدید و شروع این دوره ی شاززز رو میذاریم.
امسال هم مثل سال های قبل یه تعدادی آزمون هم عملی و هم تئوری توی شاززز قرار می گیره. علاوه بر این یه سری پیشنهاد و راهنمایی برای دو بخش المپیاد کامپیوتر یعنی بخش های عملی و تئوری آماده شده. یک سری از این پیشنهادها که بیشتر درباره ی تئوری هستند رو امین توی پست قبلی نوشته و من هم یک سری از اون ها که به بخش عملی مربوط میشن رو تو ادامه ی همین پست مینویسم.
سایت های زیادی هستن که به طور ماهانه و هفتگی مسابقه برنامه نویسی برگزار می کنند. چندتا از این سایت ها رو در زیر با یک توضیح مختصر درباره شون نوشتم:
۱-Codeforces: این سایت در هر هفته حداقل یک کانتست(مسابقه برنامه نویسی) برگزار می کنه و سوالات متنوع و زیادی داره. کاربرها به دو دسته تقسیم میشن و سوالات مربوط به دسته ها با هم فرق می کنن. در ابتدا هر کاربر در سطح Div 2 که سوالات آسون تری داره قرار میگیرن و اگه توی چند کانتست رتبه ی خوبی کسب کنن امتیاز(Rate)شون زیاد میشه و وارد سطح Div.1 میشن. علاوه بر کانتست های جدید سوالات کانتست های قدیمی هم توی بخش Problemset قرار دارن و منبع خیلی خوبی برای تمرین هستن. ضمنا سوالات بر اساس راه حلشون هم دسته بندی شدن. مثلا سوالات مربوط به گراف رو میتونید ازاینجاببینید.
۲-SGU: این سایت شامل یه منبع خیلی خوب از سوال های برنامه نویسی برای تمرین هست.
۳-USACO: آزمون های المپیاد کامپیوتر آمریکا در این سایت برگزار می شود. این سایت دارای سه سطح Bronze, Silver و Gold هست. در ابتدا همه در سطح Bronze هستن و اگه توی مسابقه ی هرماه نمره ی بیشتر از یک کف مشخص(که به اون مسابقه وابسته است) رو کسب کنید وارد سطح بالاتر می شید. برای شرکت توی هر مسابقه چهار روز وقت دارید که اون مسابقه رو شروع کنید و بعد از شروع کردن سوالا به شما نشون داده میشن و پنج ساعت وقت به شما داده میشه که سوالات رو حل کنید. درستی یا غلطی راه حلتون بعد از تموم شدن مهلت کل مسابقه(یعنی بعد از اون چهار روز) نشون داده میشه و در طی مسابقه فقط راه حلتون برای تست های نمونه بررسی میشه. کانتست های سال های گذشته هم در این سایت هست
۴-COCI: این سایت هم هر سه یا چهار هفته یک مسابقه ی سه ساعته ی برنامه نویسی شش سواله برگزار میکنه. سوالات هم به ترتیب از آسون به سخت هستند.
۵-clist: این سایت کانتست هایی که قراره برگزار بشه رو لیست کرده و اونها رو به ترتیب زمانی مرتب می کنه. درنتیجه میتونید به اون مراجعه کنید تا از لیست کانتستایی که قراره برگزار بشه و زمانشون باخبر بشید.
پیشنهاد می کنم در کانتست های سایت های USACO, COCI و Codeforces شرکت کنید. البته توجه کنید که اینکه وقت کانتست تموم شه به این معنی نیست که دیگه نباید روی سوال ها فکر کنید. روی سوال ها فکر کنید و اگر حل شد کدشون رو بزنید. بعد از یه مدت خوبی که روی سوال فکر کردید هم حتما راه حل های سوال هایی که هنوز حل نشده رو بخونید و کدشون رو بزنید. این کار رو حداقل واسه ی دو تا از اولین سوالایی که حل نکردید انجام بدید. مثلا سعی کنید توی سایتی مثل COCI یا Codeforces اگر دو تا سوال اول رو حل کردید حتما روی سوال های سه و چهار فکر کنید و اگر حل نشدن راه حلشون رو بخونید و کدشون رو بزنید.علاوه بر این حتی اگه سوالی رو حل کردید سعی کنید راه حل ارائه شده برای اون رو بخونید. چون ممکنه نویسنده راه حل بهتری واسه ی اون سوال داشته باشه و میتونید ایده هی جدید یاد بگیرید.
برای تمرین سوالات سایت SGU سوالات خوبی هستن. میتونید با توجه به تعداد حل کننده های هر سوال که جلوی سوال نوشته شده سختی سوال رو تخمین بزنید و از سوال آسون به سخت حل کنید.
حل یه سوال عملی دو مرحله داره. در مرحله ی اول شما باید تئوری سوال رو حل کنید و الگوریتم برای این سوال به دست بیارید. و بعد از اون باید کد الگوریتم رو بزنید. با توجه به اینکه اکثر وقت رو باید روی مرحله ی اول بذارید باید روی کدنویسی به قدری مسلط باشید که هیچ سوالی نباشه که تئوریشو حل کرده باشید ولی نتونسته باشید کدشو بزنید. برای این کار هم تنها راه تمرینه. دادن کانتست ها حداقل تمرینیه که میتونید داشته باشید ولی در کنار اون هم باید سعی کنید سوالات سایت های مختلف مثل SGU یا سوالات کانتست های قبلی سایت هایی مثل Codeforces رو حل کنید.
برای بخش تئوری سوال های عملی هم باید یک سری از الگوریتم ها رو بلد باشید. برای یادگرفتن این الگوریتم ها همون طوری که امین گفت می تونید از کتاب Intoduction to Algorithms: A Creative Approach که بیشتر به نام Creative مشهور هست استفاده کنید. علاوه بر اون اینترنت منبع بسیار خوبی واسه ی یاد گرفتن الگوریتم های جدید هست و مثلا توی سایت ویکی پدیا توضیحات خیلی خوبی راجع به خیلی از الگوریتم ها هست. علاوه بر اون سایت Topcoder هم مقالاتی برای برخی از الگوریتم ها نوشته که میتونید لیست اون ها رو ازاینجاببینید. این سایت هم از سایت هاییه که کانتست برگزار میکنه.
اگر سوالی بود از بخش نظرات بپرسید.
موفق باشید ;)
- ۹۳/۰۶/۱۱