Competitive Programming Guide

Competitive Programming Guide

نسخهٔ ۲.۵.۰
نصب<۱۰
دسته‌بندیآموزش
حجم۵ مگابایت
آخرین بروزرسانی۱۶ دی ۱۴۰۴
Competitive Programming Guide

Competitive Programming Guide

VOCODE Labs
نسخهٔ ۲.۵.۰
نصب<۱۰
دسته‌بندیآموزش
حجم۵ مگابایت
آخرین بروزرسانی۱۶ دی ۱۴۰۴
مشاهده‌ی نتایج بررسی آنتی‌ویروس

تصاویر برنامه

معرفی برنامه

جزئیات بیشتر

CP Handbook جایی است که همه علاقه‌مندان به برنامه‌نویسی رقابتی می‌توانند الگوریتم‌ها و ساختارهای داده را یک‌جا پیدا کنند. همچنین هر مبحث شامل مثال‌ها و مسئله‌های حل‌نشده برای تمرین است.

برنامه‌نویسی رقابتی یک ورزش است؛ منظورم واقعاً خودِ ورزش است. هر ورزشی را در نظر بگیرید؛ مثلاً کریکت. برای اولین بار به میدان می‌روید تا توپ بزنید. ضربه می‌زنید و توپ را از دست می‌دهید؛ این کار را چند بار انجام دهید و بالاخره توپ را از روی مرز زمین می‌فرستید. حالا یک مسابقه برنامه‌نویسی را به‌صورت استعاری، مثل یک بازی کریکت در نظر بگیرید. کدی را کامپایل و ارسال می‌کنید و ممکن است نتیجه WA (پاسخ نادرست) بگیرید.
کد را تغییر می‌دهید و بالاخره اولین AC خود را می‌گیرید (پذیرفته‌شده/پاسخ درست). بگذارید پیش‌نمایشی به شما بدهم: حدود 20% از سؤال‌های یک مسابقه برنامه‌نویسی، صرفاً تبدیل متن انگلیسی ساده به کدی به زبان برنامه‌نویسی دلخواه شما هستند.
وارد میدان شوید؛ با تلاش بیشتر و پیشرفت، قوانین نانوشته بازی را یاد می‌گیرید.
و باور کنید، برای شروع نیازی نیست الگوریتم یا ساختار داده‌ای با «اسم عجیب‌وغریب» بلد باشید. تا به حال اسم «Waft shot» به گوشتان خورده؟ بااین‌حال بهترین توپ‌زن خیابان خودتان هستید، درست است؟

خب، بیایید 20% ابتدایی مسئله‌های برنامه‌نویسی را فتح کنیم.
باید این‌ها را بلد باشید:
تسلطی متوسط بر یکی از زبان‌های برنامه‌نویسی
انگلیسی! انگلیسی را به کد تبدیل کنید!
بیایید مسئله‌ای از این سطح را در نظر بگیریم: Terrible Chandu

تنها کاری که باید انجام دهید این است که یک خط ورودی را از STDIN بخوانید و معکوس آن خط را در STDOUT چاپ کنید. دست‌به‌کار شوید و راه‌حل خود را ارسال کنید. اولین AC خود را بگیرید. تمرین بیشتری می‌خواهید؟ در بخش تمرین‌ها کلی مسئله داریم. دنبال مسئله‌هایی بگردید که هزاران ارسال پذیرفته‌شده دارند.

خب، حالا آماده‌اید با چالش‌های واقعی روبه‌رو شوید. محکم بنشینید؛ داریم عمیق‌تر می‌شویم.

باید این‌ها را بلد باشید:

1. الگوریتم‌های مرتب‌سازی و جست‌وجو
2. درهم‌سازی
3. نظریه اعداد
4. روش حریصانه

مهم‌تر از همه، باید تشخیص دهید چه چیزی را، چه زمانی و کجا به کار ببرید. این کار واقعاً پیچیده می‌شود؛ برای همین، به مبتدیان کمک می‌کنیم تا اعتمادبه‌نفس پیدا کنند و مجموعه‌ای از مسابقه‌ها را با نام Code Monk برگزار می‌کنیم. پیش از هر مسابقه، آموزش یک مبحث مشخص را منتشر می‌کنیم و بعد، در طول مسابقه، مسئله‌ها فقط درباره همان مبحث هستند. پیشنهاد می‌کنم آموزش‌ها را بخوانید و برای هر مبحث یکی دو مسئله حل کنید.

تا اینجا متوجه شده‌اید که صورت سؤال‌ها طوری نوشته می‌شوند که شیوه فکر کردن ما را به اشتباه بیندازند. گاهی اگر متن انگلیسی ساده را به کد تبدیل کنید، نتیجه TLE (عبور از محدودیت زمانی) می‌گیرید. برای کنار آمدن با محدودیت‌های زمانی، باید مجموعه‌ای از تکنیک‌ها و الگوریتم‌های جدید یاد بگیرید. در برخی موارد، برنامه‌نویسی پویا (DP) به کمک شما می‌آید. در واقع، شاید پیش‌تر هم به‌طور شهودی از این تکنیک استفاده کرده باشید. در هر مسابقه، همیشه دست‌کم یک سؤال وجود دارد که می‌توان آن را با DP حل کرد.

همچنین حتماً متوجه شده‌اید که بعضی سؤال‌ها را نمی‌توان با ساختارهای داده‌ای آرایه‌ای خطی حل کرد.

1. نظریه گراف
2. مجموعه‌های مجزا (Union-find)
3. درخت پوشای کمینه

این مجموعه از ساختارهای داده شما را تا حد زیادی پیش می‌برد. علاوه بر این، متوجه می‌شوید که هنر واقعی، تغییر دادن تکنیک‌هایی است که بلد هستید تا بتوانید مسئله‌ای را حل کنید. با این روش می‌توان با همه سؤال‌های سطح آسان تا متوسط و متوسط روبه‌رو شد.

همه‌چیز برای صدرنشینی در جدول رتبه‌بندی مسابقه‌های کوتاه برنامه‌نویسی آماده است؛ فقط پیوسته و با پشتکار ادامه دهید. همان‌طور که قبلاً گفتم، این یک ورزش است و تا وقتی واقعاً تمرین نکنید، در آن استاد نمی‌شوید. دست‌به‌کار شوید و در یک مسابقه کوتاه شرکت کنید؛ نقاط قوت و ضعف خود را بشناسید و ببینید وقتی زمان رو به پایان است، در حالت اوج آدرنالین چگونه عمل می‌کنید.

تا جایی که می‌توانید به منطق خودتان پایبند بمانید؛ بالاخره به الگوریتمی شبیه الگوریتم لازم برای حل مسئله می‌رسید. فقط لازم است آن را کمی صیقل دهید. بسیاری از این تکنیک‌ها به شما کمک می‌کنند بعضی از دشوارترین مسئله‌های موجود را حل کنید.

1. درخت بازه‌ای
2. الگوریتم‌های رشته‌ای
3. درخت‌های پیشوندی، درخت پسوندی، آرایه پسوندی.
4. تجزیه سنگین-سبک
5. رنگ‌آمیزی گراف، جریان شبکه
6. تجزیه ریشه دوم.

پس این CP Handbook را دانلود کنید و از یادگیری چیزهای جدید لذت ببرید؛ همچنین فراموش نکنید آن‌ها را با پیچیدگی زمانی کمتر کدنویسی کنید.

نظرات کاربران - ۰ رأی
۰ از ۵
۵
۴
۳
۲
۱