لینک‌های مفید برای شرکت در مسابقه:

راه‌حل‌ها و راهنمایی‌ها به مرور در طول هفته به انتهای هر سوال اضافه می‌شوند.

می‌توانید سوالات خود را از قسمت "سوال بپرسید" مطرح کنید.

سری اول راهنمایی‌ها یک‌شنبه ساعت ۱۵ اضافه می‌شوند.

پاکسازی


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

حنا قهرمان مسابقات هندونه‌خوری شده و مقدار زیادی پول جایزه گرفته‌ است. حال حنا می‌خواهد به خانه‌اش برگردد و با پول مسابقات مهمانی بگیرد.

شهر محل زندگی حنا، یک خیابان با nn خانه است که حنا در خانه‌ی ssام زندگی می‌کند و مسابقات هندونه‌خوری در خانه tt ام برگزار می‌شود. او می‌داند در تعدادی از خانه‌ها زورگیر زندگی می‌کند و اگر از آن‌ها رد شود، زورگیر پول حنا را از او می‌گیرند و حنا نمی‌تواند مهمانی بگیرد.

حنا از پلیس کمک می‌خواهد. پلیس‌ها در روز برنامه‌نویس می‌توانند در هر عملیات، یک بازه به طول 2k2^k (kk یک عدد حسابی است) را که همه اعضای آن زورگیر هستند را انتخاب کنند و آن خانه‌ها را پاکسازی کنند.

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

ورودی🔗

در سطر اول عدد nn آمده که نشان‌دهنده‌ی طول خیابان است.

در سطر دوم یک رشته به طول nn آمده‌است. خانه‌هایی که در آن زورگیر وجود دارد حرف H و بقیه خانه‌ها حرف P هستند. تضمین می‌شود که در خانه‌های ss و tt زورگیر وجود ندارد.

در سطر سوم ss و tt به ترتیب آمده‌اند. 1n1 000 1 \leq n \leq 1\ 000 1s,tn 1 \leq s, t \leq n

خروجی🔗

در تنها سطر خروجی، کمترین تعداد عملیات برای پاکسازی مسیر حنا از زورگیرها را بگویید.

مثال🔗

ورودی نمونه ۱🔗

3
PHP
1 3
Plain text

خروجی نمونه ۱🔗

1
Plain text

در مسیر خانه اول به سوم، تنها در خانه‌ دوم زورگیر وجود دارد که پلیس‌ها طی یک مرحله او را دستگیر می‌کنند.

ورودی نمونه ۲🔗

9
HPPHHPHPH
8 3
Plain text

خروجی نمونه ۲🔗

2
Plain text

در مسیر خانه هشتم به سوم تنها در خانه‌های ۴ و ۵ و ۷ زورگیر وجود دارد که پلیس‌ها طی یک مرحله زورگیر خانه‌ی ۴ و ۵ و در مرحله‌ی بعد زورگیر خانه‌ی ۷ را دستگیر می‌کنند. در حرکت اول یک بازه به طول ۲ و در حرکت دوم یک بازه به طول ۱ پاکسازی شد که طول هر دو بازه توانی از ۲ بود.

راهنمایی ۱

باید زیربازه‌ی خانه ssام تا خانه ttام را در نظر بگیریم، چرا که بقیه‌ی خانه‌ها تاثیری در مسیر حنا به مسابقه ندارند. حال در این مسیر نیز می‌توانیم بلوک‌های متشکل از خانه‌های سالم را در نظر نگرفته و فقط بلوک‌های خانه‌های حاوی زورگیر را نگاه کنیم (منظور از بلوک تعدادی خانه‌ی متوالی است که ویژگی ما را ندارند و خانه‌های دو سر بلوک ویژگی ما را ندارند).

راهنمایی ۲

حال که خانه‌ها را بلوک‌بندی کردیم و فقط بلوک‌های دارای زورگیر را در نظر می‌گیریم،‌ مسئله را به صورت مجزا برای بلوک‌ها حل می‌کنیم.

حال بلوک زورگیر خاصی را در نظر می‌گیریم. بدون لطمه خوردن به کلیت مسئله فرض می‌کنیم که اندازه‌ی بلوک مورد نظر برابر mm باشد. با کمی بررسی (در مبنای ۲) متوجه می‌شویم که بهینه‌ترین کار ممکن این است که هر دفعه پلیس‌ها بلندترین پیشوندی که می‌توانند را از بلوک فعلی پاکسازی نمایند. به عبارت دیگر، در هر مرحله 2k2^{k} خانه اول را از زورگیر پاکسازی می‌کند به طوری که 2km2k+12^{k} \le m \le 2^{k+1} و سپس مقدار mm را برابر اندازه‌ی بلوک جدید قرار می‌دهد (مقدار آن را منهای دو به توان kk می‌کند).

در واقع اگر در مبنای ۲ به mm نگاه کنیم، حداقل تعداد گامی که لازم است تا این بازه را پاکسازی کنیم، برابر تعداد بیت‌های یک mm در مبنای ۲ می‌باشد.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.