پاسخ : بحث و گفتگو پیرامون المپیاد کامپیوتر
سلام
از این پستها تو همین سمپادیا هم زیاد هست، چند روز پیش تو یه سایت دیگه هم همین سوالو پرسیدند، من این پستو زدم:
این بحث منابع و معرفی کتاب و سایت و اینا کلا یه بحث تکراریه و تو اکثر سایتا و انجمن ها و ... چندین پست راجع بهش هست که البته اگه کسی بخواد تازه المپیاد خوندن رو شروع کنه باید ازش خبر داشته باشه، آقای دکتر رئوفی هم خواسته بودند که من این بحث رو اینجا بنویسم، منم برای اینکه یهو چیزی رو از قلم نندازم، قبل از نوشتن اینا به بقیه وبلاگا و سایتا سر زدم و یه سری حرفای زیر رو هم از اونجاها کپی کردم، امیدوارم مفید باشه:
کلا شما باید یه سری مطالب رو بلد باشین ، مثله :
۰- ترکیبیات شمارشی ( همین مبحث واسه مرحله ۱ کافیه، بقیه چیزا مال مرحله ۲ و بعدش ( جهانی واینا ) است )
۱- اصل استقرا و طریقه ی حل مسئله با آن
۲- اصل لانه کبوتری
۳- اصل ناوردایی
۴- اصل اکسترمال
۵- حل مسئله به کمک رنگ آمیزی
۶- نظریه گراف
۷- آشنایی مقدماتی با الگوریتم
۸. با این وضعه بد برنامه نویسی تو شهرستانها، بهتره همزمان با خوندن مباحث بالا، نیم نگاهی هم به برنامه نویسی داشته باشید!
و مهم تر از همه حل مسئله به تعداد زیاد!
خب منابع برای یاد گرفتن چیزایی که گفتم زیاده. ولی بهترین و معروفترین هاش اینا هستن ( به همون ترتیبی که باید خونده بشه نوشتم ):
۰. ریاضیات انتخاب یا چگونه بدون شمارش بشماریم - نویسنده: ایوان نیون - ترجمه: بتول جذبی، علی عمیدی - نشر دانشگاهی ( این کتاب رو حتما بخونید، حدود ۷۰ صفحه اول این کتاب واسه قبولی تو مرحله ۱ کافیه
![Big Grin :دی :دی](/forum/styles/yahmas/smiles/big_grin.gif)
( البته با فرض هوشمند بودنتون ))
۱- الفبای المپیاد ریاضی و کامپیوتر - نویسنده: مرتضی محمد آبادی - این کتاب اکثر مطالب بالا رو به طور مختصر داره ولی استقراش خیلی کامله. حتما کل این کتاب رو بخونید. ( این کتاب یه ویرایش جدید داره که توش یه سری مطالب حذف شده، واسه همین بهترین اولین ویرایشش با جلد قهوه ای رو گیر بیارید )
۲- استراتژی های حل مسئله - نویسنده: آرتو انگل - ترجمه: یاسر احمدی فولادی - انتشارات صنعتی شریف. این کتاب غیر از گراف و الگوریتم، بقیه مباحث رو داره . مسئله هاش هم آسون داره هم خیلی سخت. اگر مسئله ای رو بعد از مدت زیاد نتونستین حل کنن ، راه حلش رو بخونین و یاد بگیرین.
۳- ترکیبیات - نویسنده: علیرضا علیپور - این هم کتاب خیلی خوبیه و اکثر مطالبی که گفتم توش هست. ( البته کسی که کتابای بالا رو بخونه و بفهمه نیازی به خوندن این نداره، من خودم هم اصلا نخوندمش! )
۴- آشنایی با نظریه گراف - نویسنده: دوگلاس برنت وست- ترجمه: بیژن شمس - این کتاب که معولا بهش "وست" میگن در مورد گرافه! و خوبه که یکی دو فصل اولش رو بخونین و مسئله هاش رو حل کنین. بلد بودن قضایا و تعاریف بدون حل مسئله هیچ کمکی به شما نمی کنه. حتما تمریناش رو حل کنین.
۵- مسئله های الگوریتمی - نویسنده: دکتر قدسی و دکتر مهدیان - توی این کتاب مسائل خیلی خوبی هست. البته بخش های اولش سوالای برنامه نویسیه که اونا رو نیاز نیست بخونید. شما سوالای گرافش و مسائل متفرقه اش رو حل کنید. مسائل این کتاب سختن و شما بعد از اینکه به مطالبی که قبلا گفتم مسلط شدید ، می تونید از این کتاب استفاده کنید.
۶- معماهای الگوریتمی - کتابیه که توصیه می شه ، مخصوصا امسال که قراره سوالای الگوریتمی بیشتری داشته بشه! خودم نخوندمش و اطلاعی در موردش ندارم.
۷- مسائل مرحله یک و دوم سالهای پیش: آزمونهای قبلی رو از خودتون امتحان بگیرید. بهتره با دوستانتون با هم اینکار رو بکنید. چون اینجوری می تونید جواباتون رو با هم چک کنید. این مهمترین کاریه که باید بکنید. البته مسائل دورههای ۱ تا ۱۳ به همراه پاسخ تشریحی تو کتابی به نام ( المپیاد های کامپیوتر ایران، از ابتدا تا کنون ) از یاسر احمدی فولادی موجوده!
۸و ۹و ۱۰ و۱۱- المپیادهای ریاضی لنینگراد - المپیاد های ریاضی شوروی - ۱۰۲ مسئله ترکیبیات و PTC و ... : باز هم برای حل مسئله بیشتر می تونید از این کتابا استفاده کنید. البته همون طور که از تو اسم بعضیشون هست ، مسائل المپیاد ریاضی هم توش هست و شما باید ترکیبیات هاش ( مسائل کامپیوتری ) رو حل کنید. ( من خودم شاید از کل اینا یکی دو سوال هم حل نکرده باشم،کلا خوندن اینا اختیاریه و واسه افرادیه که تمام کتابای بالا رو خونده باشند و از بیکاری ندونند باید چی کار کنند و البته از بس کد زدند، دلشون واسه تئوری خوندن تنگ شده! )
کلاً لذتی که توی حل یه مسئله بعد از چندین ساعت هست ، تو هیچ چیز دیگه ای نیست! سعی کنین المپیاد رو برای لذت بردن و تفریح! بخونید نه واسه ی پیچوندن کنکور. اگه هدفتون پیچوندن کنکور نباشه، حتی اگه مرحله 1 هم قبول نشین ، شکست نخوردین.
۱۲- Introduction to algorithms - A creative approach - این کتاب هم انگلیسیش هست هم فارسیش. ( اسم فارسیش "آشنایی با الگوریتم با رویکردی خلاقانه" است ) ، این رو فصلهایی که حس می کنین به دردتون می خوره رو بخونین و تمریناش رو حل کنید. ترجمه فارسیش خیلی خوبه، این هم وبلاگی در مورد ترجمه این کتاب http://creative-algorithms.blogspot.com
خوبه که یه آشنایی مقدماتی هم با زبان ++C داشته باشین ( متغیر ها ، حلقه ها ، ورودی گرفتن و خروجی چاپ کردن ... )
کتاب آموزش ++C هم كتاب "آموزش زبان برنامهنويسي C" نوشته ريچي و كرنيگان، و مثل هميشه ترجمهي قلزم رو پیشنهاد میکنم ( بازم خودم نخوندمش! )
اگه زبانتون خوبه هم که اینترنت بهترین منبعه! مثلا سایت www.cplusplus.com
بعد از این که یه کمی ++C یاد گرفتین ، توی سایتهای برنامه نویسی که برای این کار هستن عضو بشین و سوال حل کنید و کد بزنید. ( کد زدن ( coding ) اصطلاحیه به معنیه برنامه نویسی ، مثلا کد این سوال رو زدم ، یعنی برنامه ای نوشتم که این سوال رو حل کنه! )
سایتهای خیلی زیادی هستن برای این کار ، ولی 2 تا سایت هست که از همه معروفترن و ملت معمولا توی این دو تا سایت کد می زنن:
1- المپیاد کامپیوتر آمریکا - USACO ( معروف به "یوساکو" ( با "ایساکو" فرق داره ها! ) )
2- سایت ای سی ام یک دانشگاه در روسیه! - SGU ( معروف به "اس جی یو"! )
سایت های دیگه ای هم هست که واسه اینکه فعلا سردرگم نشید نمیگم
بچه های المپیادی قدیم هم یه وبلاگی راه انداختند که چند سالی هست شده مرجع واسه سوال و جواب و اخبار المپیاد کامپیوتر ( قسمت نظراتش، حکم چت روم رو داره )، هر سال هم این سایت میرسه به طلاهای سال پیش ( احتمالا از مهر میوفته دست ما ). آدرسش هم اینه:
http://shaazzz.blogfa.com