
2012幎9æ10æ¥ã«ããã·ã¢ã³ãŒãã«ãã2012ã®ããã°ã©ãã³ã°ãã£ã³ããªã³ã·ããã¯çµäºãããã¹ãŠãã©ã®ããã«èµ·ãã£ããã«ã€ããŠã®è©³çްãªã¹ããŒãªãŒã
以åã«
å
¬éãããŸããã ãããã¯ãã£ã6ã€ãããªãããããããåå¥ã®è峿·±ãã¹ããŒãªãŒã§ãã
ãããã®åé¡ã解決ããããã«3æéãå²ãåœãŠãããŸããã 6ã€ã®åé¡ã®ãã¡5ã€ã解決ããã®ã¯ããã·ã¢ã³ãŒãã«ãã2012
Vladislav Epifanovã®åè
ã ãã§ãã ã ãã¡ã€ããªã¹ãã®åæ°æªæºããããã4ã€ã®ã¿ã¹ã¯ãå®äºããŸããã æåã®3ã€ã®ã¿ã¹ã¯ã¯ã»ãšãã©ãã¹ãŠãè¡ããŸããã 1çµã®
Evgeny Kapunã ãããã«ãŒãã®ãããã«é¢ããåé¡ãæ£ãã解決ããŸããã ããŒãã¡ã³ãã§2äœã«ãªã£ãã®ã¯
Natalia Bondarenkoã§ ã圌ã¯4ã€ã®åé¡ãä»ã®åé¡ãããéããå°ãªã詊è¡ã§è§£æ±ºããŸããã
æã£ãŠããé³¥
Mail.Ru Search Developer
Divisionã®è²¬ä»»è
ã§ãã
Andrey KALININã ãåé¡ã®ã¹ããŒãã¡ã³ãã«ã€ããŠèª¬æããŸãã
ã¿ã¹ã¯ã¯ãAngry BirdsããšåŒã°ããŸãã ãã®æ¬è³ªã¯ã·ã³ãã«ã§ãã é³¥ãããæéã®é·ãã®ã¯ã€ã€ãŒããããŸãã äžéšã®é³¥ã¯å³ã«è¡ããäžéšã®é³¥ã¯å·Šã«è¡ããŸãã 圌ããäŒããšã-圌ãã¯æ¹åãå€ããã 圌ãã¯ã¯ã€ã€ãŒã®ç«¯ã«å°éãããšãé¢éžããŸãã ãããã®åé³¥ããã€é£ã¶ããæ±ºå®ããå¿
èŠããããŸãã åé¡ã®ç¶æ³ã«å¿ããŠãåæ¹åã«æå€§10äžçŸœã®é³¥ãããå¯èœæ§ããããããåèšã§200,000矜ãè¶
ããããšã¯ãããŸããã

åé¡ã®è©³çްãªå£°æãåç¥ã®ããã«ãé³¥ã¯ã¯ã€ã€ãŒã®äžã«åº§ãã®ã倧奜ãã§ãã é¡çºKã«ã¯ã圌ãç¹ã«æ°ã«å
¥ã£ãé·ãã¯ã€ã€ãŒã1ã€ãããŸãã ããæç¹ã§ãæ°çŸœã®é³¥ããã®äžã«åº§ã£ãŠããŸããã ãã¹ãŠãããŸããããŸãããã¯ã€ã€ãŒã®äžãèµ°ã£ãŠãããã¿ã ããé³¥ãéåžžã«æãããã»ã©ã®ã»ããã®é²ãäžããŸããã
æã£ãé³¥ã¯ããã®ã¯ã€ã€ãŒã«æ²¿ã£ãŠããŸããŸãªæ¹åã«èµ°ãå§ããŸãã-å·Šã®èª°ããå³ã®èª°ãã ãã®å Žåããã¹ãŠã®é³¥ã¯æ¯å1ã¡ãŒãã«ã«çããåãé床ã§èµ°ãå§ããŸããã äºãã«åãã£ãŠç§»åãã2矜ã®é³¥ãåºäŒããšãããã«åããå€ããå察æ¹åã«åãé床ã§èµ°ãå§ããŸãã
ãã®ããã»ã¹ã¯ç¡æéã«ç¶ããŸãããã¯ã€ã€ãŒã ããæçµçãªãã®ã§ããããšã倿ããé³¥ã®1å¹ãã¯ã€ã€ãŒã®çµããã«éãããšããã«é¢éžããããã«é©ããä»ã®ãã¹ãŠã®é³¥ã¯åããå€ããŠå察æ¹åã«èµ°ãå§ããŸãã 2矜ã®é³¥ãåæã«ç«¯ãŸã§èµ°ã£ãå Žåã2ã¿ãŒã³ãçºçããŸãããŸãã¯ãåãããšãããŠãäœãèµ·ãããŸããã
ã¯ã€ã€ã®é·ããèµ°ã£ãŠããé³¥ã®åæäœçœ®ãšæ¹åã«å¿ããŠãã¯ã€ã€ããé£ã³åºãæç¹ã§åé³¥ãèŠã€ããããã°ã©ã ãæžãå¿
èŠããããŸãã
å
¥å圢åŒ
æåã®è¡ã«ã¯ãåäžã®æŽæ°LïŒ1â€Lâ€109ïŒ-ã¡ãŒãã«åäœã®ã¯ã€ã€ã®é·ããå«ãŸããŸãã
2è¡ç®ã«ã¯ãçªå·nïŒ0â€nâ€100 000ïŒ-å³ã«èµ°ã£ãŠããé³¥ã®æ°ãå«ãŸããŠããŸãã 3è¡ç®ã«ã¯ãnåã®ç°ãªãæŽæ°a i ïŒ0 <a i <LïŒãå«ãŸããŸããããã¯ãã¯ã€ã€ã®å·Šç«¯ããå³ã«èµ°ãé³¥ãŸã§ã®ã¡ãŒãã«åäœã®è·é¢ã§ãã
4è¡ç®ã«ã¯ãæ°å€mïŒ0â€mâ€100 000ïŒ-å·Šã«èµ°ã£ãŠããé³¥ã®æ°ãå«ãŸããŠããŸãã 5è¡ç®ã«ã¯ãmåã®ç°ãªãæŽæ°b i ïŒ0 <b i <LïŒãå«ãŸããŸããããã¯ãã¯ã€ã€ã®å·Šç«¯ããå·Šã«èµ°ã£ãŠããé³¥ãŸã§ã®ã¡ãŒãã«åäœã®è·é¢ã§ãã
ããšããšåãå Žæã«ããé³¥ã¯2å¹ãããŸããã å°ãªããšã1矜ã®é³¥ãé»ç·ã®äžã«åº§ã£ãŠããããšãä¿èšŒãããŠããŸãã
åºå圢åŒ
æåã®è¡ã«nåã®æŽæ°t iãåºåããŸã -å
¥åããã説æã®å³ã«é£ãã§ããiçªç®ã®é³¥ãäœååŸã«èª¬æã®é ã«é£ãã§ãããŸãã 2è¡ç®ã§ã¯ãmåã®æŽæ°u iãåºåããŸããããã¯ãå
¥åã®èª¬æã®é åºã§å·Šã«é£ã¶içªç®ã®é³¥ãäœååŸã«é£ã¶ãã瀺ããŸãã
2ç§ã®å¶éæé
256 MBã®ã¡ã¢ãªå¶é
åé¡ã®äŸã瀺ãããŸããã ãã®å®åŒåãšè§£æ±ºçãæç¢ºã«ããããã«ããã®äŸã§ã¯é³¥ã®åããæ¯å远跡ããããšãæçšã§ãã æ¬¡ã®å
¥åããŒã¿ãæäŸããŸãã2矜ã®é³¥ã¯8ã¡ãŒãã«ãš9ã¡ãŒãã«ã«ãããå³ã«é²ã¿ãããã«3矜ã®é³¥ã¯2ã¡ãŒãã«ã5ã¡ãŒãã«ã7ã¡ãŒãã«ã«ãããå·Šã«è¡ããŸãã ã¯ã€ã€ãŒã®é·ãã¯10ã¡ãŒãã«ã§ãã ãããåæç¶æ
ã§ãã é³¥ãé£ã¶ææãèšç®ããå¿
èŠããããŸãã

ã芧ã®ãšããã1åç®ãš5åç®ã«é³¥ã¯å³ç«¯ããé£ã³åºãã10æç®ã«ã¯2矜ã®é³¥ãåæã«é£ã³ã13æç®ã«ã¯æåŸã®é³¥ãé£ã³ãŸãã
ããã§ãé³¥ã®é åºã¯æ±ºããŠå€ãããªãããšã«æ³šæããããšãéèŠã§ãã ãŸããé³¥ã瀺ããžã°ã¶ã°ã«ãããããããå·ŠãŸãã¯å³ã«ç§»åããé³¥ã®æ°ã¯ãã®è¡çªã«äŸåãããç§»å座æšã®å€åã®æ§è³ªã¯åžžã«ç·åœ¢ã®ãŸãŸã§ãã ããã¯ã3åã®è¡çªããã£ã1åãã5åãŸã§ã®éã«ã¯ã£ãããšèŠããŸãã
å³ã®2åã«é³¥ã®äœçœ®ã瀺ããŸããã ã¯ã€ã€ããã®æåã®é¢éžã®ç¬éãäºæž¬ã§ããããšãããã«æããã«ãªããŸã-端ã®1ã€ã«æãè¿ãé³¥ããã¯ã€ã€ã®ç«¯ãŸã§ã®åæ°ïŒ=ã¡ãŒãã«ã®æ°ïŒã
ãŸããé¢éžåŸãå³ãžã®ç§»åã«é¢é£ä»ããããŠãããã¹ãŠã®åº§æšãå·Šãžã®ç§»åã«é¢é£ä»ããããŠãã座æšã«ãªãããã®éãåæ§ã§ããããšãããããŸãã
ãã®çµæããã®åé¡ã®è§£æ±ºçã¯ã2ã€ã®ããããã€ãŸããæåãŸãã¯æåŸã®èŠçŽ ã®åé€ãOïŒ1ïŒã§å®è¡ãããã䞡端ãã¥ãŒãã¿ã€ãã®ããŒã¿æ§é ã®ä¿å®ã«éå®ãããŸãã é³¥ãé¢éžãããšã極端ãªèŠçŽ ããããããåé€ããããããèªäœã亀æãããŸãã ãã¢ã®ä¿æ<12æ; æ°åã«ã©ãã ã远å ããå¿
èŠãããã> OïŒ1ïŒã§ã次ã®é³¥ãã©ã®ãããã®é·ãã§ã©ã®æ¹åã«é£ã¶ãã確èªã§ããŸãã é³¥ã®é åºã¯å€ãããªãã®ã§ãé³¥ã®å
ã®å Žæã®åº§æšã®ãœãŒããããé
åã远å ã§ä¿åããŠãã©ã®é³¥ãã¯ã€ã€ãé¢ãããã倿ããå¿
èŠããããŸãã
æãçŸãããœãªã¥ãŒã·ã§ã³ã¯ãPython3ã®ãœãªã¥ãŒã·ã§ã³ã§ãã
from collections import deque length = int(input()) n = int(input()) right = deque(sorted(map(int, input().split()))) m = int(input()) left = deque(sorted(map(int, input().split()))) addLeft, addRight = 0, 0 INF = 2*10**9 ans = 0 while right or left: L = left[0] + addLeft if left else INF R = length - (right[-1] + addRight) if right else INF m = min(L, R) ans += m addLeft -= m addRight += m if L < R: left.popleft() left, addLeft, right, addRight = right, addRight, left, addLeft elif L == R: left.popleft() right.pop() else: right.pop() left, addLeft, right, addRight = right, addRight, left, addLeft print (ans)
é³¥ãšã®ã¿ã¹ã¯ã¯ã
ããã€ã«ã»ã±ããŒãã©ãŠã³ãéå§ãã22åãŸã§ã«æåã«äœæããŸããã æ°ç§åŸã
Vasil BILETSKYã¯ã¿ã¹ã¯ã«åæ ŒããŸããã
åèšã§ã40人ãã¿ã¹ã¯ã«å¯ŸåŠãã11人ãããã解決ãå§ããŸããã 解決ã«ãããå¹³åæéã¯30åã§ãã ãããã®ãã¡ã解決ã«èŠããæå€§æéã¯44åã§ãïŒãœãªã¥ãŒã·ã§ã³ããŸã£ããéä¿¡ãããªãã£ãç¶æ³ã¯ã«ãŠã³ããããŸããïŒã æåã®ã¿ã¹ã¯ãæåã«è§£æ±ºãã11人ãã¹ãŠããå°ãªããšã2ã€ä»¥äžã解決ããŸããã 11ã®ãã¡2ã€ã®ã±ãŒã¹ãé€ããå
šå¡ãã¿ã¹ã¯Bã«é²ã¿ã次ã«ã¿ã¹ã¯Cã«è¡ããŸãããã€ãŸããã¢ã«ãã¡ãããé ã«ã¿ã¹ã¯ãå®äºããŸããã ãã®ã¿ã¹ã¯ã¯ãã³ã³ãã¹ããéå§ããããã¹ãŠã®ã¿ã¹ã¯ã®äžã§3äœã§ãã
ããªãœãªã¢ã³
Allods Onlineã®ãã¯ãã«ã«ãã£ã¬ã¯ã¿ãŒã§ãã
Ilya VAYSMANã¯ãTrisoliansã®ã¿ã¹ã¯ã«ã€ããŠæ¬¡ã®ããã«èªã£ãŠããŸãã
åé¡ã®æ¡ä»¶ã«ãããææããªãœã«ã®äžéšã®äœæ°ã¯ãç§ãã¡äººéã®ãããªåäžã®æŽæ°ãšããŠã§ã¯ãªããkåã®æŽæ°ã®ãã¯ãã«ãšããŠå¹Žéœ¢ãæå®ããŸãã æ°çå
ã®ããªãœãªã¢ã³ã§ã¯ã幎霢ãã¯ãã«ã¯1ã€ã®ãŒãã§æ§æãããŠããŸãããæé·ãã幎ããšã«ã幎霢ãã¯ãã«ã®åèŠçŽ ã«ç¹å®ã®æ£ã®æ°ã远å ãããŸãã ããªãœãªã¢ã³ã®ã©ã€ãã¹ããŒãªãŒã¯ã圌ãçæ¶¯ãéããŠæã£ãŠãããã¹ãŠã®å¹Žéœ¢ã®ãã¯ãã«ã®ã»ããã§ãã åãç©èªãæã€ããªãœãªã¢ã³ãååšããªãããšã¯ããç¥ãããŠããŸãã ç§åŠè
ã¯ãèŠçŽ ã®åèšãnã§ãããã¯ãã«ã§ã©ã€ãã¹ããŒãªãŒãçµäºããTrisolianã®æå€§æ°ã«èå³ããããŸãã ãã®å€ãçŽ æ°ãæ³ãšããŠèšç®ããããã°ã©ã ãæžãå¿
èŠããããŸã7340033 = 7 * 2 ^ 20 + 1ã
ããšãã°ãk = 2ã®å Žåãã©ã€ãã¹ããŒãªãŒã¯åèš5ã®ãã¯ãã«ã§çµãã8ã€ã®ããªãœãªã¢ã³ãååšããå¯èœæ§ããããŸãã
1.ïŒ0ã0ïŒ-ïŒ1ã1ïŒ-ïŒ2ã3ïŒ;
2.ïŒ0ã0ïŒ-ïŒ1ã1ïŒ-ïŒ3ã2ïŒ;
3.ïŒ0ã0ïŒ-ïŒ1ã2ïŒ-ïŒ2ã3ïŒ;
4.ïŒ0ã0ïŒ-ïŒ1ã4ïŒ;
5.ïŒ0ã0ïŒ-ïŒ2ã1ïŒ-ïŒ3ã2ïŒ;
6.ïŒ0ã0ïŒ-ïŒ2ã3ïŒ;
7.ïŒ0ã0ïŒ-ïŒ3ã2ïŒ;
8.ïŒ0ã0ïŒ-ïŒ4ã1ïŒã
åé¡ã®è©³çްãªå£°ææè¿ãææããªãœã«ã®äœæ°ã¯ãç§ãã¡äººéã®ãããªåäžã®æŽæ°ãšããŠã§ã¯ãªããkåã®æŽæ°ã®ãã¯ãã«ãšããŠå¹Žéœ¢ã瀺ããŠããããšãç¥ãããŠããŸãã æ°çå
ã®ããªãœãªã¢ã³ã§ã¯ã圌ã®å¹Žéœ¢ã®ãã¯ãã«ã¯kåã®ãŒãã§æ§æãããŠãããšèããããŠããŸãã 幎ããšãã«ã€ããŠã幎霢ãã¯ãã«ã®åèŠçŽ ã«æ£ã®æ°ãæ¯å¹Žè¿œå ãããŸãã
ããªãœãªã¢ã³ã®ã©ã€ãã¹ããŒãªãŒã¯ã圌ã圌ã®äººçã®éã«æã£ãŠãã圌ã®å¹Žéœ¢ã®ãã¹ãŠã®ãã¯ãã«ã®ã»ããã§ãã å°çç§åŠè
ãã¡ã¯ãåãç©èªãæã€äºäººã®ããªãœãªã¢ã³ãããªãããšã確ç«ããŸããã
ç§åŠè
ã¯ãã©ã€ãã¹ããŒãªãŒãèŠçŽ ã®åèšãnã§ãããã¯ãã«ã§çµããããªãœãªã¢ã³ã®æå€§æ°ã«èå³ãæã£ãŠããŸãã ãã®å€ãçŽ æ°7340033 = 7ã»220 + 1ãæ³ãšããŠèšç®ããããã°ã©ã ãäœæããŸãã
å
¥å圢åŒ
æåã®è¡ã«ã¯ã2ã€ã®æŽæ°nããã³k-æåŸã®å¹Žéœ¢ãã¯ãã«ã®èŠçŽ ã®åèšãããã³ãã¯ãã«ã®èŠçŽ æ°ïŒ1â€nâ€4239ã1â€kâ€10 9 ïŒãå«ãŸããŸãã
åºå圢åŒ
ã©ã€ãã¹ããŒãªãŒãèŠçŽ ã®åèšãnã§ãããã¯ãã«ã§çµããå¯èœæ§ã®ããTrisolianã®æå€§æ°ãåºåããŸãã çãã¯ã7340033 = 7ã»2 20 + 1ãæ³ãšããŠæšå®ããå¿
èŠããããŸãã
å°ãæŽå²çèæ¯ããªããã°ãåé¡ã®è§£æ±ºã¯ããããäžå¯èœã§ãã ããªãœãªã¢ã³ã¯ããã©ãŒéæ²³ã®çŠæå°åž¯ã®å¥¥æ·±ãã«äœçœ®ããææããªãœã«ã®å±
äœè
ã§ãã ãããã¯100ïŒ
æ¶²äœã§ãã 圢ç¶ãç°¡åã«å€æŽã§ããŸãã éåžžã®å±
äœè
ã¯å¹³åçã§ãããæ¯é
ãšãªãŒãã«ã€ããŠã¯èšããŸããã æã
ã圌ãã¯ãäºãã飲ã¿ããã£ãªã¢ã®ã¯ããã«æ²¿ã£ãŠãã®ããã«åããŸãããã¹ãŠã®è§£æ±ºçã¯çµã¿åããè«ã«åž°çãããããã¿ã¹ã¯ã¯æ¯èŒçåçŽã§ãã äžæ¹ãkã®å¯èœãªç¯å²ïŒãã¯ãã«ã®æ¬¡å
ïŒ1â€kâ€10000000000ïŒïŒãããèŠããšãããã«ããã»ã©åçŽã§ã¯ãªããªããŸãã
N = 2 | N = 3 | N = 4 | N = 5 | N = 6 |
ïŒ0,0ïŒ-ïŒ1,1ïŒ | ïŒ0,0ïŒ-ïŒ1,2ïŒ ïŒ0,0ïŒ-ïŒ2,1ïŒ | ïŒ0,0ïŒ-ïŒ1,1ïŒ-ïŒ2,2ïŒ ïŒ0,0ïŒ-ïŒ2,2ïŒ ïŒ0,0ïŒ-ïŒ3,1ïŒ ïŒ0,0ïŒ-ïŒ1,3ïŒ
| ïŒ0ã0ïŒ-ïŒ1ã1ïŒ-ïŒ2ã3ïŒ; ïŒ0ã0ïŒ-ïŒ1ã1ïŒ-ïŒ3ã2ïŒ; ïŒ0ã0ïŒ-ïŒ1ã2ïŒ-ïŒ2ã3ïŒ; ïŒ0ã0ïŒ-ïŒ2ã1ïŒ-ïŒ3ã2ïŒ; ïŒ0ã0ïŒ-ïŒ2ã3ïŒ; ïŒ0ã0ïŒ-ïŒ3ã2ïŒ; ïŒ0ã0ïŒ-ïŒ4ã1ïŒã ïŒ0ã0ïŒ-ïŒ1ã4ïŒ;
| ïŒ0,0ïŒ-ïŒ1,1ïŒ-ïŒ2,2ïŒ-ïŒ3,3ïŒ ïŒ0,0ïŒ-ïŒ1,1ïŒ-ïŒ4,2ïŒ ïŒ0,0ïŒ-ïŒ1,1ïŒ-ïŒ2,4ïŒ ïŒ0,0ïŒ-ïŒ1,1ïŒ-ïŒ3,3ïŒ ïŒ0,0ïŒ-ïŒ1,2ïŒ-ïŒ3,3ïŒ ïŒ0,0ïŒ-ïŒ1,2ïŒ-ïŒ2,4ïŒ ïŒ0,0ïŒ-ïŒ2,1ïŒ-ïŒ3,3ïŒ ïŒ0,0ïŒ-ïŒ2,1ïŒ-ïŒ4,2ïŒ ïŒ0,0ïŒ-ïŒ2,2ïŒ-ïŒ3,3ïŒ ïŒ0,0ïŒ-ïŒ3,1ïŒ-ïŒ4,2ïŒ ïŒ0,0ïŒ-ïŒ1,3ïŒ-ïŒ2,4ïŒ ïŒ0,0ïŒ-ïŒ5,1ïŒ ïŒ0,0ïŒ-ïŒ1,5ïŒ ïŒ0,0ïŒ-ïŒ4,2ïŒ ïŒ0,0ïŒ-ïŒ2,4ïŒ ïŒ0,0ïŒ-ïŒ3,3ïŒ
|
1ã€ã®ãªãã·ã§ã³ | 2ã€ã®ãªãã·ã§ã³ | 4ã€ã®ãªãã·ã§ã³ | 8ã€ã®ãªãã·ã§ã³ | 16ãªãã·ã§ã³ |
è§£ãçè§£ããããã®éèŠãªã¢ã€ãã¢ã¯ãNã®å€§ããªå€ã®ãããã·ã¥ããéšåçã«äœãå€ã®è§£ã§æ§æãããŠãããããååž°ã«ãã£ãŠèšç®ãæŽçã§ããããšã§ãã
ã°ã©ãã£ã«ã«ã«ãç¹æ®ãªã±ãŒã¹k = 2ã®å Žåãã©ã€ãã¹ããŒãªãŒã¯ããŒãããŒã¯ãšçŽç·fïŒxïŒ= nxäžã®è»žäžã«ããæ£ã®æŽæ°ããŒã¯ãæ¥ç¶ããã»ã°ã¡ã³ãã®ã»ãããšããŠè¡šç€ºã§ããŸãã
N = 4ã®è§£ã¯æ¬¡ã®ããã«ãªããŸãã

N = 4ã¹ããŒãªãŒã8ã
次ã«ããã®ã¹ããŒãªãŒã«ãã¯ãã«ïŒ1,1ïŒã远å ããååŸããŸã

ãã¯ãã«ïŒ1,1ïŒã§å§ãŸãåã¹ããŒãªãŒã¯ãN = 7ã®ã¹ããŒãªãŒã®äžéšã«ãªããŸãã ã¹ããŒãªãŒã®å¥ã®éšåã¯ããã¯ãã«ïŒ1,2ïŒãªã©ã§å§ãŸãå°ããªãããã·ã¥ãã§ãã
ä»ã®ãã¯ã¿ãŒãšåæ§ã®ç©èªã N = 7ã®å±¥æŽèŠçŽ ã®äžéšã®å§ãŸãã§ãããã¯ãã«ïŒ1,3ïŒã®äŸã瀺ããŸãã ãã®å Žåãæ¬¡ã®ããã«ãªããŸãã

ã€ãŸããããªãœãªã¢ã³ã®æåã®èªç幎ã«äžãããããã¯ãã«ãååŸããããªãœãªã¢ã³ã®ç掻å²ã®ãã¹ãŠã®ãã¯ãã«ãããããæžç®ãããã®ãã¯ãã«ãæšãŠãåŸãå®éã«ããªãœãªã¢ã³ã®ããã€ãã®ç掻å²ãååŸããŸããæåŸã®ãã¯ãã«ã®èŠçŽ ã®åèšã¯n-ã¹ããŒããããã¯ãã«èŠçŽ ïŒã
ãããã£ãŠãæåŸã®ãã¯ãã«ã®èŠçŽ ã®åèšãnã§ãããã¹ãŠã®ã¹ããŒãªãŒã¯ãäžéšã®m <nã«å¯ŸããŠèŠçŽ ã®åèšãmã§ããæåŸã®ãã¯ãã«ãæã€ã¹ããŒãªãŒããååŸã§ããn-mã«çããåèšãæã€æ£ã®èŠçŽ ã®ãã¯ãã«ã远å ã§ããŸã人çã®å
šç©èªã
åèšãnmã«çãããã¯ãã«ã¯ããã€ã«ãªããŸããïŒ æå°ãã¯ãã«ã«ã¯å座æšã«1ã€ãå«ãŸããããããã¹ãŠã®ãã¯ãã«ãkã®ãã¹ãŠã®ã³ã³ããŒãã³ããåèšnmkã衚瀺ãããŸãã ããã§ãåäœãk座æšã«äžããå¿
èŠããããŸãã ãããè¡ãæ¹æ³ã®æ°ã¯ãç¹°ãè¿ãã®ããçµã¿åããã®æ°ã§ãã ç¹°ãè¿ãã®ããçµã¿åããã®æ°ã¯ã次ã®ããã«èšç®ãããŸãã
!}{r! (r-1)!})
ãããŠãç¹°ãè¿ãã®ãªãçµã¿åããã®æ°ã¯æ¬¡ã®ããã«èšç®ãããŸã
!})
ãããããç¹°ãè¿ãaããbãŸã§ã®çµã¿åããã®æ°ã¯ãç¹°ãè¿ããªãã®çµã¿åããa + b-1 by bã®æ°ã«çãããšç°¡åã«æšæž¬ãããŸãã
ãããã£ãŠããã®å ŽåããŠã§ã€ã®æ°ã¯ãn-m-k + k-1
kãããªãã¡ãkã®n-m-1ããã®C

ç®çã®å€ãans
nãšããŠç€ºããšã次ã®ç¹°ãè¿ãåŒãåŸãããŸãã ans
0 = 1ãšä»®å®ããŸããã¢ã«ãŽãªãºã ã®å®è¡æéã¯OïŒn2ïŒã§ãã

ããã§ãCïŒxãyïŒã¯æåã®åŒæ°ã®2çªç®ã®åŒæ°ã®çµã¿åããã®æ°ã§ãxïŒãšããŠèšç®ãããŸãã /ïŒxyïŒïŒ / yïŒ
ããªãœãªã¢ã³ã®ä»»åã¯ãæ±ºåæŠã«åºåžããã»ãŒå
šå¡ã«ãã£ãŠè¡ãããŸããïŒ2人ãé€ãïŒã åé¡ã解決ããã®ã«çŽ18åããããŸããã æåã«ããã
è¡ã£ãã®ã¯11åã§
ããŒãã³ãªãºãããã§ããããããããªããŒãžã³ããããŸãã
-Evgeny KAPUN ã
CPU
CIO Mail.Ru Groupã®
Alexander GORNYãããã»ããµã®åé¡ã«ã€ããŠèª¬æããŸãã
ãã®ã¿ã¹ã¯ã«ã¯ã26çš®é¡ã®åœä»€ãå®è¡ã§ããç¹å®ã®ãã¥ã¢ã«ã³ã¢ããã»ããµãå«ãŸããŸãã ååœä»€ã¯ãè±èªã®ã¢ã«ãã¡ãããã®æåã§è±¡åŸŽçã«æžãããŠããŸãã ããã°ã©ã ã¯äžé£ã®æç€ºã§æ§æãããŠããŸãã ã¢ãŒããã¯ãã£ã®ç¹æ§äžã2ã€ã®ã³ã¢ã§åæã«å®è¡ã§ããã®ã¯åãåœä»€ã®ã¿ã§ããããšãããã£ãŠããå Žåãããã»ããµãæå®ããã2nããã°ã©ã ïŒç¹å®ã®åœä»€ã®æå®ãããã·ãŒã±ã³ã¹ã§æ§æãããïŒãåŠçããã®ã«å¿
èŠãªæå°æéãèšç®ããå¿
èŠããããn-ãã®ãããªããã»ããµãŒã®æ°ã
ããã»ããµã2ã€ã®ããã°ã©ã ãåæã«åŠçããæ¹æ³ã®å³ïŒ


åé¡ã¯ãnåã®ããã»ããµãŒãšããããã®2ã€ã®ã³ã¢ã«2nåã®ããã°ã©ã ãå¹ççã«åæ£ããŠãã¹ãããæ°ãæå°éã«ããæ¹æ³ã«èŠçŽãããŸãã
åé¡ã®è©³çްãªå£°æãåç¥ã®ããã«ãçŸåšè£œé ãããŠããããã»ããµã®ã»ãšãã©ã¯ãã«ãã³ã¢ã§ããã€ãŸããè€æ°ã®åœä»€ã®åæå®è¡ããµããŒãããŠããŸãã Paraltelã¯ãæ°ããã¿ã€ãã®ãã¥ã¢ã«ã³ã¢ããã»ããµãéçºããŸãããããã«ããã倧æåã®ã©ãã³æåã§ç€ºããã26çš®é¡ã®åœä»€ã«åŸãããšãã§ããŸãã ãã®ãããªååœä»€ã®å®è¡ã«ã¯ãããã»ããµã®æ£ç¢ºã«1ã¯ããã¯ãµã€ã¯ã«ãå¿
èŠã§ãã
ãã®ããã»ããµã®ããã°ã©ã ã¯äžé£ã®åœä»€ã§ãã ããã°ã©ã ã®åœä»€ã¯ãããã°ã©ã ã«åŸãé åºã§å®è¡ããå¿
èŠããããŸããåœä»€ã亀æããããšã¯ã§ããŸããã
2ã€ã®ã³ã¢ãååšãããããããã»ããµã¯2ã€ã®ããã°ã©ã ãåæã«å®è¡ã§ããŸãïŒåã³ã¢ã«1ã€ïŒã ãã ããã¢ãŒããã¯ãã£äžã®æ©èœã«ãããåãããã»ããµã®2ã€ã®ã³ã¢ã§åæã«å®è¡ã§ããã®ã¯åãåœä»€ã®ã¿ã§ãã
2ã€ã®ããã°ã©ã ãããã»ããµã§å®è¡ããããšãäž¡æ¹ã®ããã°ã©ã ã®å®è¡ãã§ããã ãæ©ãå®äºããããã«ãç¹å¥ãªå¶åŸ¡ããã€ã¹ãå®è¡ãæé©åããŸãã ããšãã°ãABBããã³ABCããã°ã©ã ã¯4ãµã€ã¯ã«ã§ããã»ããµäžã§å®è¡ã§ããŸããæåã«ãç°ãªãã³ã¢ã®äž¡æ¹ã®ããã°ã©ã ã®Aã³ãã³ããåæã«å®è¡ãããæ¬¡ã«Bã³ãã³ããåæã«å®è¡ãããæ¬¡ã«æåã®ããã°ã©ã ã®Bã³ãã³ããç§ãããCãã åæ§ã«ããCABãããã³ãBABãããã°ã©ã ã¯4ãµã€ã¯ã«ã§å®è¡ãããŸãã
æè¿ãäŒæ¥ã®å°éå®¶ãnåã®ããã»ããµããã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒãçµã¿ç«ãŠãŸãããããã®ããã«ã¯2nåã®ããã°ã©ã ãå¿
èŠã§ãã èšç®ã®æ§æã¯ãåããã»ããµããã®ã»ããããæ£ç¢ºã«2ã€ã®ããã°ã©ã ïŒåã³ã¢ã«1ã€ïŒãå®è¡ããå¿
èŠããããããªãã®ã§ãã
ãã¹ãŠã®ããã°ã©ã ã®å®äºæéãæå°ã«ãªãããã«ãnåã®ããã»ããµãŒã§2nåã®ããã°ã©ã ã®å®è¡ãèšç»ããå¿
èŠããããŸãã
å
¥å圢åŒ
æåã®è¡ã«ã¯ãæ°nïŒ1â€nâ€10ïŒ-ããã»ããµãŒã®æ°ãå«ãŸããŠããŸãã æ¬¡ã«ã2nè¡ã§ãå®è¡ããããã°ã©ã ãæå®ããŸãã åããã°ã©ã ã«ã¯1ã100ããŒã ãå«ãŸããŸãã åã³ãã³ãã¯å€§æåã®ã©ãã³æåã§ç€ºãããŠããŸãã
åºå圢åŒ
åäžã®æ°å€-ãã¹ãŠã®ããã°ã©ã ãå®è¡ã§ããæå°æéãå°å·ããŸãã
ã¿ã¹ã¯ã®äŸãšããŠã次ã®ããã°ã©ã ã®ã»ãããæäŸãããŸããABBBAB CAB ABC
ããã»ããµã2ã€ãããšããæ
å ±ã
2ã€ã®ããã»ããµã§ããã°ã©ã ãå®è¡ããã«ã¯ã次ã®4ã€ã®æé ãå¿
èŠã§ãã
CPU 1ã³ã¢1 | CPU 1ã³ã¢2 | CPU 2ã³ã¢1 | CPU 2ã³ã¢2 |
[A] BB | [A] BC | [B] AB | |
A [B] B | A [B] C | | [C] AB |
AB [B] | | B [A] B | C [A] B |
| AB [C] | BA [B] | CA [B] |
åé¡ã®è§£æ±ºçã2ã€ã®æ®µéã«åãããããããåå¥ã«æ€èšããŸãã
æåã®ã¹ãããã¯ãã°ã©ããäœæããããšã§ãã ãã®é ç¹ã¯ãå®è¡ããå¿
èŠããã2nåã®ããã°ã©ã ã§ãã ã°ã©ãã«éã¿ãä»ãããã2ã€ã®ããã°ã©ã éã®ãšããžã®éã¿ã¯ãããã»ããµãå
±åå®è¡ã«è²»ããæéã«çãããªããŸãã ãã®å€ã¯ãããã°ã©ã ã®é·ãã®åèšãããåæã«å®è¡ãããã³ãã³ããåŒãããã®ã«çãããªããŸãã ãããŠããã®ãããªã³ãã³ãã¯LCSïŒaãbïŒã ãã§ããããã§ãaãšbã¯ããã°ã©ã ãèšè¿°ããè¡ã§ãããLCSïŒ
Longest Common Subsequence ãæå€§å
±éãµãã·ãŒã±ã³ã¹ïŒã¯ã2ã€ã®ã·ãŒã±ã³ã¹ã®æå€§å
±éãµãã·ãŒã±ã³ã¹ãèŠã€ãã颿°ã§ãã
ãã®çµæãrib骚ã®ééãèŠã€ããæ©èœã¯æ¬¡ã®ããã«ãªããŸãã
int dist(String a, String b) { int[][] d = new int[a.length() + 1][b.length() + 1]; for (int[] ar : d) { Arrays.fill(ar, 1000000000); } d[0][0] = 0; for (int i = 0; i <= a.length(); ++i) { for (int j = 0; j <= b.length(); ++j) { if (i < a.length()) { d[i + 1][j] = Math.min(d[i + 1][j], d[i][j] + 1); } if (j < b.length()) { d[i][j + 1] = Math.min(d[i][j + 1], d[i][j] + 1); } if (i < a.length() && j < b.length() && a.charAt(i) == b.charAt(j)) { d[i + 1][j + 1] = Math.min(d[i + 1][j + 1], d[i][j] + 1); } } } return d[a.length()][b.length()]; }
解決çã®2çªç®ã®æ®µéã¯ããã®ã°ã©ãã§æå€§ãšããžã®éã¿ãæå°åãããå®å
šãªäžèŽãèŠã€ããããšã§ãã ãã®åé¡ã解決ããæéå¶éã«é©åããæãåçŽãªã¢ã«ãŽãªãºã ã®1ã€ã¯ãåçããã°ã©ãã³ã°ã§ããããã§ã«ãµãã»ããã«ãªã£ãŠããŸãã ãµã€ãºãk以äžã®é ç¹ã®åã»ããã«ã€ããŠãçããç¥ã£ãŠããŸãã ãã®å Žåããã®ãããªãã¹ãŠã®ã»ããã調ã¹ãŠããŸã å«ãŸããŠããªãå¯èœæ§ã®ãããã¹ãŠã®ãšããžã«è¿œå ãããšãk + 2以äžã®ãµã€ãºã®ãã¹ãŠã®ã»ããã®çããèšç®ã§ããŸãã
int[] d = new int[1 << (2 * n)]; Arrays.fill(d, 1000000000); d[0] = 0; for (int mask = 0; mask + 1 < 1 << (2 * n); ++mask) { if (d[mask] == 1000000000) { continue; } int i = 0; while ((mask & (1 << i)) != 0) { ++i; } for (int j = i + 1; j < 2 * n; ++j) { if ((mask & (1 << j)) == 0) { d[mask | (1 << i) | (1 << j)] = Math.min(d[mask | (1 << i) | (1 << j)], Math.max(d[mask], dist[i][j])); } } }
ã¿ã¹ã¯ãProcessorãã¯ãæ±ºåæŠã«åå ããã»ãŒå
šå¡ã«ãã£ãŠè¡ãããŸããïŒ2人ãé€ãïŒã ãã®åé¡ã解決ããããã®å¹³åæéã¯çŽ18åã§ãã åé¡ãæåã«è§£æ±ºããã®ã¯ã11åéã®
Vladislav EPIFANOVã§ããã
å
å²
ã¿ã¹ã¯ãå
å²ãã«ã€ããŠã¯ãNRU ITMOã®åŠéšã®åŠçã§ãã
Pavel KROTKOVã«äŒããŸãã
ãã®ã¿ã¹ã¯ã¯ãæµã®å€§çŸ€ãæ»æããããšããŠããçŽ æŽãããéœåžãã¢ã«ããŒã¹ããŒã°ã«ã€ããŠèªã£ãŠããŸãã éœåžãç¶æããã«ã¯ãnåã®ã¢ãŒãã£ãã¡ã¯ãã®éå£ãç«ãŠã[i]åã®ãããŒãªã³ãã®éæ³ã®ãšãã«ã®ãŒã§åiçªç®ã®ã¢ãŒãã£ãã¡ã¯ããã¢ã¯ãã£ãã«ããå¿
èŠããããŸãã ãã®åŸãb [i]â Merlinsâã䜿çšããŠãæµã¯é ããããã®ã¢ãŒãã£ãã¡ã¯ããç Žå£ã§ããŸãã è¡ã®ãã£ãã§ã³ããŒã¯ãæµã®æŠåšã§ããéæ³ã®ãšãã«ã®ãŒã®ãã°ãªã³ãBããŒãªã³ãæã£ãŠããŸãã çºã®äººã
ã¯ãæµã®éè¡åž«ã«ããç Žå£ã®åŸãã¢ãŒãã£ãã¡ã¯ãã®æå€§æ°ãã¢ã¯ãã£ãã®ãŸãŸã«ãªãããã«ãã¢ãŒãã£ãã¡ã¯ããã¢ã¯ãã£ãã«ããããšã«ããŸããã éœåžã®é²è¡è
ãæŽ»æ§åããã¢ãŒãã£ãã¡ã¯ããéžæã§ããããã«ããå¿
èŠããããŸãã
åé¡ã®è©³çްãªå£°æèŒãããã¢ã«ããŒã¹ãã«ã¯ã®è¡ã«ã¯å°é£ã蚪ããŠããŸãã æ°åããæ°ãåããªãã»ã©ã®æµã®å€§çŸ€ãæ»æãå§ããŸãã éæ³ã®å£ã ããéœåžãç¶æããã®ã«åœ¹ç«ã¡ãŸãã
åžã®é²è¡è
ã®å
µåšåº«ã«ã¯ãéå£ãç«ãŠãããã«nåã®ã¢ãŒãã£ãã¡ã¯ãããããŸãã içªç®ã®ã¢ãŒãã£ãã¡ã¯ããã¢ã¯ãã£ãã«ããã«ã¯ã iããŒãªã³ïŒéæ³ã®ãšãã«ã®ãŒã®åäœïŒãå¿
èŠã§ãã ãã®åŸãããŒããŒãªã³ã䜿çšããŠãæµã¯é ãããã¢ãŒãã£ãã¡ã¯ããç Žå£ã§ããŸãã
è¡ã®ãã£ãã§ã³ããŒã¯ãæµã®BããŒãªã³ã®å
µåšåº«ã«éæ³ã®ãšãã«ã®ãŒã®ãã°ãªã³ãæã£ãŠããŸãã éæ³ã®ãšãã«ã®ãŒã¯è£å
ãããŸããã çºã®äººã
ã¯ãæµã®éè¡åž«ã«ããç Žå£ã®åŸãæå€§æ°ãã¢ã¯ãã£ãã®ãŸãŸã«ãªãããã«ãã¢ãŒãã£ãã¡ã¯ããã¢ã¯ãã£ãã«ããããšã«ããŸããã
ã¢ã¯ãã£ãã«ããã¢ãŒãã£ãã¡ã¯ããéœåžã®é²è¡è
ãéžæã§ããããã«ããŸãã
å
¥å圢åŒ
æåã®è¡ã«ã¯ãã¹ããŒã¹ã§åºåããã3ã€ã®æŽæ°AãBãããã³nïŒ0â€AãBâ€105ã0â€nâ€1000ïŒãå«ãŸããŠããŸãã æ¬¡ã®nè¡ã«ã¯ãæ°å€aiãšbiã®ãã¢ãå«ãŸããŠããŸãïŒ1â€a i ãb iâ€105ïŒã
åºå圢åŒ
æåã®è¡ã«ãç«¶åã®äž¡åŽã®æé©ãªã¢ã¯ã·ã§ã³äžã«ã¢ã¯ãã£ãã®ãŸãŸã«ãªãã¢ãŒãã£ãã¡ã¯ãã®æ°ãå°å·ããŸãã 2è¡ç®ã«ã¯ãéœåžã®é²åŸ¡è
ãã¢ã¯ãã£ãåããå¿
èŠãããã¢ãŒãã£ãã¡ã¯ãã®æ°ãšããããã®ã¢ãŒãã£ãã¡ã¯ãã®æ°ãå°å·ããŸãã 1è¡ã®æ°åã¯ã¹ããŒã¹ã§åºåããŸãã
ã¢ãŒãã£ãã¡ã¯ãã«ã¯ãå
¥åã§æå®ãããé åºã§1ããçªå·ãä»ããããŸãã
å°ãæŽå²çãªèæ¯ã ã¢ã«ããŒã¹ãã«ã¯ã¯ãäžçã®ç«¯ã«äœçœ®ãã4ã€ã®åçåœã®1ã€ã§ãããšãŒãã£ã«ãã§2çªç®ã«å€§ããéœåžã§ãã ã¢ã«ããŒã¹ãã«ã¯ã®è¡ã¯ããšãŒãã£ãŒã³ã®åœå¢ãå®ãèŠå¡ã®å£ã®åšãã«å»ºãŠãããŸããïŒ ã¢ã³ããžã§ã»ãµãã³ãã¹ã㌠ïŒè¡ã®é²åŸ¡è
ãå€ãã®ã¢ãŒãã£ãã¡ã¯ããã¢ã¯ãã£ãã«ãããšããŸãã æµã«ãšã£ãŠæé©ãªæŠç¥ã¯ãb
iãå¢å ããé ã«æµãç Žå£ããããšã§ãã å®éãæµã®ç®æšã¯ã§ããã ãå€ãã®ã¢ãŒãã£ãã¡ã¯ããç Žå£ããããšã§ãã ç°¡åãªã¿ãŒã²ãããããéããäžæ»
ã®ã¢ãŒãã£ãã¡ã¯ãã«å€ãã®ãšãã«ã®ãŒãè²»ããããšã¯æå³ããããŸããã
ã¢ãŒãã£ãã¡ã¯ãã®çªå·ãééé b
iã«ä»ãçŽããŸãã æµãé²åŸ¡åŽã®æé©ãªã¢ã¯ã·ã§ã³ã§ç Žå£ã§ããªãæåã®ã¢ãŒãã£ãã¡ã¯ããçªå·kã§ããããšãç¥ããã ãã®ä»®å®ã«åºã¥ããŠãé²åŸ¡åŽã®è¡åã説æããŸãã æåã®k â 1ã¢ãŒãã£ãã¡ã¯ããããç Žå£ã«è²»ããããåèšãšãã«ã®ãŒãå°ãªããšãB â b
k +1ããŒãªã³ã§ãããæŽ»æ§åãšãã«ã®ãŒãæå°ã«ãªãããã«ãããã€ããéžæããå¿
èŠããããŸãã kçªç®ã®ã¢ãŒãã£ãã¡ã¯ããã¢ã¯ãã£ãã«ããŸãã æåŸã«ããšãã«ã®ãŒæ¶è²»ã®å¢å é ã«æåŸã®n â kã¢ãŒãã£ãã¡ã¯ããã¢ã¯ãã£ãåããŸãã
æ®å¿µãªãããkã¯äºåã«ã¯ããããŸããã æµãç Žå£ã§ããªãæåã®ã¢ãŒãã£ãã¡ã¯ãã®æ°ãæŽçãããã®ä»®å®ã«æé©ãªçããæ§ç¯ããŸãã
D
ijããi以äžïŒ1000ãŸã§ïŒã®æ°ã®ã¢ãŒãã£ãã¡ã¯ããã¢ã¯ãã£ãã«ããããã«å¿
èŠãªæå°ãšãã«ã®ãŒãšããjã®ç Žå£ã®ããã«jã®ããŒãªã³ã®ãšãã«ã®ãŒïŒ10äžãŸã§ïŒãå¿
èŠã«ãªãããã«ããŸãã é·ç§»ïŒD
iãj = minïŒD
i â 1 ãjãD
i â 1 ãj â b
i + a
i ïŒã ãããã®2ã€ã®ã±ãŒã¹ã¯ãæé©ãªD
ijãå®çŸããããã«ã¢ãŒãã£ãã¡ã¯ãçªå·iãã¢ã¯ãã£ãã«ããå¿
èŠããããã©ããã«å¯Ÿå¿ããŸãã
é
åDãããæµãkçªç®ã®ã¢ãŒãã£ãã¡ã¯ããç Žå£ã§ããªãããã«å¿
èŠãªãšãã«ã®ãŒãããããŸãã ãã®åŸãç§ãã¡ã¯ç±å¿ã«æ®ããåããæŽ»æ§åããã®ã«ååãªãšãã«ã®ãŒããããŸãã ãã®çµæããã¹ãŠã®kãééããŠãæé©ãªçããèŠã€ãããŸãã
説æãããŠããã¢ãããŒãã®å®è¡æéã¯OïŒnïŒB + nïŒïŒã§ãã å®å
šãªãœãªã¥ãŒã·ã§ã³ã«ããã«ã¯ãæ
å ±ã¹ãã¬ãŒãžã远å ããŠåçã埩å
ããå¿
èŠããããŸãããããã¯æŒžè¿çãªåäœã«ã¯åœ±é¿ããŸããã
ãœãªã¥ãŒã·ã§ã³ã®ããã«ããã¯ã¯ã䜿çšãããã¡ã¢ãªã§ããå¯èœæ§ããããŸãã Dé
åã«ä¿åã§ããã®ã¯æåŸã®è¡ã®ã¿ã§ããããšã«æ³šæããŠãã ããã ããã«ãåãã¢ïŒiãjïŒã«ã€ããŠãæé©ãªD
ijãéæããããã«ã¢ãŒããã¡ã¯ãçªå·iãã¢ã¯ãã£ãã«ããå¿
èŠããããã©ãããç¥ãã ãã§ååã§ãã ã¡ã¢ãªã®å¶éãæºããããã«ããã®ãããã®æ
å ±ãæ ŒçŽããããã«2ãã€ã以äžã䜿çšããå¿
èŠããããŸããã
å
å²ã¿ã¹ã¯ã¯19人ã«ãã£ãŠè§£æ±ºãããŸããã
Peter MITRICHEVã¯87åã§ãã®ã¿ã¹ã¯ã«èª°ãããéã察åŠããŸããïŒSiegeã¿ã¹ã¯ã®åã«ãPeterã¯æåã®3ã€ãæåè£ã«ãã¹ããŸããïŒã
ã·ã£ããã«ããã
NRU ITMOã®åŠçã§ãã
Sergey MELNIKOVã¯ããããã®ããã·ã³ã°ã®ã¿ã¹ã¯ã«ã€ããŠæ¬¡ã®ããã«èªã£ãŠããŸãã
ãã®ã¿ã¹ã¯ã§ã¯ããããã®ããã·ã³ã°ã¡ã«ããºã ãæ€èšããå¿
èŠããããŸããããã«ãããå®å
šã«ããã·ã³ã°ããããšãã§ããŸãïŒãããã®äžå€®ããæåŸãŸã§ã®ã«ãŒããããã¯ã®æå°ç§»ååæ°ïŒïŒã€ãŸãã2æã®åäžã®ã«ãŒããæ¬¡ã
ã«ç§»åããªãããšã確èªããŸãïŒããŸãã¯ããããå®å
šã«ããã·ã³ã°ã§ããªãããšãå ±åããŸãã æåã«ããããã¯éæžå°ã®å°å³ã«ãã£ãŠãœãŒããããŸãã ã«ãŒãã®ããŸããŸãªå©ç¹ã®æ°ããããå
ã®ã«ãŒãã®é åºããããã®æ°ãèãããšã

åé¡ã®è©³çްãªå£°æèªååãšã³ã³ãã¥ãŒã¿ãŒåã¯ãç§ãã¡ã®ç掻ã®ããããåéã«æ¥éã«æµžéããŠããŸãã , , â . â .
, , 1 t. , .
. , 1, â t. , , .
, .
, : i j , i- j- .
, , .
x â , . x .
. n â . n , . , , 1.
200000.
, , «-1», , , . , k â , . k , i j â , , .
, , :

, , .
, .

. , . , .
K. , âK / 2â ( ââŠâ ââŠâ â ).
M «». , M = âK / 2â.
, .
, 1122333344 3 ( 33), â 6. M = âK / 2â.( ) :
- K â ( ). , «» A, «» B, â C. |A| + |B| + |C| = |K|, |A| + |C| = |B| = M. 1122333344 AABBBC.
: (B, C), , â (A, B). , (B, C)* (A, B)*, * â .
:
1122333344 (AABBC) ->1122333-4.34 (AAB) -> 1-2333-4.3412 (BB)
( , . â )
, . : |C| > 0, C , B. |C| = 0, (A, B)*, B .
- K â . . A, , A-. C, C- , .
, âK / 2â. , , «» ( ). .
. Q.
- Q = 0. , .
- Q > âN / 2â, . , Qâ1 , .
- Q = âN / 2â . , . :
, A- C-
- a = 0 . c = N â Q = âN / 2â, , , b c , .
- = 0 . .
- a > 0, b > 0 - a â 1 , B: b â 1, C: c â 1. (a â 1) + (c â 1) = N â Q â 2, Q â 1 , , .
- M < â ( N + 1) / 2 â . ( ), , .
, ( ) (C
1 , C
2 ). , , . , .
, . Z, (X, Z) Z , Z Z (X
1 , Z) (X
2 , Z)âŠ. Z- , (X, Y) , (X
k , Z) (X
k+1 , Y), X
k+1 â Z.
, (X, Z) X Z (M). M â Z, Z (X, Z) (Z, ...) , Z M, (X, Z) (M, Z).
, , âK / 2â .
, , , . , O(N log N). , - , , . , , , : . O(n), .
« »
.
():
N . , , .
, . , . , , , . , , .
, .
, , .
, .
3 258 , â1000 1000, .
Russian Code Cup .
â .
.
, . , , , . , .
, . , .
, . , , , , .
, . , , .


, . , . , . .

. , â . .
O(n
3 ) , O(n
2 ) O(n) . O(n) O(n
2 ) O(n
2 ). , O(n
3 ).
« » .
, 93- .
Russian Code Cup 2012 . , , , - ( ,
,
), â - (
) . , , , . , , , , ?
Mail.Ru Group