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

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

جهمه


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

اگر دنباله‌ای از اعداد داشته باشید به اولین عدد طبیعی‌ای که در آن ظاهر نشده Mex آن دنباله می‌گوییم.
برای مثال Mex دنباله (1,2,5,9)(1, 2, 5, 9) برابر 33 و Mex دنباله (2,5)(2, 5) برابر 11 است.

دنباله a1,a2,a3,...,an a_1, a_2, a_3,...,a_n\ به شما داده شده است و باید جمع Mex تمام زیربازه‌های آن را به دست بیاورید. (در مجموع n(n+1)2\frac{n(n+1)}{2} زیربازه داریم.)

در واقع اگر  Mexi,j\ Mex_{i,j}‌را برابر Mex زیر دنباله (ai,ai+1,...,aj) (a_i,a_{i+1},...,a_j)\ تعریف کنیم، شما باید مقدار زیر را چاپ کنید. i=1n j=inMexi,j\sum_{i=1}^{n}\ \sum_{j=i}^{n} Mex_{i,j}

ورودی🔗

در سطر اول ورودی عدد nn و در سطر دوم nn عدد به شما داده می‌شود که عدد ii-ام برابر عضو ii ام دنباله است.

1n,ai100 0001 \le n, a_i \le 100\ 000

خروجی🔗

در تنها خط خروجی مقدار خواسته شده را نمایش دهید.

مثال🔗

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

5
1 2 3 4 5
Plain text

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

30
Plain text

توضیح:

Mex1,1=2Mex_{1,1} = 2
Mex1,2=3Mex_{1,2} = 3
Mex1,3=4Mex_{1,3} = 4
Mex1,4=5Mex_{1,4} = 5
Mex1,5=6Mex_{1,5} = 6

و Mex زیربازه‌هایی که ۱ را ندارند برابر ۱ است.

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

8
2 1 4 2 1 3 2 1
Plain text

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

113
Plain text

راهنمایی ۱

فرض کنید برای هر پیشوند از ارایه Mex را به دست آوردید. حالا عنصر اول را حذف کنید و Mex هر پیشوند را حساب کنید.

راهنمایی ۲

بعد از حذف عنصر اول، پیشنود‌هایی که Mex آن کمتر از a1a_1 بودند تغییری نمی‌کنند.

راهنمایی ۳

بعد از حذف عنصر اول در صورتی که Mex پیشنوندی قرار باشد تغییر کند، مقدار آن برابر a1a_1​ می‌شود.

راه حل

اگر mim_i برابر Mex پیشوندی باشد که به i ختم می شود. می‌توانید مشاهده کنید که دنباله زیر صعودی است:

m1m2m3...mn m_1 \le m_2 \le m_3 \le ... \le m_n

و وقتی عنصر اول را حذف می‌کنید، اگر دومین تکرار این عنصر در اندیس x باشد. (یعنی a1=axa_1= a_x) برای هر 1i<x1 \le i \lt x مقدار mim_i ممکن است عوض شود و بقیه تغییری نمی‌کنند چون قبلا در خانه اول a1a_1 وجود داشته و تمام پیشوند‌هایی که از خانه x رد می‌شودند هنوز a1a_1 را دارند. و از طرفی برای هر کدام از آن iها مقدار mim_i مینیمم گرفته می‌شود با a1a_1 چون ممکن است این عنصر اولین کسی باشد که دیگر در بازه نیست.

پیاده سازی الگوریتم با درخت سگمنت یا BST امکان پذیر است.

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