الگوریتمستان

نوشته‌های یک علاقه‌مند به حوزه‌های برنامه‌نویسی، الگوریتم، حل مسئله و ریاضیات دوست داشتنی

 
در صورت ناخوانا بودن نوشته‌ها، از مرورگر دیگری استفاده کنید.
نوشته‌ها با برچسب آمادگی مسابقه برنامه‌نویسی نوشته‌ها با برچسب آمادگی مسابقه برنامه‌نویسی - الگوریتمستان الگوریتمستان الگوریتمستان
نوشته‌ها با برچسب «

آمادگی مسابقه برنامه‌نویسی

»
✤   کتاب Competetive Programming

ویراست سوم کتاب برنامه‌نویسی رقابتی با نام کامل Competitive Programming 3: The New Lower Bound of Programming Contests با تلاش Steven Halim و Felix Halim از مربیان تیم‌های برنامه‌نویسی ACM-ICPC سنگاپور تالیف و  در سال ۲۰۱۳ منتشر شده است که امروزه به عنوان یکی از منابع مناسب برای آمادگی تیم‌های شرکت‌کننده در مسابقات برنامه‌نویسی الگوریتمی بویژه مسابقات برنامه‌نویسی ACM-ICPC توصیه می‌شود.

این کتاب شامل نکات تکنیکی برنامه‌نویسی در مسابقات ACM-ICPC و همینطور معرفی ساختمان داده‌ها و الگوریتم‌های پر کاربرد در ۹ فصل با جزئیات زیر است.

1 Introduction

    1.1 Competitive Programming

ادامه ...
✤   کتاب مقدمه‌ای بر مسابقات برنامه‌نویسی

کتاب مقدمه‌ای بر مسابقات برنامه‌نویسی (با عنوان انگلیسی An Introduction to Programming Contests) کتابی به زبان فارسی مناسب برای علاقه‌مندان به شرکت در مسابقات برنامه‌نویسی است که توسط احمد یوسفان، محسن بیگلری، فائزه میرزایی و امین بابادی، از شرکت‌کنندگان در مسابقات برنامه‌نویسی ACM-ICPC، نوشته شده است.

در پیشگفتار کتاب آمده است: «این کتاب مجموعه‌ای کامل از ابزارهای مورد نیاز برای تبدیل شدن به یک برنامه‌نویس کارآمد و حرفه‌ای برای حل مسأله‌های گوناگون الگوریتمی است. همچنین به نوعی کامل کنندهٔ درس‌های برنامه‌نویسی، ساختمان داده و طراحی الگوریتم است و دربردارندهٔ نکته‌های ساده و همچنین دشواری است که اغلب در این درس‌ها به آنها کمتر پرداخته می‌شود ولی برنامه‌نویس به آنها نیاز دارد. کتاب حاضر خواننده را برای مسابقه‌های برنامه‌نویسی مانند ای-سی-ام آماده می‌سازد. ترتیب فصل‌های کتاب به شکلی برگزیده شده است که خواننده همراه با کتاب، سطح خود را بهبود بخشیده و به طور کامل با کتاب همراه شود. در این کتاب، دسته‌ای گسترده از الگوریتم‌ها پیاده‌سازی و بررسی می‌شود.»

ادامه ...
✤   مسئله‌ی آتش‌سوزی در برره

مسئله

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

روستا را به صورت شبکه‌ای با ابعاد $ n \times m $ در نظر بگیرد که برخی خانه‌های آن در آغاز آتش گرفته‌اند و اگر خانه‌ای در زمان $x$ آتش گرفته باشد، هشت خانه‌ی مجاور آن در زمان $ x + k$ آتش خواهند گرفت و هرگز خاموش نمی‌شوند. حال اگر خرزو خان در نقطه‌ی $s$ شبکه باشد، می‌تواند در هر ثانیه به یکی از چهار خانه‌ی مجاور بالا، پایین، راست یا چپ خود برود و تلاش کند به نقطه‌ی $t$ که هلیکوپتر در آن قرار دارد برسد.

ادامه ...
✤   کتاب راهنمای برنامه‌نویسان رقابتی

کتاب Competitive Programmer's Handbook (راهنمای برنامه‌نویسان رقابتی) کتابچه‌ای است که در آن عموم مباحث مورد نیاز جهت شرکت در رقابت‌های برنامه‌نویسی همچون المپیاد کامپیوتر دانش‌آموزی یا مسابقات برنامه‌نویسی دانشجویی به صورت مختصر و مفید یک جا جمع شده است.

دکتر Antti Laaksonen از مربیان تیم‌های المپیاد کامپیوتر کشور فنلاند این کتاب را به صورت رایگان جهت استفاده‌ی عموم در سه بخش و سی فصل با عناوین زیر منتشر کرده است.

  

بخش اول: تکنیک‌های مقدماتی

  • مقدمه
  • پیچیدگی زمانی
  • مرتب‌سازی
  • ساختمان داده‌ها
  • جستجوی جامع
  • الگوریتم‌های حریصانه
  • الگوریتم‌های برنامه‌نویسی پویا
  • تحلیل کارآیی
  • پرس و جوهای بازه‌ای
  • عملیات بیتی

بخش دوم: الگوریتم‌های گراف

ادامه ...
✤   مسئله‌ی Turn the Lights Off

مسئله

صفحه‌ای مشبک با ابعاد 10 در 10 وجود دارد که هر خانه شامل یک لامپ و یک کلید برای روشن یا خاموش کردن لامپ است. اما این کلیدها رفتار عادی ندارند و فشار دادن هر کدام، نه تنها لامپ همان خانه که لامپ خانه‌های بالا، پایین، راست و چپ آن خانه را - در صورت وجود - تغییر وضعیت می‌دهد.

به عنوان نمونه به مثال‌های زیر توجه کنید که بخشی از شبکه است و کلید وسط فشار داده می‌شود. در این مثال‌ها منظور از O روشن بودن لامپ و #‌ خاموش بودن آن است و کلید وسط فشار داده می‌شود.

  

مسئله‌ی Turn the Lights Off

ادامه ...
✤   مسئله‌ی Jolly Jumpers

دنباله‌ای از $n$ عدد صحیح را Jolly Jumper گویند هر گاه قدر مطلق اختلاف عناصر متوالی آن، همه‌ی اعداد 1 تا $n-1$ را تولید کند. برای مثال دنباله‌ی

1  4  2  3

Jolly Jumper است. چرا که قدرمطلق اختلاف عناصر متوالی آن 3، 2 و 1 است. همچنین هر دنباله با تنها یک جمله، Jolly Jumper محسوب می‌شود. شما باید برنامه‌ای بنویسید که مشخص کند آیا یک دنباله Jolly Jumper است یا نه؟

  

ورودی برنامه

هر خط ورودی برنامه با عدد $n$ (کمتر از 3000) آغاز و پس از آن $n$ عدد دنباله می‌آیند.

ادامه ...
✤   مستندات دوره‌ی آمادگی مسابقات برنامه‌نویسی دانشگاه استنفورد

مستندات دوره‌ی «Introduction to Programming Contests» دانشگاه استنفورد با تدریس Jaehyun Park (مربی تیم‌های ACM-ICPC این دانشگاه) شامل اسلایدها، سوالات برگزیده برای تمرین در موضوعات مختلف ریاضیات، ساختمان داده‌ها و الگوریتم‌ها به همراه نکات برنامه‌نویسی از پیوند زیر قابل مشاهده و دریافت هستند:

CS 97SI: Introduction to Programming Contests

ادامه ...
✤   مسئله‌ی The Trip

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

این گروه دانشجویی توافق کرده‌اند که سهم هر کدام از نفرات در مخارج سفر با دیگر اعضا یکی باشد. برای رسیدن به این هدف، عملا امکان تقسیم خرج بین نفرات در هر هزینه وجود ندارد. به همین دلیل هر کدام از نفرات هزینه‌های مختلف از قبیل وعده‌های غذایی، اقامت و ایاب و ذهاب را پرداخت می‌کنند و پس از اتمام سفر، مجموع کل هزینه‌ها محاسبه شده و پول بین نفرات به قسمی رد و بدل می‌شود که همه به یک میزان در خرج مشارکت داشته باشند یا حداکثر یک سنت اختلاف وجود داشته باشد.

در گذشته این حساب و کتاب و تبادل پول کاری خسته‌کننده و زمان‌بر بود. کار شما یافتن حداقل میزان تبادل پول بین نفرات است به قسمی که همه به یک میزان یا حداکثر اختلاف یک سنت خرج کرده باشند.

ادامه ...
✤   مسئله‌ی 3n+1 Problem

الگوریتمی را در نظر بگیرید که با دریافت یک عدد $n$، دنباله‌ای از اعداد را تولید می‌کند. به این ترتیب که اگر $n$ زوج بود، تقسیم آن بر عدد 2 و اگر فرد بود، $ 3n + 1 $ را به عنوان جمله‌ی بعدی دنباله و مقدار جدید برای $n$ تولید کرده و عملیات را تا زمانی که مقدار $n$ برابر 1 شود، ادامه دهد. برای مثال، دنباله‌ی زیر با شروع از $ n = 22 $ تولید می‌شود:

\[ 22 \; 11 \; 34 \; 17 \; 52 \; 26 \; 13 \; 40 \; 20 \; 10 \; 5 \; 16 \; 8 \; 4 \; 2 \; 1 \]

حدس زده شده است که چنین دنباله‌ای به ازای هر عدد صحیح $n$ در نهایت به عدد 1 ختم خواهد شد. این حدس حداقل برای اعداد کمتر از 1000000 صحیح است.

ادامه ...
✤   مسئله‌ی Encrypted SMS

اعضای کمیته‌ی علمی ACM‌ امسال از ایمیل برای بحث در مورد سوالات استفاده می‌کنند. آنها می‌دانند که ایمیل ابزار امنی برای ارتباط در مورد چنین موضوعات حساسی نیست. بنابراین فایل‌های فشرده‌ی رمزگذاری شده را تبادل می‌کنند. برای تبادل کلمه‌ی عبور فایل نیز از SMS رمز شده با ساختار تایپ multi-tap استفاده می‌کنند.

روش multi-tap در حال حاضر (سال ۲۰۰۷) رایج‌ترین روش ورودی گوشی‌های تلفن است که فشار دادن یک یا چند باره‌ی یک کلید خاص، حرف مورد نظر ما را تولید می‌کند. به عنوان مثال، حروف B ،A و C به ترتیب با یک، دو و سه بار فشار دادن کلید 2 به دست می‌آیند.

ادامه ...
✤   مسئله‌ی Gholam's Simple Game

کف اتاق خواب غلام با کاشی‌های سفید و زرد پوشیده شده است. گاهی که حوصله ندارد، روی یکی از کاشی‌ها می‌ایستد و در آن ردیف از کاشی‌ها قدم می‌زند. او ابتدا عدد $n$ را انتخاب می‌کند و تنها $n$ قدم حرکت می‌کند. اگر در حین حرکت به دیوار برسد، چرخیده و در جهت خلاف به حرکت خود ادامه می‌دهد. توجه داشته باشید که خود عمل چرخش گام حساب نمی‌شود. در حین قدم زدن (یک کاشی در هر قدم) او تعداد دفعاتی که پا روی کاشی زرد گذاشته را می‌شمارد.

برای مثال، شکل زیر یک ردیف از کاشی‌های اتاق را نشان می‌دهد. رنگ کاشی‌ها با حروف 'W' و 'Y' مشخص شده‌اند که به ترتیب به معنی رنگ سفید و زرد هستند. اگر او از کاشی شماره‌ی 3 شروع کرده و تصمیم داشته باشد 7 قدم به سمت راست حرکت کند، در نهایت روی کاشی شماره‌ی 2 متوقف شده و 3 بار روی کاشی‌های زرد پا می‌گذارد.

ادامه ...
✤   راه حل سوالات مسابقه‌ی جهانی ACM-ICPC 2016

ویدئوهای راه حل سوالات مسابقه‌ی جهانی ACM-ICPC 2016 را در کانال آپارات الگوریتمستان مشاهده کنید:

aparat.com/algorithmha

ادامه ...
✤   مسئله‌ی What Base Is This

می‌دانیم که جایگاه رقم در یک عدد، وزن آن را در مقدار عدد مشخص می‌کند. برای مثال، عدد 362 در مبنای 10 از رقم 2‌ با وزن $10^0$، رقم 6 با وزن $10^1$ و رقم 3 با وزن $10^2$ به صورت $ 3 \times 10 ^ 2 + 6 \times 10 ^ 1 + 2 \times 10 ^ 0 $ یا $ 300 + 60 + 2 $ تشکیل شده است. چنین ساختاری برای نمایش اعداد در سایر مبناها نیز وجود دارد.

اگرچه عموم مردم تصور می‌کنند اعداد مورد استفاده‌ی آنها تنها در مبنای 10 تعریف شده‌اند، اما ما می‌دانیم که نمایش در سایر مبناها نیز امکانپذیر است. مثلا عدد 362 نمایش متفاوتی در مبناهای 9 یا 14 دارد.

ادامه ...
✤   ویدئوهای آموزشی کلاس Programming Challenges

کتاب Programming Challenges: The Programming Contest Training Manual اثر Steven Skiena و Miguel Revilla یکی از کتاب‌های مناسب تمرین گام به گام برای شرکت در مسابقات برنامه‌نویسی‌ای همچون المپیاد کامپیوتر و ACM-ICPC است. این کتاب مورد تایید UVa Online Judge بوده و تمام سوالات تمرینی کتاب نیز از این مخزن است.

  

کتاب Programming Challenges

ادامه ...
✤   مسئله‌ی انتخابات

مسئله

جناب خان که با کسب و کار لبوی خود میلیاردر شده است، می‌خواهد رئیس جمهور شود! در کشور او که از چندین ایالت تشکیل شده است، از روشی با عنوان هیئت انتخاب (یا هیئت الکترال) برای انتخاب رئیس جمهور استفاده می‌شود. در چنین ساختاری شمارش رأی در هر ایالت به صورت مستقل انجام می‌شود و هر ایالت متناسب با جمعیت خود تعدادی نماینده در هیئت انتخاب کنندگان رئیس جمهور دارد. تمام نمایندگان یک ایالت در نهایت به نامزدی رأی می‌دهند که در آن ایالت اکثریت آرا را کسب کرده باشد. اگر نامزدها رأی برابر داشته باشند، هر ایالت قوانین خاص خود برای انتخاب نهایی را دارد. در نهایت رئیس جمهور کسی است که بیش از نصف مجموع رأی‌های هیئت انتخاب را از آن خود کند.

با در اختیار داشتن احتمال پیروزی جناب خان در هر ایالت، احتمال پیروزی وی در انتخابات را محاسبه کنید.

ادامه ...
✤   ابزار VJudge

وب‌سایت Virtual Judge این امکان را فراهم می‌کند که با ترکیب دلخواهی از سوالات وب‌سایت‌های مخزن سوالات برنامه‌نویسی همچون UVA، Codeforces و خود سوالات ACM-ICPC، مسابقه‌ی مجازی برگزار کرد. از این حیث برای تمرین تیم‌های مسابقات ACM-ICPC بسیار مناسب و کارا است.

ادامه ...
✤   مسئله‌ی اعداد اردوش

مسئله

پل اردوش (اردیش - Paul Erdős) ریاضیدان مشهور و برجسته‌ی قرن بیستم است که تا پایان عمر خود تلاش گسترده‌ای برای انتشار مقالات علمی داشت و همکاری با وی در انتشار مقاله یک افتخار بزرگ برای هر ریاضیدان محسوب می‌گردد.

با توجه به آنکه همکاری با ایشان برای هر کس ممکن نبود، تلاش می‌کردند با نفراتی در انتشار مقاله‌ی علمی همکاری کنند که با این دانشمند بزرگ مقاله داشتند. این رویکرد باعث پدید آمدن عدد اردوش (Erdős number) یا فاصله‌ی همکاری اردوش شد؛ یعنی برای نویسندگانی که به صورت مستقیم با ایشان همکاری داشتند عدد 1 و برای کسانی که با این نفرات مقاله داشتند عدد 2 نسبت داده شد و ارتباطات دورتر نیز به همین ترتیب با اعداد طبیعی بعدی مشخص شدند.

ادامه ...
✤   ابزار UVA Toolkit

وب‌سایت UVA Toolkit این امکان را فراهم می‌کند که برای سوالات وب‌سایت UVA Online Judge ورودی مد نظر خودمان را داده و خروجی متناظرش را ببینیم. به این ترتیب هم می‌توانیم ابهام در نحوه‌ی تولید خروجی را رفع کنیم و هم زمان برای تولید دستی خروجی نگذاریم.

در ضمن برای هر سوال موضوع یا روش حل سوال راهنمایی نیز شده است.

ادامه ...
✤   مسئله‌ی بشکه‌های آب

مسئله

$n$ بشکه‌ی آب با تعدادی لوله به هم وصل شده‌اند. هر بشکه استوانه‌ای عمودی با سطح مقطع یک متر مربع و ارتفاع نامحدود است که با عدد یکتا بین 1 تا $n$ شماره‌گذاری شده است. $i$-امین لوله بشکه‌ی $ x_i $ و $y_i$ را به هم متصل می‌کند. یک سر این لوله در ارتفاع $h_i$ متر به بشکه‌ی $ x_i $ متصل است و سر دیگر آن در همان ارتفاع به بشکه‌ی $y_i$ متصل است. در زمان صفر بشکه‌ها خالی هستند و یک جریان آب به صورت پیوسته با سرعت یک متر مکعب بر ساعت در بشکه‌ی شماره‌ی یک می‌ریزد. اگر آب بشکه‌ای به ارتفاع لوله‌ای برسد، آب در لوله جریان پیدا می‌کند و می‌تواند وارد بشکه‌ی دیگر شود. فرض کنید قطر لوله‌ها ناچیز است و سرعت آب در لوله‌ها بسیار زیاد است.

ادامه ...
✤   کتاب طراحی الگوریتم با رویکردی خلاقانه

کتاب Introduction to Algorithms: A Creative Approach را می‌توان مکملی بر استفاده از کتاب Introduction to Algorithms (مشهور به کتاب CLRS) دانست. در این کتاب علاوه بر معرفی تکنیک‌های مختلف طراحی الگوریتم‌ها و روش‌های حل برخی مسائل الگوریتمی، روش‌های تحلیل و حل آنها با جزئیات بیشتر و به صورت گام به گام بررسی شده است. به همین دلیل نیز از جمله منابع اصلی پیشنهادی به متقاضیان شرکت در المپیادهای کامپیوتر و مسابقات برنامه‌نویسی برای یادگیری طراحی و تحلیل الگوریتم‌ها است.

ادامه ...
✤   مسئله‌ی تاریخچه‌ی جدول

مسئله

جدولی با n سطر و m ستون در نظر بگیرید. در تمام خانه‌های این جدول عدد 0‌ نوشته شده است. در ابتدای کار حامد در خانه‌ای از جدول ایستاده است. او عدد این خانه را پاک می‌کند و عدد 1 را به جای آن می‌نویسد. حامد شروع به حرکت می‌کند و در هر ثانیه یک خانه به بالا، راست، پایین یا چپ می‌رود. او با وارد شدن به هر خانه، عدد نوشته شده در خانه را پاک می‌کند و عددی یک واحد بزرگتر از آخرین عددی که نوشته است را می‌نویسد و بعد از مدتی متوقف می‌شود. می‌دانیم حامد در انتهای حرکت خود تمام خانه‌های جدول را دیده است.

به شما عکسی از اعداد نوشته شده در جدول داده شده است. آیا حامد اعداد روی جدول را به درستی نوشته است؟

ادامه ...
✤   مسئله‌ی آسانسورها

مسئله

ساختمان جدید دپارتمان مهندسی کامپیوتر تنها شامل آسانسور بوده و پله ندارد. برای دسترسی سریع و مناسب به اتاق‌ها و کلاس‌های طبقات مختلف، آسانسورها به گونه‌ای تنظیم شده‌اند که تنها در طبقات مشخصی توقف داشته باشند؛ مثلا تعدادی تنها در طبقات زوج و تعدادی دیگر تنها در طبقات فرد. دکمه‌های داخل آسانسور و کنار ورودی آسانسور نیز تنها برای همین طبقات از پیش مشخص شده فعال هستند. این ایده دسترسی سریع و مناسب به طبقات ساختمان را برای برخی افراد فراهم می‌کند. به عنوان نمونه اعضای هیئت علمی دسترسی مستقیم به طبقات اتاق‌های خود دارند. اما در حالت کلی باعث سردرگمی می‌شود. اگر شخصی بخواهد از طبقه‌ای به طبقه‌ی دیگری برود، ممکن است هیچ آسانسوری در هر دوی آنها توقف نداشته باشد و شخص مجبور به تعویض آسانسور گردد. در چنین شرایطی این سوال پیش می‌آید که کدام آسانسور (یا آسانسورها) باید انتخاب شوند و کدام انتخاب‌ها شخص را در زمان کمتری به مقصد می‌رساند. اگر مسیر حرکت شخص از طبقه‌ی i به طبقه‌ی j به صورت $ i = f_1 \rightarrow f_2 \rightarrow f_3 \rightarrow \cdots \rightarrow f_k = j $ نمایش داده شود، عبارت $ \sum_{r=1}^{k-1} \vert f_i - f_{i+1} \vert $ زمان لازم برای رسیدن به مقصد از طریق آن مسیر است. برنامه‌ای بنویسید که افراد را در استفاده‌ی بهتر (در زمان کمتر) از آسانسورها یاری کند.

ادامه ...
✤   کتاب Concrete Mathematics

کتاب Concrete Mathematics: A Foundation for Computer Science نوشته‌ای با موضوع مفاهیم اولیه‌ی ریاضیات پیوسته (CONtinuous mathematics) و ریاضیات گسسته (disCRETE mathematics) به قلم رونالد گراهام، دونالد کنوت و اُرِن پاتاشنیک - از دانشمندان بزرگ علوم ریاضیات و کامپیوتر - است . در این کتاب از بیان متفاوتی نسبت به نوشتار عموم کتاب‌های آموزش ریاضی استفاده شده و مفاهیم پایه‌ای محاسباتی علم کامپیوتر به زبان ساده و گیرا توضیح داده شده است. این مفاهیم پیش‌نیاز حل بسیاری از مسائل کامپیوتری، ریاضی و محاسبات علمی هستند. به همین دلیل، مطالعه‌ی آن به علاقه‌مندان برنامه‌نویسی، بویژه شرکت‌کنندگان المپیادهای کامپیوتری و مسابقات برنامه‌نویسی توصیه می‌شود.

ادامه ...
✤   الگوریتم جستجوی اول سطح (BFS)

الگوریتم پیمایش اول سطح یا جستجوی اول سطح (Breadth First Search - BFS) از جمله الگوریتم‌های مشهور پیمایش و جستجوی گراف است که در حل مسائل الگوریتمی و هوش مصنوعی کاربرد دارد. این الگوریتم برای پیمایش و جستجوی گراف از یک صف برای نگهداری ترتیب جستجو استفاده می‌کند.

الگوریتم BFS با وارد کردن گره مبدأ به صف پردازش شروع شده و تا خالی نشدن این صف مراحل زیر را تکرار می‌شود:

1- عنصر جلوی صف را به عنوان گره جاری انتخاب و از صف حذف کن.

2- گره جاری را پردازش کن.

3- گره‌های مجاور گره جاری که پردازش نشده و در صف پردازش نیز قرار ندارند به این صف اضافه کن.

ادامه ...
✤   کتاب چالش‌های برنامه‌نویسی

کتاب Programming Challenges: The Programming Contest Training Manual از انتشارات معتبر Springer کتاب مفیدی برای آمادگی شرکت در مسابقات برنامه‌نویسی است که نویسندگان آن به صورت گام به گام، خلاصه و مفید، به مفاهیم و نکات مهم برنامه‌نویسی، ساختمان داده‌ها، محاسبات ریاضی و طراحی الگوریتم‌ها اشاره داشته و با طرح مسائل متفاوت از هر موضوع، خواننده را به چالش حل مسئله کشیده‌اند.

در این کتاب برای هر موضوع مورد بحث تعدادی سوال از وب‌سایت UVA انتخاب و مطرح شده است. به این ترتیب خواننده علاوه بر آشنایی با مفاهیم مختلف، با نحوه‌ی طراحی سوال از آن موضوع نیز مواجه می‌شود. نویسندگان کتاب در مقدمه به این نکته اشاره داشته‌اند که در انتخاب سوال‌ها علاوه بر مرتبط بودن موضوع، جنبه‌ی سرگرمی و جذابیت نیز تا حد ممکن رعایت شده است: «گاهی موضوعات جذاب علم کامپیوتر و ریاضیات در قالب داستان‌های سرگرم کننده بیان شده است. این مسئله مطالعه‌ی موارد جذاب دیگری را پیش می‌آورد.»

ادامه ...
✤   مسئله‌ی دوستان خوب

مسئله

دو دوست در زمین نامحدودی متشکل از حصارهای دایره‌ای شکل هم‌اندازه با ساختار زیر قرار دارند:

  

مسئله‌ی دوستان خوب

  

یکی از دوستان قصد دارد با حرکت در این ساختار نزد دوست دیگر خود برود. حرکت در این ساختار در هر گام شامل جابجایی به یکی از دایره‌های مجاور است. دو دایره مجاور هستند اگر در یک نقطه مشترک باشند.

با توجه به موقعیت دو دوست در این ساختار، هدف یافتن حداقل گام‌های مورد نیاز برای رسیدن دو دوست به یک خانه است. توجه داشته باشید که محل اولیه‌ی دو دوست لزوما متمایز نبوده و در کل مراحل یک دوست در محل خود ثابت مانده و دوست دیگر حرکت می‌کند.

ادامه ...
✤   مسئله‌ی حداکثر مجموع

مسئله

ماتریس مربعی با ابعاد $N$ در $N$ و درایه‌هایی از اعداد صحیح موجود است. منظور از زیرماتریس بیشینه، زیرماتریسی از ماتریس مفروض است که مجموع عناصر آن بزرگتر یا مساوی مجموع عناصر هر زیرماتریس دیگر آن است.

به عنوان مثال، برای ماتریس زیر:

  

\[ \begin{matrix} 0 & -2 & -7 & 0 \\ 9 & 2 & -6 & 2 \\ -4 & 1 & -4 & 1 \\ -1 & 8 & 0 & -2 \end{matrix} \]

  

زیرماتریس بیشینه به این ترتیب خواهد بود:

  

\[ \begin{matrix} 9 & 2 \\ -4 & 1 \\ -1 & 8 \end{matrix} \]

ادامه ...
✤   مسئله‌ی چراغ راهنمایی

مسئله

یک چراغ راهنمایی در مسیر گردش از بزرگراه به یک مرکز فروش بزرگ تعبیه شده است. عملکرد این چراغ به گونه‌ای است که در هر دقیقه حداکثر k خودرو امکان گردش از بزرگراه به سمت مسیر مرکز را دارند. در پایان هفته شهروندان بیشتری برای خرید به این مرکز مراجعه می‌کنند که باعث بالا رفتن حجم ترافیک می‌شود. مدیران مرکز سفارش نصب دوربین ویژه‌ای در نزدیکی آن محل را داده‌اند که امکان شمارش تعداد خودروهای وارد شده از سمت شهر به محل گردش به مرکز فروش را دارد.

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

  

ادامه ...
✤   مسئله‌ی Simple Addition

مسئله

تابع بازگشتی (F(n با تعریف زیر مفروض است:

  

\[ F(n)= \left\{\begin{matrix} n \% 10 & & & if \; (n\%10) > 0\\ 0 & & & if \; n = 0 \\ F(n/10) & & & Otherwise \end{matrix}\right. \]

  

تابع (S(p, q به این صورت تعریف شده است:

  

\[ S(p,q)=\sum_{i=p}^{q} F(i) \]

  

مقدار (S(p, q را به ازای مقادیر ورودی p و q محاسبه کنید.

ادامه ...
✤   مسئله‌ی مربی ناامید

مسئله

یکی از تیم‌های لیگ برتر فوتبال (جام خلیج فارس) امسال نتایج خیلی بدی گرفته است. هیئت مدیره‌ی باشگاه برای اخراج مربی تحت فشار هستند. اما این مربی از سوی طرفداران تیم به عنوان یک قهرمان محبوب حمایت می‌شود. به همین دلیل تصمیم می‌گیرند یک فرصت دیگر به مربی بدهند. سخنگوی باشگاه به رسانه‌ها اعلام می‌کند که هیئت مدیره‌ی باشگاه تنها زمانی از مربی حمایت می‌کنند که بتواند در 5 بازی آینده 11 امتیاز برای تیمشان کسب کند. مربی می‌خواهد بداند چقدر احتمال دارد به این موفقیت دست پیدا کند و از شما کمک می‌خواهد.فرض کنید احتمال کسب برد، باخت و تساوی در مسابقه‌های بعدی از روی مسابقات انجام شده تا به حال به دست می‌آید. به عنوان مثال اگر این تیم از 10 بازی انجام داده‌ی قبلی 3 برد داشته باشد، احتمال برد در آینده 30% خواهد بود.

ادامه ...
✤   کتاب هنر مسابقات برنامه‌نویسی

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

یکی از شرکت‌کنندگان مسابقات ACM به نام احمد شمس العارفین (Ahmed Shamsul Arefin) از کشور بنگلادش - که فعالیت‌های گسترده‌ی دیگری مانند وب‌سایت www.acmsolver.org نیز دارد - اقدام به انتشار کتاب رایگانی در مورد آمادگی مسابقات برنامه‌نویسی از طریق همین وب‌سایت نموده است.

ادامه ...
کمی آمار
  • عمر سایت:  ۴۵۷۱ روز
  • تعداد امتیاز ثبت شده:  ۳۲۷۵ امتیاز
  • میانگین امتیازها:  ۴.۲۵ از ۵.۰۰
  • بازدید امروز:  ۳۰۸ بازدید
  • بازدید ۲۴ ساعت گذشته:  ۱۰۹۴ بازدید
  • بازدید ۷ روز گذشته:  ۸۴۴۷ بازدید
  • بازدید ۳۰ روز گذشته:  ۳۷۵۳۲ بازدید
  • بازدید ۱ سال گذشته: ۴۲۲۱۲۰ بازدید
  • کل بازدیدها: ۴۸۱۴۵۱۰ بازدید
برچسب‌ها
#آمادگی مسابقه برنامه‌نویسی  #آموزش الگوریتم  #مسئله‌های الگوریتمی  #برنامه‌نویسی ++C  #الگوریتم  #نمونه سوالات مسابقه برنامه‌نویسی  #حل مسئله‌‌ی الگوریتمی  #برنامه‌نویسی  #منبع آموزشی  #حل سوالات مسابقات برنامه‌نویسی  #الگوریتم‌های تقسیم و غلبه  #نمونه سوال مسابقه ACM  #الگوریتم‌های برنامه‌نویسی پویا  #الگوریتم‌های بازگشتی  #کتاب الکترونیکی  #آموزش ساختمان داده‌ها  #تکنیک‌های طراحی الگوریتم  #محاسبات ریاضی  #گراف  #دانلود کتاب  #حل سوالات ACM-ICPC  #الگوریتم‌های مرتب‌سازی  #سوالات مسابقات ACM-ICPC  #Python  #پیمایش گراف  #ساختمان داده  #کتاب مسابقات برنامه‌نویسی  #الگوریتم‌های گراف  #حل سوالات UVa Online Judge  #الگوریتم‌های مسیریابی  #الگوریتم‌های حریصانه  #درخت‌ها  #سوالات UVa Online Judge  #جستجوی اول سطح  #ماتریس  #الگوریتم‌های کوتاهترین مسیر  #درخت پوشا  #الگوریتم دایکسترا  #ویدئوی آموزشی  #معرفی وب‌سایت  #الگوریتم فلوید-وارشال  #مسئله‌ی کوله‌پشتی  #جستجوی اول عمق  #کتابخانه قالب استاندارد ++C  #صف  #سوالات مسابقات برنامه‌نویسی بیان  #الگوریتم‌های عقبگرد  #حل سوالات Timus Online Judge