المپدیا

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

ابزار کاربر

ابزار سایت


سوالات المپیاد:متفرقه:آزمون های اینترنتی ۸۹ تا ۹۱:سوال ۶۸

Elephants

‎$n$‎ فیل در یک ردیف قرار گرفته‌اند. هر کدام از فیل‌ها یک شماره بین ‎$1$‎ و ‎$n$‎ دارند و شماره تمام فیل‌ها متفاوت است‎. ‎

می‌دانیم در ابتدا فیل شماره ‎$1 \leq a_i \leq n$‎ در مکان ‎$i$‎ام قرار دارد. همچنین وزن فیل شماره ‎$i$‎ برابر با ‎$w_i$‎ است‎. ‎

ما می‌توانیم در هر مرحله دو فیل ‎$i$‎ و ‎$j$‎ را انتخاب کنیم و با پرداخت هزینه ‎$w_i+w_j$‎ مکان دو فیل را عوض کنیم. هدف ما رسیدن به حالتی است که فیل شماره ‎$b_i$‎ در مکان ‎$i$‎ ام قرار داشته باشد. شما باید کم‌ترین هزینه ممکن برای انجام این کار را به دست آورید‎. ‎

ورودی

  • در سطر اول ورودی عدد ‎$(1 \leq n \leq 10^5)$‎ آمده است‎.‎
  • در سطر بعدی ‎$n$‎ عدد ‎$w_1$‎ تا ‎$w_n$‎ آمده است‎.‎
  • در سطر سوم ‎$n$‎ عدد ‎$a_1$‎ تا ‎$a_n$‎ آمده است‎.‎
  • در سطر چهارم ورودی ‎$n$‎ عدد ‎$b_1$‎ تا ‎$b_n$‎ آمده است‎.

خروجی

در تنها سطر خروجی پاسخ سؤال را چاپ نمایید‎.

محدودیت‌ها

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

ورودي و خروجي نمونه

ورودي نمونه خروجي نمونه
6‎
‎2400 2000 1200 2400 1600 4000‎
‎1 4 5 3 6 2
‎5 3 2 4 6 1
‎11200‎

پاسخ

فرض کنید گراف جهت دار ‎$G$‎ گرافی با ‎$n$‎ رأس و ‎$n$‎ یال جهت دار باشد که به ازای هر ‎$i$‎ ، یک یال از ‎$a_i$‎ به ‎$b_i$‎ وجود داشته باشد‎.‎ (به چنین گرافی گراف جایگشت می گویند). چون درجه ورودی و خروجی هر رأس دقیقاً برابر با ‎$1$‎ است، این گراف به تعدادی دور افراز شده است. فرض کنید این دور‌ها ‎$c_1$‎ تا ‎$c_k$‎ باشند‎.

‎ به ازای هر دور ‎$c_i$‎ می‌دانیم که حداقل ‎$|c_i-1|$‎ بار باید فیل‌های متناظر رئوس ‎$c_i$‎ را جابه‌جا کنیم تا تمام فیل‌ها در جای خود قرار بگیرند. اگر بخواهیم با دقیقاً ‎$|c_i-1|$‎ بار جابه جا کردن فیل‌ها این کار را انجام دهیم لزوما تمام جا‌به‌جایی‌ها باید بین فیل‌های همین دور باشد پس حد‌اقل ‎$\sum_{j=1}^{|c_i|}w_{c_{i,j}}‎ + ‎(|c_i|-2) \times \min_{j=1}^{|c_i|}w_{c_{i,j}}$‎ هزینه برای این کار لازم و کافی است‎.

‎ در صورتی که تمام جا‌به‌جایی‌ها بین فیل‌های دور ‎$c_i$‎ نباشد ، بیش‌تر یا مساوی ‎$|c_i|$‎ جا به‌جایی برای این کار لازم است و چون زوجیت تعداد عملیات لازم برای قرار دادن فیل‌ها در جای خود ثابت است ( هر جا‌به‌جایی تعداد دور های گراف جایگشت را یکی کم یا زیاد می کند) پس حداقل ‎$|c_i+1|$‎ جا‌به‌جایی برای این کار لازم است. پس در این صورت حداقل ‎$\sum_{j=1}^{|c_i|}w_{c_{i,j}}‎ + ‎\min_{j=1}^{|c_i|}w_{c_{i,j}}‎ + ‎(|c_i|+1) \times \min_{j=1}^{n}w_j$‎ هزینه برای این کار لازم و کافی است‎.

‎ پس کافیست به ازای هر دور دو مقدار گفته شده را حساب کنیم و مجموع آن‌ها را به عنوان جواب نهایی چاپ کنیم.


ابزار صفحه