المپدیا

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

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۳۲:تئوری نهایی سوم:سوال ۱

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

راهنمایی‌‌های بخش اول: $f(n) \in \Omega(n\sqrt{n})$

راهنمایی

برای ساخت مثال، اعداد ۱ تا $n$ را به $⌊\sqrt{n}⌋$ بلوک از اعداد متوالی که هر یک شامل $⌊\sqrt{n}⌋$ عدد می‌شوند بخش بندی کنید. (از اعدادی که در هیچ بلوکی قرار نگرفته‌اند صرف نظر کنید.)

راهنمایی

سعی کنید n دنباله، هر یک به طول $⌊\sqrt{n}⌋$، بسازید که هر کدام شامل دقیقا یک عدد از هر بلوک باشند.

راهنمایی

ساختار این $n$ دنباله را به $\sqrt{n}$ روش مختلف ارائه دهید که هر یک از الگویی خاص پیروی کنند. این روش‌ها را در راهنمایی‌های بعد تحت عنوان نوع صفر تا نوع $n$ خطاب کرده‌ایم.

راهنمایی

دنباله‌های نوع صفر: برای $i$امین دنباله‌ی این نوع، از هر بلوک عدد $i$ام آن‌ را انتخاب کنید.

راهنمایی

دنباله‌های نوع اول: برای $i$ امین دنباله‌ی این نوع، از بلوک اول $i$ امین عضوش را بردارید. برای هر بلوک $j>۱$، اگر از بلوک $j-1$، $x$امین عدد آن بلوک انتخاب شده بود، به سراغ $x+1$ امین عدد بلوک $j$ بروید. (دقت کنید که اگر بلوکی $a$ عدد داشته باشد، منظور از عدد $a+1$ ام همان عدد اول بلوک است.)

راهنمایی

دنباله‌های نوع $k$ ام: برای $i$ امین دنباله‌ی این نوع، از بلوک اول $i$ امین عضوش را بردارید. برای هر بلوک $j>۱$، اگر از بلوک $j-1$، $x$ امین عدد آن بلوک انتخاب شده بود، به سراغ $x+k$ امین عدد بلوک $j$ بروید. (دقت کنید که اگر بلوکی $a$ عدد داشته باشد، منظور از عدد $a+1$ ام همان عدد اول بلوک است.)

راهنمایی

آیا ممکن است در دنباله‌های بالا زوجی بیابیم که دو بار در مجاورت هم ظاهر شده باشند؟

راهنمایی‌‌های بخش دوم: $f(n) \in O(n\sqrt{n})$

راهنمایی

مجموع تعداد اعضای دنباله‌ها را بر اساس تعداد جفت‌های مجاور در تمام دنباله‌ها به دست آورید

راهنمایی

اگر تعداد کل جفت های مجاور در یک $n$-تیر تپر، $x$ باشد، مجموع تعداد اعضای دنباله‌های آن برابر با $x + n$ خواهد بود (ثابت کنید)

راهنمایی

مانند بخش قبل اعداد را به $\sqrt{n}$ بلوک از اعداد متوالی که هر یک شامل $\sqrt{n}$ عدد هستند تقسیم کنید.

راهنمایی

برای هر دنباله اگر دو عدد مجاور از دو بلوک متفاوت راهنمایی قبل وجود داشت، این مجاورت را یک مجاورت خارجی و اگر دو عدد مجاور از یک بلوک بودند، مجاورت را یک مجاورت داخلی نامید. تعداد مجاورت‌های داخلی و خارجی را به طور مجزا بشمارید.

راهنمایی

نشان دهید تعداد یال‌های خارجی از $O(n\sqrt{n})$ است.

راهنمایی

چون در هر دنباله از هر دسته حداکثر یک یال خارجی خارج می شود پس در هر دنبال حداکثر $\sqrt{n}$ مجاورت خارجی وجود دارد و چون $n$ دنباله داریم حداکثر $n\sqrt{n}$ مجاورت خارجی وجود دارد

راهنمایی

نشان دهید تعداد مجاورت‌های داخلی از $O(n\sqrt{n})$ است.

راهنمایی

در مجموع $2\sqrt{n}$ مجاورت داخلی می‌توانیم داشته باشیم در کل دنباله‌ها که بر اساس راهنمایی ۲ ثابت می شود $f(n) \in O(n\sqrt{n})$


ابزار صفحه