Codeforces Round 730

July 08, 2021

μ½˜ν…ŒμŠ€νŠΈ 기둝

A, BλŠ” 어렡지 μ•Šκ²Œ ν’€μ—ˆλ‹€. CλŠ” μ‹€μˆ˜κ°€ λ‚˜μ™€μ„œ λ‹Ήν™©ν–ˆλŠ”λ°, μ–΄μ¨Œλ“  μ˜€μ°¨κ°€ μ•„μ£Ό μ€‘μš”ν•œ λ¬Έμ œλŠ” μ•„λ‹ˆμ—ˆλ‹€. DλŠ” interactiveν˜• λ¬Έμ œμ˜€λŠ”λ°, 처음 λ³΄λŠ” ν˜•νƒœλΌμ„œ 쑰금 얼탔닀. EλŠ” νŠœν† λ¦¬μ–Όμ„ 읽고 업솔빙 쀑이닀. AλŠ” 00:05에, BλŠ” 00:11에, CλŠ” 00:39에, D1은 01:05에, D2λŠ” 01:38에 ν’€μ—ˆλ‹€. EλŠ” 풀지 λͺ»ν–ˆλ‹€.

μ΅œμ’…μ μœΌλ‘œ 58μœ„κ°€ λ˜μ—ˆκ³ , μ•„μ£Ό 쒋은 결과라고 μƒκ°ν•œλ‹€.

1543A Exciting Bets

bβˆ’ab - aλŠ” λΆˆλ³€λŸ‰μ΄λ‹€. a=ba = b이면 a,ba, bλ₯Ό μ¦κ°€μ‹œν‚¬ λ•Œ ν₯λΆ„excitement도 항상 μ¦κ°€ν•˜κ³ , νŒ¬λ“€μ€ λ¬΄ν•œν•œ ν₯뢄을 μ–»λŠ”λ‹€. d=∣bβˆ’a∣>0d = |b - a| > 0일 λ•Œ, a,ba, bλ₯Ό μ‘°μž‘ν•˜μ—¬ λͺ¨λ‘ dd의 λ°°μˆ˜κ°€ λ˜λ„λ‘ ν•˜μ˜€μ„ λ•Œ gcd⁑(a,b)=d\gcd(a, b) = d이닀. dd보닀 큰 수 dβ€²d'에 λŒ€ν•΄ a,ba, bλ₯Ό dβ€²d'둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€κ°€ λ‹€λ₯΄λ―€λ‘œ μ΄λŠ” a,ba, b의 μ΅œλŒ€κ³΅μ•½μˆ˜κ°€ 될 수 μ—†λ‹€. λ”°λΌμ„œ ν₯λΆ„μ˜ μ΅œλŒ“κ°’μ€ ddκ°€ λœλ‹€. a,ba, bκ°€ dd의 λ°°μˆ˜μ— 이λ₯΄κΈ°κΉŒμ§€ μ‘°μž‘μ΄ 덜 ν•„μš”ν•œ μͺ½μ„ μ„ νƒν•˜μ—¬ μ¦κ°€μ‹œν‚€κ±°λ‚˜ κ°μ†Œμ‹œν‚€λ©΄ λœλ‹€.

1543B Customising the Track

aia_iκ°€ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λ˜μ–΄ μžˆλ‹€κ³  κ°€μ •ν•˜μž. anβˆ’a1β‰₯2a_n - a_1 \ge 2인 경우, a1,ana_1, a_n을 각각 a1+1,anβˆ’1a_1 + 1, a_n - 1으둜 λ°”κΎΈμ—ˆλ‹€κ³  ν•˜μž. ai=a1a_i = a_1을 λ§Œμ‘±ν•˜λŠ” ii의 μ΅œλŒ“κ°’μ„ pp, aj=ana_j = a_n을 λ§Œμ‘±ν•˜λŠ” ii의 μ΅œμ†Ÿκ°’μ„ qq라고 ν•˜μž. anβˆ’a1>0a_n - a_1 > 0μ΄λ―€λ‘œ p<qp < q이닀. 값을 λ³€κ²½ν•˜μ˜€μ„ λ•Œ 뢈편inconvenience의 λ³€ν™”λŸ‰μ„ λ‹€μŒκ³Ό 같이 계산할 수 μžˆλ‹€.

βˆ‘j=2nβˆ’1∣a1+1βˆ’aj∣=pβˆ’1+βˆ‘j=p+1nβˆ’1∣a1βˆ’ajβˆ£βˆ’n+p+1\sum_{j = 2}^{n - 1} |a_1 + 1 - a_j| = p - 1 + \sum_{j = p + 1}^{n - 1} |a_1 - a_j| - n + p + 1 βˆ‘j=2nβˆ’1∣ajβˆ’an+1∣=nβˆ’qβˆ’1+βˆ‘j=2qβˆ’1∣ajβˆ’anβˆ£βˆ’q+2\sum_{j = 2}^{n - 1} |a_j - a_n + 1| = n - q - 1 + \sum_{j = 2}^{q - 1} |a_j - a_n| - q + 2 ∣a1+1βˆ’an+1∣=∣a1βˆ’anβˆ£βˆ’2|a_1 + 1 - a_n + 1| = |a_1 - a_n| - 2 a1←a1+1a_1 \leftarrow a_1 + 1, an←anβˆ’1a_n \leftarrow a_n - 1으둜 λ³€κ²½ν–ˆμ„ λ•Œ 뢈편의 λ³€ν™”λŸ‰μ€ 2pβˆ’2qβˆ’1<02p - 2q - 1 < 0이 λœλ‹€. 배열을 λ‹€μ‹œ μ •λ ¬ν–ˆμ„ λ•Œ anβˆ’a1β‰₯2a_n - a_1 \ge 2인 ν•œ, λΆˆνŽΈμ„ κ³„μ†ν•˜μ—¬ κ°μ†Œμ‹œν‚¬ 수 μžˆλ‹€. λ”°λΌμ„œ anβˆ’a1β‰₯2a_n - a_1 \ge 2κ°€ λ˜λŠ” λΆ„λ°°λŠ” μ΅œμ ν•΄κ°€ μ•„λ‹ˆλ‹€.

anβˆ’a1≀1a_n - a_1 \le 1라고 κ°€μ •ν•˜λ©΄, 이λ₯Ό λ§Œμ‘±ν•˜λŠ” λΆ„λ°°λŠ” k,⋯ ,k,k+1,⋯ ,k+1k, \cdots, k, k + 1, \cdots, k + 1의 ν˜•νƒœμ΄λ‹€. kk와 k+1k + 1의 κ°œμˆ˜κ°€ 각각 l,ml, m일 λ•Œ μ›ν•˜λŠ” 닡은 lβ‹…ml \cdot m이닀. S=βˆ‘i=1naiS = \sum_{i = 1}^n a_i일 λ•Œ, m=Smod  nm = S \mod n, l=nβˆ’ml = n - m이닀.

1543C Need for Pink Slips

κΈ°λŒ“κ°’μ˜ 의미λ₯Ό 잘 μƒκ°ν•˜κ³ , λ¬Έμ œμ—μ„œ 주어진 μ„€λͺ…을 잘 λ”°λΌμ„œ μž¬κ·€ ν•¨μˆ˜λ₯Ό 잘 κ΅¬μ„±ν•˜μ—¬ μ™„μ „ νƒμƒ‰μœΌλ‘œ ν’€ 수 μžˆλ‹€... μ‹€μˆ˜ μ˜€μ°¨λ‚˜ μŠ€νƒ μ˜€λ²„ν”Œλ‘œμš° 등을 μƒμƒν•˜λ©΄ λ‘λ €μ›Œμ§€λŠ”λ°, Pink Slipλ₯Ό 뽑지 μ•Šμ„ λ•Œλ§ˆλ‹€ Pink Slip을 뽑을 ν™•λ₯ μ΄ 적어도 0.05 μ¦κ°€ν•˜λ―€λ‘œ λ§Žμ•„μ•Ό 20단계 내에 λλ‚˜κ²Œ λœλ‹€.

1543D RPD and Rap Sheet

λΉ„λ°€λ²ˆν˜Έλ₯Ό yy둜 μΆ”μΈ‘ν•  λ•Œλ§ˆλ‹€, ν‹€λ¦° 좔츑이라면 μ›λž˜ λΉ„λ°€λ²ˆν˜Έ xxλŠ” xβŠ•kz=yx \oplus_k z = yλ₯Ό λ§Œμ‘±ν•˜λŠ” zz둜 바뀐닀. xxλ₯Ό mm번 kk-itwise XORν•œ 것을 (βŠ•m)β‹…x(\oplus m) \cdot x둜 ν‘œκΈ°ν•˜μž. 즉, (βŠ•m)β‹…x=xβŠ•kβ‹―βŠ•kx(\oplus m) \cdot x = x \oplus_k \cdots \oplus_k x인데 μš°λ³€μ˜ μ‹μ—μ„œ xxλŠ” mm번 λ“±μž₯ν•œλ‹€. (βŠ•m)β‹…((βŠ•n)β‹…x)=(βŠ•mn)x(\oplus m) \cdot ((\oplus n) \cdot x) = (\oplus mn) xλ₯Ό κ΄€μ°°ν•˜μž.

μ–‘ 변에 βˆ’βŠ•kx- \oplus_k xλ₯Ό kβˆ’1k - 1번 μ·¨ν•˜μ—¬ zβŠ•k(xβŠ•k(βŠ•kβˆ’1)β‹…x)=z=yβŠ•k(βŠ•kβˆ’1)β‹…xz \oplus_k (x \oplus_k (\oplus k - 1) \cdot x) = z = y \oplus_k (\oplus k - 1) \cdot x λ₯Ό μ–»λŠ”λ‹€.

i=0i = 0번째 좔츑을 y=0y = 0으둜 ν•˜μž. iβ‰₯1i \ge 1에 λŒ€ν•΄, ii번째 좔츑을 (βŠ•(kβˆ’1)i)iβŠ•k(βŠ•(kβˆ’1)iβˆ’1)β‹…(iβˆ’1)(\oplus (k - 1)^i) i \oplus_k (\oplus (k - 1)^{i - 1}) \cdot (i - 1)으둜 ν•˜μž. μ›λž˜ λΉ„λ°€λ²ˆν˜Έλ₯Ό xx라고 ν•˜μž. i∈Zβ‰₯1i \in \mathbb{Z}_{\ge 1}번째 좔츑에 λΉ„λ°€λ²ˆν˜Έλ₯Ό 틀렸을 λ•Œ, 바뀐 λΉ„λ°€λ²ˆν˜Έκ°€ (βŠ•(kβˆ’1)i)β‹…iβŠ•k(βŠ•(kβˆ’1)i+1)β‹…x(\oplus (k - 1)^i) \cdot i \oplus_k (\oplus (k - 1)^{i + 1}) \cdot x라고 κ°€μ •ν•˜μž. λ§Œμ•½ x=i+1x = i + 1이면, i+1i + 1번째 μΆ”μΈ‘μ—μ„œ λΉ„λ°€λ²ˆν˜Έλ₯Ό λ§žμΆ”κ²Œ λœλ‹€. x>i+1x > i + 1이면 λ‹€μŒ λΉ„λ°€λ²ˆν˜ΈλŠ” ((βŠ•(kβˆ’1)i)iβŠ•k(βŠ•(kβˆ’1)iβˆ’1)β‹…(iβˆ’1))βŠ•k(βŠ•kβˆ’1)β‹…((βŠ•(kβˆ’1)i)(iβˆ’1)βŠ•k(βŠ•(kβˆ’1)i+1)β‹…x)\left( (\oplus (k - 1)^i) i \oplus_k (\oplus (k - 1)^{i - 1}) \cdot (i - 1) \right) \oplus_k (\oplus k - 1) \cdot \left( (\oplus (k - 1)^i) (i - 1) \oplus_k (\oplus(k - 1)^{i + 1}) \cdot x \right) 이고, 이λ₯Ό μ •λ¦¬ν•˜λ©΄ (βŠ•(kβˆ’1)i+1)β‹…(i+1)βŠ•k(βŠ•(kβˆ’1)i+2)β‹…x(\oplus (k - 1)^{i + 1}) \cdot (i + 1) \oplus_k (\oplus (k - 1)^{i + 2}) \cdot x이 λœλ‹€. μ›λž˜ λΉ„λ°€λ²ˆν˜ΈλŠ” [0,n)[0, n)에 μžˆμœΌλ―€λ‘œ, 귀납법을 톡해 i=0,⋯ ,nβˆ’1i = 0, \cdots, n - 1에 λŒ€ν•΄ ii번째 좔츑을 μ‹œλ„ν•˜μ˜€μ„ λ•Œ 이 쀑 ν•œ λ²ˆμ€ μ˜³μ€ μΆ”μΈ‘μž„μ„ μ•Œ 수 μžˆλ‹€.

μž„μ˜μ˜ mm에 λŒ€ν•΄ (βŠ•kβˆ’1)β‹…((βŠ•kβˆ’1)β‹…m)=(βŠ•(kβˆ’1)2)m=m(\oplus k - 1) \cdot ((\oplus k - 1) \cdot m) = (\oplus (k-1)^2) m = mμ΄λ―€λ‘œ, 이λ₯Ό μ΄μš©ν•˜μ—¬ ii번째 μΆ”μΈ‘ (βŠ•(kβˆ’1)i)iβŠ•k(βŠ•(kβˆ’1)iβˆ’1)β‹…(iβˆ’1)(\oplus (k - 1)^i) i \oplus_k (\oplus (k - 1)^{i - 1}) \cdot (i - 1)λ₯Ό κ³„μ‚°ν•΄μ„œ 1을 μž…λ ₯받을 λ•ŒκΉŒμ§€ 좜λ ₯ν•˜λ©΄ λœλ‹€.