M.GH

این یک وبلاگ عادی است. همین!

فوعه و کفریا

به نام خدا

فوعه و کفریا دو تا شهرک مسلمان نشین در شمال سوریه هستن که الآن تو محاصرن و اون طور که خبرا می رسه وضعشون خوب نیست.

اگه اینجا رو ببینید توی اون قسمت سبز شمال غربی یه چند تا نقطه ی قرمز می بینید. فوعه و کفریا اون جا هستتند.

1.براشون دعا کنید.

2.ملّت دو تا کانال تو تلگرام زدن. اگه تونستین جوین شید و به بقیه هم اطلاع رسانی کنید. لینک اینستاگرام و آپارتشون هم پایین هست.

همین دیگه.

یا علی!

کانال 1  کانال 2 اینستاگرام وبلاگ آپارات 

۰ نظر موافقین ۰ مخالفین ۰
M.GH

بهینه سازی

به نام خدا

چند وقت پیش یه سوالی حل کردم که فوق العاده اذیتم کرد. 

داستان این بود که n تو سوال تا 100000 بود و الگوریتم من هم n.sqrt n. محدودیت زمانی برنامه هم 1 ثانیه بود. اگه تا حالا یه کم با جاج کدفرسس ور رفته باشین دیتتون اومده که سرعتش بسیار بالاست. خب من هم کد سوالو زدم و سابمیت کردم و (بعد از این که یه بار به خاطر باگ رو تست 4 رانگ خورد) رو تست 13 تایم لیمیت شدم.

خب یه کم با کد ور رفتم و تا تست 38 رفتم و دوباره تایم خوردم.

باز چند بار با کد ور رفتم و این دفعه تا تست 46 رفت.

تا این جای کار من 8 بار سابمیت کرده بودم و همش غلط بود. 

بارها و بارها کد رو از لحاظ تایم بهبود دادم. سعی کردم توابع رو بهینه تر کنم. از جمله کار هایی که کردم:

1.ورودی یکی از توابعی رو که باید جند بار، هر بار به ازای یک عدد مثل x، صدا زده می شد رو تغییر دادم. این صورت که تابع یک بازه می گرفت و اینجوری کمتر صدا زده می شد.

2.تمام توابع رو به صورت void در آوردم و با تغییر متغیر های گلوبال کاری که می خواستم رو می کردم.

3.توابع کد رو از حالت بازگشتی در آوردم و با حلقه کارم رو راه انداختم.

هیچ کدوم از این کار ها باعث نشد برنامه در عمل بهتر کار کنه و برنامه همچنان از تست 46 جلو تر نمی رفت. حتی تمام توابع رو حذف کردم ولی خب برنامه بدتر شد و بهتر نشد. 

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

خب یه نگاهی به کد کسایی که قبلن سوال رو زده بودن کردم و... :|

سوالی که محدودیت زمانی 1 ثانیه داره رو یکی با تایم 1278ms زده و اکسپت شده!!!!!!!!!!(حدسم اینه که محدودیت زمانی سوال رو برای یه مدت کوتاه افزایش دادن یا جاج قاطی کرده)

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

مورد عجیب دیگه هم 3 نفری بودن کخ سوال رو زیر 150ms زده بودن.

خلاصه این که تفاوت آشکاری بین نحوه ی زدن کد سوال وجود داشت و آدم رو به شدت مشتاق به مقایسه ی کد ها می کرد ولی من خویشتن داری کردم و تمام تلاشم رو به کار بستم که کد بقیه رو نبینم.(طبیعیه چرا)

تا این که یه چیزی به ذهنم رسید و در کمال تعجب، برنامه رو دز اولین تلاش با زمان اجرای 342ms (!) اکسپت کرد. و اما اون ایده نه چندان خلاقانه استفاد از دستورات ورودی و خروجی C خدابیامرز و کتابخانه ی cstdio بود.

من تا قبل از زدن این سوال تقریبن مطمئن بودم که دستورات iostream با زدن خط زیر بسیار نزدیگ به سرعت دستورات کتابخانه cstdio کار می کنن ولی در عمل تفاوت آشکاری وجود داشت.

;(ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0

در مجموع به ذهنم رسید که یه لیستی از کارهایی تهیه کنم که می تونه سرعت به برنامه رو بدون تغییر در الگوریتم بهبود ببخشه:

۲ نظر موافقین ۰ مخالفین ۰
M.GH

آزمون تئوری #2

به نام خدا

سلام

یه کم زیادی دیر شد وبلی بلاخره آزمون تئوری دوم آماده شد.

آزمون تئوری 3 هم سوالاش هست ولی فعلن حوصلمون نمیکشه بنویسیمشون:)

آزمون تئوری 4 هم تقریبا آمادست و یه سؤالش بیشتر نمونده.

**توجه**: این آزمون به هیچ  وجه شبیه مرحله 2 نیست. صرفا یه آزمون تئوری برای محک زدن خودتونه و سطحش به نظرم در سطح مرحله 2ه. ولی اصلا از لحاظ ساختاری شبیه اون نیست.

۲ نظر موافقین ۰ مخالفین ۰
M.GH

آزمون تئوری اول

به نام خدا

اول از همه باید تبریک بگم به کسایی که قبول شدن.

به کسایی که قبول نشدن(مثل حودم) باید بگم که ناامید نشن و بدونن: 


 

از این به بعد هر چند وقت یه آزمون تئوری می ذاریم. آرمون تئوری اول آمادست. طراح این آزمون دوست خوبم "حامد نجات"ه. 

امیدوارم خوشتون بیاد و چیزای جدیدی ازش یاد یگیرید.

به روز رسانی : پاسخ ها آپلود شد.

۵ نظر موافقین ۲ مخالفین ۰
M.GH

م 3 د 21 ر 1

به نام خدا

این هم از سوالای روز اول دوره 21.

فعلا این آخرین کد مرحله 3 ایه که می ذارم.

در مورد سوالات این دوره باید بگم که سوال 2 خیلی خوبه و توصیه اکید می کنم که حلش کنید. سایت codeshark جاج داره و می تونید کداتون رو چک کنید.

۰ نظر موافقین ۰ مخالفین ۰
M.GH

م 3 د 20 ر 2

به نام خدا

اینم از کدهای روز دوم دوره 20.

۰ نظر موافقین ۰ مخالفین ۰
M.GH

م 3 د 20 ر 1

به نام خدا 

به عنوان اولین پست جدی کد سوالای مرحله 3 دوره 20 روز اول المپیاد کامپیوترو می ذارم.

۰ نظر موافقین ۰ مخالفین ۰
M.GH

به نام خدا

سلام!

اینجا سعی می کنم تا وقتی که بشه یه سری مطلب در مورد المپیاد کامپیوتر و موضوعات دیگه بذارم.

همین!

۰ نظر موافقین ۰ مخالفین ۰
M.GH