المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:مرحله ی دوم:دوره ی ۲۵:سوالات ۲۲ تا ۲۵

سوالات ۲۲ تا ۲۵

دنباله‌ای اکیدا صعودی مانند $a_1, a_2, ..., a_n$ از اعداد داریم. ما هیچ اطلاعاتی درباره‌ی اعداد نداریم و فقط می‌دانیم اکیدا صعودی هستند. عدد $x$ در این دنباله موجود است اما نمی‌دانیم کجای دنباله است و می‌خواهیم مکان عدد $x$ در دنباله را بیابیم. در هر مرحله می‌توانیم یکی از $a_i$ها را انتخاب کنیم؛ سپس به ما نتیجه‌ی مقایسه‌ی $x$ با $a_i$ گفته می‌شود؛ یعنی یکی از عبارات زیر گزارش داده می‌شود: $$x < a_i,\ \ \ x = a_i, \ \ \ x > a_i$$ هزینه‌ی مقایسه‌ی عدد $a_i$ با $x$، برابر $w_i$ است. $w_i$ داده شده است.

می‌خواهیم الگوریتمی ارائه دهیم که مکان عدد $x$ در دنباله را بیابد. کمینه‌ی هزینه‌ای که بتوان به طور تضمینی این کار را انجام داد $$f(w_1, w_2, ..., w_n)$$ می‌نامیم. برای مثال می‌توان نشان داد اگرتمام $w_i$ها برابر ۱ باشند، این مقدار برابر $\lfloor \lg(n) \rfloor$ خواهد شد (منظور از $\lg(n)$، لگاریتم $n$ در مبنای ۲ است).

سوال ۲۲

مقدار $$f(\underbrace{2, 3, ..., 10, 1, 2, 3, ..., 10, ..., 1, 2, 3, ..., 10}_{\text{319 عدد}})$$ چند است؟

  1. ۱۹
  2. ۲۰
  3. ۲۶
  4. ۱۶
  5. ۲۷

پاسخ

بهترین این است که با کمترین هزینه تعداد کل حالات را نصف کنیم. 31 عدد 1 وجود دارد که پس از 5 بار پرسش اگر عدد مورد نظر یافت نشود یک بازه از اعداد 2 تا 10 می‌ماند. اگر بازه‌ای شامل اعداد 8 و 9 و 10 باشد حداقل 9 واحد هزینه لازم است تا عدد را تشخیص دهیم. در نتیجه برای یافتن این بازه بصورت حداقلی عدد 7 انتخاب می‌شود (در غیر اینصورت بازه به 7 تا 10 می‌رسد که باز هم حداقل 16 واحد هزینه لازم دارد). در نتیجه در مجموع 16 واحد هزینه لازم است. با انتخاب اولیه‌ی عدد 7 این اتفاق می‌افتد و با هزینه‌ی حداکثر 16 واحد به جواب می‌رسیم (بازه 1 تا 6 با 8 واحد هزینه حل می‌شود). در نتیجه جواب نهایی مسئله برابر 21 است.

سوال ۲۳

مقدار $$f(\underbrace{1, 1, ..., 1}_{\text{511 عدد}}, \underbrace{2, 2, ..., 2}_{\text{511 عدد}})$$ چند است؟

  1. ۱۸
  2. ۱۲
  3. ۲۷
  4. ۱۱
  5. ۱۹

پاسخ

فرض کنید بازه تنها شامل 511 عدد 2 باشد. طبق مسئله‌ی کلاسیک این مبحث می‌دانیم حداقل باید 8 پرسش انجام شود و اگر تعداد این اعداد یکی هم بیشتر شود (512 یا بیشتر)، 9 پرسش لازم است. حال عدد اولیه اگر شامل عددی بجز عدد 2 وسطی باشد همچنان 8 پرسش دیگر لازم است و اگر همان 2 وسطی باشد 511 عدد یک در سمت چپ وجود دارند که می‌توانند جواب مسئله باشند. در نتیجه حداقل 17 واحد هزینه لازم است. از طرفی اگر سمت راست‌ترین 1 را انتخاب کنیم با 17 واحد هزینه می‌توانیم به خواسته‌ی خود برسیم.

سوال ۲۴

فرض کنید $n \ge 4$ باشد. مقدار $$f(n, n^2, n^3, ..., n^n)$$ چند است؟

  1. $n+n^2+...+n^{n-1}$
  2. $\sum_{1 \le 2k+1 \le n}n^{2k+1}$
  3. $n^{n-3}+n^{n-1}$
  4. $\lfloor{\lg(1+n+n^2+...+n^n)}\rfloor$
  5. $\Big\lfloor n^{\frac{n}{2}} + n^{\frac{3n}{4}} + n^{\frac{7n}{8}} + ... \Big\rfloor$

پاسخ

گزینه (۳) درست است.

پاسخ این سوال شبیه به سوال اول این بخش است. فرض کنید تنها چهار عدد بزرگتر مانده باشند. در این صورت تعداد حالات مختلف پرسش محدود هستند و می‌توان به سادگی بدست آورد که $n^{n-3}+n^{n-1}$ واحد هزینه لازم است. از طرفی مجموع بقیه‌ی اعداد بازه کمتر از $n^{n-1}$ است. در نتیجه این هزینه برای کل بازه هم درست است.

سوال ۲۵

فرض کنید $n \ge 3$ و تمام $w_i$ها متمایز هستند. چند تا از گزاره‌های زیر همواره درست هستند؟

  • هیچ الگوریتم بهینه‌ای در مرحله‌ی اول $w_i$ بیشینه را انتخاب نمی‌کند.
  • الگوریتم بهینه‌ای وجود دارد که در مرحله‌ی اول، $w_i$ای را انتخاب می‌کند که $|\sum_{j < i}w_j - \sum_{j > i} w_j|$ کم‌ترین مقدار ممکن را داشته باشد.
  • جواب بهینه‌ای وجود دارد که در هیچ مرحله‌ای، $a_1$ را انتخاب نکند.
  • جواب بهینه‌ای وجود دارد که در مرحله‌ی اول، $w_i$ کمینه را انتخاب کند.
  1. ۳
  2. ۴
  3. ۰
  4. ۱
  5. ۲

پاسخ

گزینه (۳) درست است.

هیچ‌کدام از گزاره‌ها درست نیستند.

گزاره‌ی 1: اگر وزن‌ها به ترتیب 1 و 3 و 2 باشد، بهترین انتخاب این است که ابتدا عدد وسطی را انتخاب کنیم که بیشینه وزن را دارد.

گزاره‌ی 2: مثال سوال قبل، مثال نقضی برای این گزاره است.

گزاره‌ی 3: اگر در مثال سوال قبل، تنها چهار عدد بزرگتر را در نظر بگیریم در سوال اول بهتر است که عدد اول انتخاب شود.

گزاره‌ی 4: مثال سوال قبل، مثال نقضی برای این گزاره است.


ابزار صفحه