پرش به محتویات

صفحه ۶

الگوریتم هفتگی-نظریه اعداد

این پست یکم سنگینه. چون نظریه اعداد مبحث کوچیکی نیست. اما سعی کردیم جمعش کنیم. لازمه لینک هایی که گفته شده ر بلد باشید تا بتونید سوال ها ر حل کنید. همچنین تو خود لینک ها هم سعی کنید چندتا از سوالای انتهای صفحه‌شون ر بزنید!

مباحثی که خوبه بلد باشید:

لینک یک ترجمه یک

لینک دو ترجمه دو

لینک سه

لینک چهار ترجمه چهار

لینک پنج ترجمه پنج

لینک شش

لینک هفت ترجمه هفت

لینک نه <- به این هم توجه مهم کنید. استیل مرحله ۳ نیست اما به درد بخوره

سوالات ترتیب خاصی ندارن!

سوال اول

سوال دوم

سوال سوم

سوال چهارم

سوال پنجم

سوال ششم

سوال هفتم

سوال هشتم

سوال نهم

سوال دهم

سوال یازدهم

سوال دوازدهم

سوال سیزدهم

سوال چهاردهم

سوال پانزدهم

سوال شانزدهم

سوال هفدهم

سوال هژدهم

سوال نوزدهم

سوال بیستم

سوال بیست و یکم

سوال بیست و دوم

سوال بیست و سوم

سوال بیست و چهارم

سوال بیست و پنجم

سوال بیست و ششم

سوال بیست و هفتم

سوال بیست و هشتم

سوال بیست و نهم

سوال سی‌ام

مهدی جعفری :(

طلاهای دوره ۲۸ ۱۳۹۷/۱۲/۲۶ · ۱۶:۲۴


الگوریتم هفتگی-مولفه های قویا همبند و مرتب‌سازی توپولوژیک

بخاطر استقبال شدید این دفعه یکم زودتر پست رو میذاریم.
 
برای شروع حتمن این پست فوق العاده رو بخونید که کامل الگوریتم های لازم رو توضیح داده و چندتا سوال آسونم آخر پستش هست!
همچنین این و این پست رو میتونید از اپدیا بخونید.
سوالای آسون اول پست سایت cp-algorithms گفته شدن پس ما اینجا از سوالای متوسط رو به سخت شروع میکنیم.
سوالا ترتیب خاصی ندارن!
سوال پنجم <- به این سوال توجه ویژه کنید چون ایده ی راهش خیلی قابل استفاده‌س.
 
 
مهدی جعفری :(

طلاهای دوره ۲۸ ۱۳۹۷/۱۲/۱۶ · ۱۸:۲۰


راه حل های آزمون عملی دوم شاززز

پیشنهاد میشه اگه آزمون رو ندادید اول سوالا رو بخونید و خودتون روش فکر کنید!

سوال اول:

اول باینری سرچ روی جواب میزنیم. فرض کنید میخوایم چک کنیم که آیا جواب مسئله میتونه کمتر مساوی x باشه یا نه.

ماکسیمم جفت کفش ها واضحه که min(n , m) هستش و بدون کم شدن از کلیت مسئله فرض کنید n<=m ینی کفش پای راست کمتر مساوی کفش های پای چپن.

کفش های پای راست و چپ رو بر اساس سایزشون سورت میکنیم. بعد شروع میکنیم از کفش با سایز مینیمم پای راست و سعی میکنیم با کفش با مینیمم سایز پای چپ جفتش کنیم. اگه در مرحله ای نتونستیم برای یه کفش پای راست جفت پیدا کنیم ینی جواب کمتر مساوی ایکس نمیتونه باشه. وگرنه هم که هست!

اگر سورت ها رو قبل از باینری سرچ انجام بدیم پیچیدگی زمانیمون (O(nlogn + nlog (max_size_kafsh) هستش.

کد


سوال دوم:

ثابت میشه که همیشه جواب وجود داره. اول کسایی رو در نظر بگیرید که انتخابشون یکتاست ینی اگه مجاور دو ظرف با تعداد a,b باشه که a/2<=b این شخص انتخابش یکتاست و ظرف با سایز b رو انتخاب میکنه چون در هر صورت از اون ظرف بیشتر سیب زمینی میخوره.

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

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

کد


سوال سوم:

از اینجا میتونید  راه حل رو بخونید. (صفحه ی ۱۳)

کد


سوال چهارم:

برای کمینه کردن جواب، دوبخشی درخت ر در نظر بگیرید. (درخت ها دوبخشین!! واو) همه یال ها رو از یه بخش به بخش دیگه جهت دار کنید. اینطوری جواب برابر تعداد یال های درخت میشه که به وضوح از این بهتر هم نمیشه کرد جوابو.


تو گراف به راسی که جمع فاصله هاش تا بقیه رئوس مینیممه میگیم سنتروید. اینجا میتونید یکم بیشتر دربارش بخونید.

برای بیشینه کردن جواب، فرض کنید سنتروید درخت راس c باشه. ثابت میشه حالتی از جواب بیشینه وجود داره که به ازای هر راس v توی درخت یا v به c مسیر داره یا c به v. درخت رو از سنتروید آویزون کنید. طبق چیزی که گفتیم اگه یال بین c,v رو از c به v بدیم باید تو کل زیردرخت راس v هم یالا رو به پایین باشن.

فرض کنید کسایی که به c مسیر دارن a تا باشن. جواب برابر (a)*(n-1-a) + n-1 هستش. همچنین a*(n-1-a) وقتی ماکسیمم میشه که a نزدیک ترین حالت به n-1/2 باشه. (کتاب سوم دبستان)

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

پیچیدگی زمانیمون میشه O(n^1.5) که اگه با بیت‌ست نپسک رو بزنیم O(n^1.5/32) میشه.

کد

طلاهای دوره ۲۸ ۱۳۹۷/۱۲/۱۰ · ۲۱:۱۴


آزمون عملی دوم شااززز

سلام. جمعه ی این هفته ساعت ۹ صبح میخوایم یه آزمون عملی ۵ ساعته ی دیگه برگزار کنیم.
ذره ای تضمین وجود نداره که سوالای آزمون ر قبلن ندیده باشید! پس احیانن تلف شدن وقتتون ر گردن ما نندازید.


آزمونی که قراره بذاریم یکی از آزمون های مدرسه علامه حلی تهرانه.


آپدیت: متاسفانه سرورمون از دسترس خارج شد و نتونستیم روی cms آزمون رو برگزار کنیم. کوئرا بهمون کمک کرد و آزمون روی سایت کوئرا برگزار خواهد شد که از اینجا میتونید ثبت نام کنید.

طلاهای دوره ۲۸ ۱۳۹۷/۱۲/۰۸ · ۲۳:۲۲


الگوریتم هفتگی-کوتاه‌ترین مسیر

بعد از برنامه نویسی پویا(dp) نوبت میرسه به مسئله کوتاه‌ترین مسیر که خودش به شکلی dp هستش!
مسئله به این شکله که یک گراف وزن دار به شما داده میشه و معمولن کوتاه‌ترین مسیر بین راس ۱ و راس n رو از شما میخوان.

مباحثی که لازمه برای این پست بلد باشید (به ترتیب):

الگوریتم بی‌اف‌اس

الگوریتم بلمن‌فورد

الگوریتم فلوید-وارشال

الگوریتم دایکسترا (دایجسکترا دایجسترا)

حالا میریم سراغ سوالا که بازم (تقریبن) به ترتیب سختی مرتب شدن. اگه حس میکنید این مبحث ر به خوبی بلدید از آخرین سوال شروع کنید.

سوال اول

سوال دوم

سوال سوم

سوال چهارم

سوال پنجم

سوال ششم

سوال هفتم

سوال هشتم

سوال نهم

سوال دهم

سوال یازدهم

سوال دوازدهم

سوال یازدهم

سوال دوازدهم

سوال سیزدهم

سوال چهاردهم

سوال پانزدهم

سوال شانزدهم

سوال هفدهم

سوال هژدهم

سوال نوزدهم

سوال بیستم

سوال بیست و یکم

سوال بیست و دوم

سوال بیست و سوم

سوال بیست و چهارم

سوال بیست و پنجم

سوال بیست و ششم

سوال بیست و هفتم

سوال بیست و هشتم

سوال بیست و نهم

سوال سی‌ام

طلاهای دوره ۲۸ ۱۳۹۷/۱۱/۲۷ · ۰۸:۰۰


سوال شب چهاردهم

سوال امشبم بخاطر درخواست های زیاد(!) گذاشتیم
 
فرض کنید جایگشت <a1 , a2 , ... , an> جایگشتی از اعداد 1 تا n باشد. به جایگشتی علامت دار میگوییم اگر هر عدد مثبت بین 1 تا n دقیقن یکبار به صورت منفی یا مثبت آمده باشد. مثلن <1 , 3 , -2> جایگشتی علامتدار است اما <2,-1,1> نیست.
 
حاصل دوران (i,j) که i<=j روی یک جایگشت علامتدار <a1 , a2 , ... ,ai, ai+1,...,aj, ... , an> برابر با جایگشت علامتدار زیر است
<a1 , a2 , ... ,-aj,-aj-1,...,-ai, ... , an>
 
ثابت کنید برای تبدیل جایگشت علامتدار <a1 , a2 , ... , an> به <an , an-1 , ... , a1> به حداقل n-1 دوران نیاز داریم.
 
مهدی جعفری
 
(همچنین یک گراف G داریم و در آن شایان پردیس به راس F میرود و سلام کرده و آب میخورد.)

طلاهای دوره ۲۸ ۱۳۹۷/۱۱/۱۵ · ۲۲:۱۸


سوال شب سیزدهم

سلام به المپیادی های عزیزمون. خوبین؟ خوشین؟‌سلامتین؟ خدا رو شکر.

 
بدون مقدمه بریم سراغ سوال امشب:
 
عدد ۱۳ به توان ۲۰۱۹ رو در نظر بگیرید. هر دفعه رقم یکم این عدد را حذف کرده و سپس آن را با بقیه عدد جمع می کنیم. این کار را تا زمانی انجام می دهیم که به یک عدد ده رقمی برسیم. ثابت کنید این عدد دو رقم برابر دارد.
 
امیرمحمد ایمانی

طلاهای دوره ۲۸ ۱۳۹۷/۱۱/۱۳ · ۰۱:۲۰


cf extension

سلام ملت.

حال می کنین امسال چقد فعالیم؟

در همین راستا امروز بعد جدیدی از شاز رو افتتاح می کنیم. ما استارت یه سایت رو زدیم که هدفش اینه که مطالبی که بهمون کمک می کنه رو جمع کنیم و از زبون های دیگه ترجمه کنیم به فارسی که بتونیم راحت تر ازشون استفاده کنیم. فعلا هم بنا به اینه که سوال های CF رو که می زنیم ترجمه کنیم تا کسایی که بعد از ما می زنن بتونن راحت تر باشن. ( در همین راستا یه اکستنشن زدیم که اگه نصبش کنین و برین تو CF ، سوالایی که ترجمه شدن به فارسی میان براتون ) از این لینکه می تونین اکستنشن رو نصب کنین.

نکته : این یه کار همگانیه و اگه مشارکت شما کم باشه سریع شکست می خوره ( و ما هم دیگه از این همه شکست خسته می شیم و شاز رها میشه ). ولی اگه این ۳۰۰ دنبال کننده شاز هر کدوم ۵ تا سوال ترجمه کنن کسر خوبی از CF ترجمه می شه ! برای ترجمه سوال هم بعد نصب اکستنشن بالای سوال یه دکمه ترجمه داره که هدایتتون می کنه به گیت هاب . اگه سوالی حین ترجمه پیش اومد تو دیسکورد بپرسین جواب میدیم . بازم می گم که اگه هر سوالی که میزنید رو ترجمه کنید سال پایینی هاتون CF فارسی خواهند داشت! 

احتمالا با گیت هاب به مشکل بخورید ولی خوبه که باهاش ور برید چون بعدا هم ممکنه به دردتون بخوره.

حرف دیگه ای نیست. خدافظ

آپدیت ۱:

SGU هم هندل شد!

نویسنده: حمیدرضا کلباسی (با کاپی میکائیل)

طلاهای دوره ۲۸ ۱۳۹۷/۱۱/۱۰ · ۲۰:۰۴