اولین باره که به کاهو میای؟ راهنمای سایت رو حتما بخون!

ورود ثبت‌نام راهنما درباره‌ی کاهو
پرسش‌ها برچسب‌ها کاربر‌ها سوال بپرسید!

آمار پرسش:

  • پرسیده شده: 2014-06-02 03:52:45 -0500
  • مشاهده شده: 566 بار
  • بروز شده: 2014-06-02 15:52:33 -0500

پرسش‌های مشابه:

پایان پذیری الگوریتم تبدیل (a, b) به یکی از دو زوج (2a, b-a) یا (a-b, 2b)

یافتن کوچکترین پیچ و مهره با مقایسه آنها

آشپزباشی:‌ مرتب کردن پشته با برعکس کردن یک دنباله متوالی از ابتدای آن

دنباله و جادوگر - دوره ی 24 - مرحله ی 2

الگوریتمی برای کمینه کردن تعداد دفعات بازشدن کشوها

الگوریتم محاسبه لگاریتم-سوال مسابقه دانش آموزی صنعتی شریف

آیا گراف قویا همبند است؟

یکی کردن علامت خانه‌های یک جدول $4\times 4$ از + و - ها

سوال آزمون آزمایشی دوره 23

پیدا کردن مولفه های قویا همبند گراف جهت دار

نکاتی در مورد نوشتن پاسخ:

در این قسمت می‌تونی به یک پرسش پاسخ بدی. اگه می‌خوای در مورد پرسش بحث و اظهار نظر کنی از قسمت «ثبت نظر» استفاده کن.
پاسخت رو دقیق و کامل بنویس، از عکس استفاده کن و اگه لازمه به منابع (کتاب یا سایت) ارجاع بده.
اگه پرسش یا پاسخ‌ها مفید هستند حتما بهشون رای بده تا پرسش‌ها و پاسخ‌های خوب مشخص بشن.

استفاده از ویرایشگر:

توی قسمت پیش‌نمایش می‌تونی ببینی متنی که نوشتی چجوری روی سایت دیده میشه.
خیلی مهم: برای اینکه به خط بعد بری باید دوتا Enter بزنی.
می‌تونی از تگ‌های معمولی و ساده‌ی html هم استفاده کنی.
با دکمه‌هایی که بالای ویرایش‌گر قرار دارند کلی کار می‌شه کرد. از عکس‌گذاشتن بگیر تا لیست شماره‌دار. حتما امتحان‌شون کن.

علائم ریاضی:

برای نوشتن علائم ریاضی می‌تونی از Mathjax استفاده کنی. راهنمای Mathjax رو از سایت math.stackexchange بخون.
برای نوشتن عبارت ریاضی وسط جمله، اون عبارت رو بین دوتا $ قرار بده.
برای نوشتن عبارت ریاضی تو یه خط جدید اون رو بین دوتا $$ قرار بده.

ادغام k آرایه‌ی مرتب شده با بهترین زمان اجرا

6

k تا آرایه‌ی مرتب شده از اعداد صحیح به شما داده شده است. این k آرایه در مجموع شامل n عدد هستند می‌خواهیم این آرایه‌ها را ادغام و آرایه‌ای مرتب شامل n عدد به دست بیاوریم. الگوریتمی از $O(n\lg k)$ ارائه دهید که این کار را انجام دهد.

الگوریتم مدرسه-علوم-کامپیوتر
2014-06-02 03:52:45 -0500
احسان 769 ● 7 ● 12 ● 30
پاک‌کردن   ویرایش سوال
نظرات

احسان عنوان سوال رو بهتر بذار. مثلا «ادغام k آرایه‌ی مرتب شده با بهترین اردر»

2014-06-02 08:24:32 -0500 فامیل دور

این یکی جدا اسم خود سوال بود!

2014-06-02 09:11:54 -0500 احسان

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

2014-06-02 09:23:22 -0500 کلاه قرمزی

سلام میدونستید انجمن علمی نخبگان دانشگاه صنعتی شریف مسابقه تخصصی مهارت سنجی برنامه نویسی و داده کاوی گذاشته است آدرس سایتش www.fanavard.com

2015-08-06 09:48:08 -0500 امیر شکری

سلام میگم یک سر به سایت www.fanavard.ir بزنید. مسابقات برنامه نویسی شون شروع شده. گواهی رسمی از طرف دانشگاه شریف می ده. 50 تا سکه هم جایزشه

2016-10-27 08:40:35 -0500 امیر شکری

3 پاسخ

3

می تونی از مرج کردن 2 به دوی اون ها استفاده کنی که با یه (O(n در مجموع همرو 2 به دو مرج کنی و تعداد آرایه هات نصف می شن. حالا مسئلرو ادامه بدی تا به یه آرایه برسی. می تونی بر اساس عناصر اولشون سورت کنی. حالا این عناصر رو تو مین هیپ یا ست بریزی. هر دفعه مینیمم رو خارج کنی و عضو بعدی مینیمم رو تو همون آرایه به دیتااستراکچرت(!) اضافه کن

2014-06-02 04:37:36 -0500
آرمین 31 ● 2
پاک‌کردن   ویرایش پاسخ
نظرات

اولین راهت فک کنم (O(n^2

2014-06-02 04:45:01 -0500 پویان

نه چون تعداد آرایه ها هر مرحله نصف می‌شه همون n lg k هست

2014-06-02 04:54:43 -0500 احسان

ببین هر کدوم از آرایه ها رو یه راس در نظر بگیر. حالا وقتی 2 تا رو با هم ادغام کردی با یه یال به هم وصلشون کن. قبول داری در آخر باید k-1 یال باشه؟ پس در کل O(nk) میشه که قطعا برای k>0 الگوریتم با O(nlogk) بهتره :دی

2014-06-02 09:27:10 -0500 آقوی هم ساده

اقوی هم ساده ی عزیز: من دارم تو هر مرحله تعداد آرایه ها رو نصف می کنم پس log k مرحله طول می کشه. الان چی رو برداشتی اثبات کردی وقتی الگوریتم ارائه دادم؟

2014-06-02 15:17:15 -0500 آرمین

مشکل اثباتتم اینه که من با یه مرحله k/2 تا یال به اون گرافه می تونم اضافه کنم.

2014-06-02 15:17:47 -0500 آرمین
3

اول، از هر آرایه اولیش رو میریزی تو یه heap minimum اسم اون heap رو میذارم S

یه آرایه تهی از n تا عدد هم می سازی به اسم A و اول خالی میذاریش.

حالا هر بار عدد بالای S رو می گیری و میذاری تو اولین خونه خالی A بعد اگر اون عدد از آرایه k-ام بود عدد بعدی آرایه kام رو به S اضافه می کنی(عدد اولی رو که در راس هرم بود پاک کردی). و همین طوری تا آخر.

این میشه $O(n\lg k)$ چون هر بار استفاده از heap از $O(\lg k)$ میشه و در کل برای هر n تا عدد 2 بار از heap استفاده می کنیم. :دی

پ.ن.: فکر نمی کردم بعد از این همه وقت کنکور خوندن بتونم سوال المپیاد حل کنم.

خوش باشی :دی

2014-06-02 04:27:49 -0500
آقوی هم ساده 118 ● 4
پاک‌کردن   ویرایش پاسخ
2

کوچیکترین عدد هر آرایه رو میریزیم تو ست(set) به همراه یه عدد که نشون دهنده ی آرایه ایه که این عدد توش بوده!
بعدش کوچیکترین عدد رو پیدا میکنیم با اردر لاگ k(اسشمو میزاریم x)
xرو از تو ست حذف میکنیم و عدد بعدیه آرایه ای که x توش بوده(در صورت وجود) رو به ست اضافه میکنیم و x رو به آرایه ی جواب اضافه میکنیم.
تو هر مرحله همینکارو تکرار میکنیم تا ست خالی بشه.
حالا آرایه ی جواب به صورت مرتب شده درست شده است.

2014-06-02 04:36:31 -0500
پویان 2066 ● 11 ● 18 ● 40
پاک‌کردن   ویرایش پاسخ
نظرات

تو C++ ساختمان داده set نسبت به priority_queue کند تره.(تست کردم تو CodeFroces). فکر کنم با priority_queue(صف اولویت) بهتره.

2014-06-02 09:37:54 -0500 آقوی هم ساده

@آقوی هم ساده علتش اینه که priority_queue همون heap ـه ولی set یه داده ساختاره دیگه به نامه binary search tree هست.

2014-06-02 15:27:04 -0500 محمدمهدی

در هر صورت تو اردر که فرقی نداره بعدم لاگ ان که دیگه این حرفارو نداره!:D

2014-06-02 15:31:17 -0500 پویان

بله set یه red black tree ـه که از خانواده همون BST هاست.

2014-06-02 15:59:08 -0500 یوسفی

@محمدمهدی: ممنون که یادآوری کردی. در اردر فرقی نداره ولی در زمان اجرا فرق میکنه.

2014-06-03 01:59:32 -0500 آقوی هم ساده

پاسخ شما

فقط در صورتی که پاسخی برای این پرسش دارید، آن را اینجا بنویسید و برای بحث کردن از قسمت «ثبت‌ نظر» استفاده کنید. شما می‌توانید قبل از وارد شدن به سایت پاسخ خود را بنویسید. این پاسخ ذخیره می‌شود و زمانی که شما وارد سایت شدید یا ثبت‌نام کردید منتشر می‌شود.

پیش‌نمایش:

کلیه‌ی حقوق این سایت متعلق به کمیته‌ی ملی المپیاد کامپیوتر است.