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

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

آمار پرسش:

  • پرسیده شده: 2015-07-08 10:34:43 -0500
  • مشاهده شده: 945 بار
  • بروز شده: 2015-07-09 19:01:50 -0500

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

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

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

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

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

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

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

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

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

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

یافتن کوتاه ترین دور در گراف ساده

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

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

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

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

علائم ریاضی:

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

روش بهینه برای اینکه بهفمیم تخم‌مرغ از چه طبقه‌ای می‌شکند!(تعمیم)

3

فرض کنید یک ساختمان n طبقه داریم. میخوایم بفهمیم بالاترین طبقه ای که تخم مرغ رو بندازیم و نشکنه چنده! برای این کار میتونیم از حداکثر k تخم مرغ استفاده کنیم! کمترین تعداد باری که باید آزمایش کنیم(بندازیم ببینیم شکسته یا نه) چنده؟

شما باید یه الگوریتم بدید که بهترین جوابو بده!

الف) $1 <= k <= n <= 300$

ب) $1 <= k <= n <= 10000$

پ) $1 <= k <= n <= 2000000000$

الگوریتم
2015-07-08 10:34:43 -0500
پویان 2066 ● 11 ● 18 ● 40
پاک‌کردن   ویرایش سوال
نظرات

+ + سوال جالبیه، فکر میکنیم...(مقدار k رو ندادی تو مثالات آخه/)

2015-07-08 10:42:49 -0500 سی پلاس پلاس

این چرا تو پیش نمایش علامتاش درسته اینجا بر عکس میشه؟؟

2015-07-08 10:43:56 -0500 پویان

اینجا اینجوریه دیگه:)

2015-07-08 10:46:43 -0500 کنکوری

کاهو است دیگـــــر!!! D:

2015-07-08 10:47:37 -0500 سی پلاس پلاس

یه فکری به حالش بکن پویان ++

2015-07-08 10:48:04 -0500 کنکوری

3 پاسخ

2

غلطه کلن گذاشتم این باگو نزنید

مسئله رو یه جور دیگه تبدیل می کنم :(به هر طبقه یه عدد متناظر می کنیم که شمار طبقه است )

فرض کنید یه نباله ای از اعداد 1 تا $n$(به صورت متوالی) داریم که یه عدد توی این دنباله میخوایم پیدا کنیم که همون طبقه جوابه که اینجوری یه باینری سرچ میزنیم آخرشم اگه تخم مرغامون همه (بجز یکی شکست) یکی یکی چک میکنیم که اردر میشه :

دو حالت داره یا $k> log(n)$

که این میشه $ log(n)$

در غیر اینصورت

$order=\frac{n}{2^{k-1}}+(k-1)$

شاید یکم باگ داشته باشه

2015-07-08 13:34:02 -0500
چشمک 2291 ● 29 ● 67 ● 119
پاک‌کردن   ویرایش پاسخ
نظرات

/__/

2015-07-08 13:35:48 -0500 کنکوری

الان k رو بزار 2 میشه n/2+1 در حالی که میشه تو sqrt(n)*2-1 هم برداشت یا (sqrt(8n+1)-1)/2

2015-07-08 13:59:14 -0500 حمیدرضاه

اقا برو به سواله که غیر تعمیمشه k=2 e و دو نفر جواب گفتن که اینا میشه :|

2015-07-08 14:03:35 -0500 حمیدرضاه

حمیدرضا میشه بگی چجوری میشه؟

2015-07-08 14:03:53 -0500 چشمک
  •             :)
2015-07-08 15:02:05 -0500 سی پلاس پلاس
1

جواب با توجه به اونی که قبلتر دادم تقریبا واضحه با این وجود توضیح میدم. فرض کنیم حداکثر تعداد طبقاطی که میتونیم حل کنیم با i تخم مرغ و j حرکت برابر باشه با dp_i_j ، حالا آپدیتش واضحه دیگه؛ تخم مرغ رو از جایی میندازیم که در صورت شکستنش ، تعداد طبقات مشکوک رو با یک تخم مرغ کمتر و یک انداختن کمتر حل کنیم ، پس dp_i_j میشه:

for(k = 1,k < j) dp_i-1_k +1

یک مثال هم میزنم ، مثلا فرض کنیم 3 تا تخم مرغ و 5 تا حرکت داریم ؛ اولی رو از جایگاه 11 میندازیم ، اگه شکست که 10 تا خونه رو با 2 تخم مرغ و 4 حرکت میتونیم اگر نشکست هم میریم از طبقه 18 میندازیم اگر شکست 6 خونه رو میتونیم با 2 تخم مرغ و 3 حرکت بزنیم و . . . در نهایت میشه 25.

2015-07-08 11:02:33 -0500
بی حوصله 51 ● 4
پاک‌کردن   ویرایش پاسخ
نظرات

اگه راهتو درست فهمیده باشم این که گفتی فقط واسه الفه!

2015-07-08 12:26:23 -0500 پویان

این بنده خدا تعریف داینامیکش خوبه آبدیتش ( کیبورد عربیه دیگه !) معلوم نیس چیه

2015-07-08 12:47:37 -0500 امیرکسری

نه واالله!

2015-07-08 12:50:25 -0500 پویان

@پویان@امیرکسری عاقا الان کجاشو مشکل دارین ؟ اول بگم که دی پی رو هر دو بعدشو تا 1000 حساب کنین کافیه فکر کنم چون به 2000000000 میرسه بعد برای جواب بیاین فور بزنین اولین جایی که بیشتر شد از n رو به عنوان جواب چاپ کنین دیگه

2015-07-08 12:54:59 -0500 بی حوصله

ببین دوست بی حوصله ی عزیز. مگه dpi,j=dpi-1,j-1 + dpi,j-1 نیس ؟؟!! این چیزایی که گفتی الان چیه :‌ پس dp_i_j میشه جمع دی پی های با یک تخم مرغ کمتر و k حرکت به ازای k های از 1 تا j-1 به اضافه j.

2015-07-08 13:01:38 -0500 امیرکسری
0

قسمت الف: میشه با یه ایده داینامیک دو بعدی دیگه هم (متفاوت با چیزی که توی نظرات مطرح شد) حلش کرد :

dp[i][j] = min (d[k-1][j-1]) + i/k که i تعداد طبقات و j تعداد تخم مرغ هاست و sqrt(i)<= k <=i

در واقع k به این معنی است که تخم مرغ رو در طبقات k , 2k , 3k , ... می اندازیم. و اول جایی که شکست پس جواب قطعا بین یکی از این ضرایب k هست که باید ادامه گشتن رو با یک تخم مرغ کم تر اونجا ادامه بدیم (که در واقع میشه k-1 طبقه باقی مانده) . پس روی تمام حالات ممکن k چک می کنیم ببنیم کدوم جواب کم تری تولید می کنه. با کمی دقت معلوم میشه که k همیشه بهتره یکی از اعداد بیش تر از جذر تعداد طبقات باشه.

i/k هم به خاطر اینه که در بدترین حالت ممکن تا طبقه i/k بریم (پرتاب انجام بدیم). پس بیش ترین مقدار هزینه ای که در این مرحله میدیم i/k هست.

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

لینک کدم

2015-07-09 17:43:37 -0500
مهرداد ای پی 1 ● 1
پاک‌کردن   ویرایش پاسخ
نظرات

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

2015-07-10 07:12:45 -0500 پویان

پاسخ شما

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

پیش‌نمایش:

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