æ¬æ¥ãYandexãäž»å¬ããã¹ããŒãããã°ã©ãã³ã°ãã£ã³ããªã³ã·ããã§ããYandex.Algorithmã®æ±ºåãçµäºããŸããã 2015幎ã«ã競äºã¯
Yandex.Conestãã©ãããã©ãŒã ã§å®å
šã«ãªã³ã©ã€ã³ã§è¡ãããŸããã åå ã®ç³è«ã¯ã73ãåœã®ããã°ã©ããŒã«ãã£ãŠè¡ãããŸããã åå è
ã®ã»ãšãã©ã¯ãã·ã¢ããŠã¯ã©ã€ãããã©ã«ãŒã·ãã«ã¶ãã¹ã¿ã³ãã€ã³ããã¢ã¡ãªã«ãæ¥æ¬ãäžåœããæ¥ãŠããŸãããäžè¬çã«éžææš©ã®å°çã¯éåžžã«åºå€§ã§ã-ãã©ãžã«ãã€ã³ããã·ã¢ããã«ãŒããããã«å
±ååœãã¢ã¶ã³ããŒã¯ãã»ãã¬ã«ãã±ã€ãã³è«žå³¶ã ç»é²ãããŠãã人ã®8.9ïŒ
ã¯å¥³ã®åã§ãã åå è
ã®çŽåæ°ã¯åŠçã§ãã åèšã§ã3722人ããå¿åãããããã®ãã¡28人ã決åã«éããŸããã
Yandex.Algorithm-2015ã®åè
ã¯Gennady Korotkevichã§ããã
ç¿æ
£ããã圌ã¯æé«ã®çµæ
ã瀺ããæçµã©ãŠã³ãã§6ã€ã®åé¡ã®ãã¡5ã€ã解決ãã80åã®ããã«ãã£æéãåãåããŸããã Gennadyã¯2013幎ãš2014幎ã«Yandexãã£ã³ããªã³ã·ããã§1äœã«ãªããŸããã
2äœã¯Peter Mitrichevã3äœã¯Evgeny Kapunã§ããã 圌ãã¯ãããã4ã€ã®åé¡ã解決ããããŒã¿ãŒã¯31åããŠãŒãžã³ã¯79åãèšé²ããŸããã ãã¹ãŠã®ãã¡ã€ããªã¹ãã®çµæã¯ã
Yandex.Algorithm Webãµã€ãã§è¡šç€ºã§ããŸãã
Yandex.Algorithmã®ã¿ã¹ã¯ã¯ãYandexã®åŸæ¥å¡ãšæåŸ
ãããå°é家ïŒACM ICPCããã³Topcoder Openã³ã³ãã¹ãã®åè
ãšãã¡ã€ããªã¹ããå«ãïŒã®äž¡æ¹ãå«ãåœéããŒã ã§ãã ãããŠãåŸæ¥ããã¹ãŠã®ã¿ã¹ã¯ã®åæãæºåããŠããŸããã 誰ããããã®ãã¹ãŠã解決ã§ããŸããã§ããã ã»ãšãã©ã®åå è
ã¯ã¿ã¹ã¯Bã«å¯ŸåŠããŸããããã¿ã¹ã¯AãšDã¯ãããã1人ã§è§£æ±ºããŸããã
ã¿ã¹ã¯A.ã¿ã¹ã¯ãããŒãžã£ãŒ
åæãšåé¡ã®äœè
ã¯ãGleb Evstropovã§ãã MSUåæ¥ã2åéã¡ããªã¹ãACM ICPCãç ä¿®çã®Bomboslavã¯ãYandexã®åŸæ¥å¡ã䜿çšããã¿ã¹ã¯ãããŒãžã£ãŒã®æ¹åã«åãçµãã§ããŸãã ãããŒãžã£ãŒã®çŸåšã®ããŒãžã§ã³ã¯ãåŸæ¥å¡ã«å²ãåœãŠããã
nåã®ã¿ã¹ã¯ã®ããããã«ã2ã€ã®ãã©ã¡ãŒã¿ãŒ
c iããã³
u i-ãã®ã¿ã¹ã¯ã®éèŠæ§ãšç·æ¥æ§ãé¢é£ä»ããŸãã ãã©ã¡ãŒã¿å€ãé«ãã»ã©ãç¹å®ã®ã¿ã¹ã¯ã®éèŠåºŠãŸãã¯ç·æ¥åºŠãé«ããªããŸãã
ã©ã®åŸæ¥å¡ããèªåã«å²ãåœãŠãããã¿ã¹ã¯ãå®è¡ããé åºãéžæã§ããŸãã å¯äžã®å¶éã¯æ¬¡ã®ãšããã§ããã¿ã¹ã¯
iãã¿ã¹ã¯
jãããéèŠãã€ç·æ¥ã®å Žåãã€ãŸã
c i > c jããã³
u i > u jã®å Žåãããã¯ããæ©ãå®äºããå¿
èŠããããŸãã
Bobmoslavã¯ãæšå¥šã·ã¹ãã ãã¿ã¹ã¯ãããŒãžã£ãŒã«è¿œå ããããšã決å®ããŸãããããã«ãããæ¢åã®ã¿ã¹ã¯ãå®äºããããã«å¿
èŠãªé åºãããããŸãã ãã®ãããªæ³šæãäœæããã®ã¯ç°¡åããããããBomboslavã¯åŸæ¥å¡ãåã¿ã¹ã¯ã®å€
p iã瀺ãæ©èœãè¿œå ããŸãããããã¯ããã®ã¿ã¹ã¯ãå®è¡ããããšã§åŸãããåã³ãæå³ããŸãã ç°ãªãã¿ã¹ã¯ã®
p iã®å€ã¯ç°ãªãå¿
èŠããããŸãã
nåã®ã¿ã¹ã¯ã®ããããã«å¯ŸããŠ
p iã®å€ã瀺ãããåŸãã·ã¹ãã ã¯åŸæ¥å¡ã«å®è£
ã®é åºãæäŸããå¿
èŠããããŸãããŸããå¿
é ã®å¶éã«éåããªãããã«ãã次ã«ããããã®ã¿ã¹ã¯ã«å¯Ÿå¿ãã
p iå€ã®ã·ãŒã±ã³ã¹ãèŸæžåŒã«æ倧ã«ãªãããã«ããŸãã èšãæããã°ãéèŠæ§ãšç·æ¥æ§ã®å¶éãæºããã¿ã¹ã¯ã®ãã¹ãŠã®ã·ãŒã±ã³ã¹ãããæåã«å®è¡ãããã¿ã¹ã¯ããåŸæ¥å¡ãåãåãåã³ãæ倧ã«ãªããã®ãéžæãããŸãã ãã®ãããªãªãã·ã§ã³ãããã€ãããå Žåã2çªç®ã«å®äºããã¿ã¹ã¯ã®åã³ãæ倧ã«ãªããªãã·ã§ã³ãéžæãããŸãã
å
¥ååœ¢åŒ å
¥åã®æåã®è¡ã«ã¯ã1ã€ã®æ°å€
n-ãã®åŸæ¥å¡ã®ã¿ã¹ã¯æ°
ïŒ1â€nâ€100 000ïŒãå«ãŸããŸãã
次ã®
nè¡ã¯ããããŒãžã£ãŒã®ã¿ã¹ã¯ã説æããŠããŸãã ããããã«ã¯ã3ã€ã®éè² æŽæ°
c i ã
u iããã³
p iãå«ãŸããŠããŸã-ãããããåŸæ¥å¡ããã®ã¿ã¹ã¯ãå®è¡ããéèŠæ§ãç·æ¥æ§ãããã³æ¬²æ±
ïŒ0â€c i ãu i ãp iâ€10 9 ïŒ ã ãã¹ãŠã®
p iããã¢ããšã«ç°ãªãããšãä¿èšŒãããŠããŸãã
åºåãã©ãŒãããã åŸæ¥å¡ããã¹ãŠã®ã¿ã¹ã¯ãå®è¡ããããã®æ£ããã·ãŒã±ã³ã¹ãå°å·ããŸãããã®ã·ãŒã±ã³ã¹ã§ã¯ã察å¿ããæ°é
p iã®ã·ãŒã±ã³ã¹
ãèŸæžçã«æ倧ã«ãªããŸãã ã¿ã¹ã¯ã«ã¯ãå
¥åã«çŸããé çªã§çªå·ãä»ããããŸãã åã¿ã¹ã¯ã¯ãã·ãŒã±ã³ã¹å
ã§1åã ãçºçããå¿
èŠããããŸãã çããåžžã«å¯äžã®ãã®ã§ããããšã瀺ãã®ã¯ç°¡åã§ãã
åé¡Aã®è§£æ±ºçæå°ã®ãœãŒã¹ãç¹°ãè¿ãæœåºãã貪欲ãªã¢ã«ãŽãªãºã ã䜿çšã§ããããããã¹ãŠã®
p iã®å·®ã®æ¡ä»¶ãäžå¯æ¬ ã§ããããšã«æ³šæããŠãã ããã ã¢ã«ãŽãªãºã ã®ãã詳现ãªèª¬æïŒ
- æé©ãªåçã®ãã¬ãã£ãã¯ã¹ãäœæããå
ã®ã°ã©ãããç¹å®ã®ãµãã°ã©ãã®ã¿ãæ®ããŸãã
- çŸåšã®ã°ã©ãã®å€ãã®ãœãŒã¹ãã€ãŸãããšããžãå«ãŸãªãå€ãã®é ç¹ãèæ
®ããŠãã ããã æããã«ãçŸåšã®ããããžåé¡ã¯ããã®ã»ããã«å±ããé ç¹ã®ããã€ãã«ãã£ãŠç¶ç¶ãããªããã°ãªããŸããã ãããã®ããŒã¯ãã¢ã¯ãã£ããšåŒã³ãŸãã
- ãã¹ãŠã®p iã¯èŸæžåŒæ¯èŒã®æ§é ã«ããç°ãªãããã次ã®é ç¹ã¯äžæã«æ±ºå®ãããŸãã æ倧ã®p iãæã€ã¢ã¯ãã£ããªé ç¹ãçŸåšã®å¿çãã¬ãã£ãã¯ã¹ã«è¿œå ããã°ã©ãããåé€ããŸãã
ã¢ã«ãŽãªãºã ã®ããã¹ãèšè¿°ãåã«å®è£
ããå Žåããã®ãœãªã¥ãŒã·ã§ã³ã®æŒžè¿çãªè€éãã¯
OïŒVâEïŒã§ãã
Oã®æŒžè¿çæå
ïŒVâlogV + EïŒã¯ç°¡åã«éæã§ããŸã-ãã¹ãŠã®é ç¹ã®çŸåšã®åå
¥åè§åºŠãèŠããŠãèŠçŽ ããã°ããè¿œå ããŠæ倧å€ãæœåºããæ©èœãæã€ã¢ã¯ãã£ããªé ç¹ã®ã»ãããããã€ãã®æ§é ã«ä¿åããã ãã§ãã ãã®ãããªæ§é ã¯ããã€ããªããŒããŸãã¯ãã©ã³ã¹ã®åããæ€çŽ¢ããªãŒã§ãã
ãã ãããã®åé¡ã§ã¯ãã°ã©ãã¯æé»çã«æå®ãããŠãããäžè¬çã«ã
Eã®ãµã€ãºã¯n
2ã®ãªãŒããŒã§ããå¯èœæ§ãããããããã®å¶éã«ã¯å€§ããããŸãã ã°ã©ããã次ã®ãœãŒã¹ãåé€ããåŸãæ°ããã¢ã¯ãã£ããªé ç¹ããã°ããèå¥ããæ¹æ³ãèãåºãå¿
èŠããããŸãã
å§çž®ãããã»ã°ã¡ã³ãã®2次å
ããªãŒã®æŠå¿µã«æ»ããŸãã ãã®æ§é ã®è©³çŽ°ãªåæã¯ããã§ã¯æ³å®ãããŠããŸãããã¡ã¢ãªãã次å
OïŒnâlognïŒãæã¡ãã°ã«ãŒãã¯ãšãªïŒ
OïŒlog 2 nïŒæéäžã«æ倧ãæå°ãé·æ¹åœ¢ã®åèšãªã©ïŒã«å¿çã§ããããšã ãã
æãåºããŠãã ããã ãã®è€éãã¯ãã¯ãšãªé åã1ã€ã®æ¬¡å
ã®
OïŒlognïŒãã³ãã«åå²ããããšã«ãã£ãŠå®çŸãããŸããå次å
ã«ã€ããŠã¯ãã»ã°ã¡ã³ãã®1次å
ããªãŒã®æ§é ããã§ã«æ§ç¯ãããŠããŸãã 次ã«ããããã®åãã³ãã¯åã³
OïŒlognïŒããŒãã«åå²ãããŸãã
x> x iããã³
y> y iã®åœ¢åŒã®
Vè§åºŠããšã«ãåã®æ®µèœã§ç€ºããããŒãã£ã·ã§ã³ãæ§ç¯ããŸãã 次ã«ãäžããããè§åºŠãæ§æãããã¹ãŠã®åºæ¬é åã空ã«ãªãç¬éã«ãé ç¹ã¯ã¢ã¯ãã£ããªãã®ã®ã»ããã«åé¡ãããŸãã ååºæ¬é åã«ã€ããŠããã®äžã®çŸåšã®ãã€ã³ãæ°ãç¶æãããšãšãã«ãåãã€ã³ãã«ã€ããŠããã®è§åºŠã圢æãããŸã 空ã§ã¯ãªãåºæ¬é åã®æ°ãç¶æããŸãã ããã§ãç¹å®ã®è§åºŠã«è©²åœãããã¹ãŠã®åºæ¬é åã§ã¯ãªããã»ã°ã¡ã³ãã®2次å
ããªãŒãžã®ã¯ãšãªã§é åã®ããŒãã£ã·ã§ã³ã圢æãããããã®
OïŒlog 2 nïŒã®ã¿ãæå³ããããšã«æ³šæããŠãã ããã
ã¢ã«ãŽãªãºã ã®ã¹ãããã¯æ¬¡ã®ããã«ãªããŸãã
- æ倧ã®ãã€ãæã€ã¢ã¯ãã£ããªé ç¹ãéžæããã¢ã¯ãã£ããªé ç¹ã®ã»ããããåé€ããŸãã
- äžããããé ç¹ã«å¯Ÿå¿ããç¹ãå«ãã»ã°ã¡ã³ãã®2次å
ããªãŒã®ãã¹ãŠã®åºæ¬é åãèæ
®ããŸãã ãã®æ§é ã®ç¹æ§ã«ããã°ã OïŒlog 2 nïŒãããããŸããã ãã®ãããªé åããšã«ãã«ãŠã³ã¿ãŒã1ã€æžãããŸãã
- ã«ãŠã³ã¿ãŒããŒãã«ãªã£ããã¹ãŠã®ãšãªã¢ã«ã€ããŠããã¹ãŠã®ãã€ã³ãã®ãªã¹ããèæ
®ããå¿
èŠããããŸã-ãã®ãšãªã¢ããããã«å¯Ÿå¿ããè§åºŠã®æ¡å€§ã«å«ãŸããããã«ã ãããã®ãªã¹ãã¯ãã¡ã€ã³ã¢ã«ãŽãªãºã ãèµ·åããåã§ãã£ãŠããäºåã«äœæãããŸãã ãªã¹ãå
ã®åãã€ã³ãã«ã€ããŠãã«ãŠã³ã¿ãŒã1ã€æžå°ããŸãã
- ã«ãŠã³ã¿ãŒããŒãã«ãªã£ããã¹ãŠã®ãã€ã³ãã«ã€ããŠã察å¿ããé ç¹ãã¢ã¯ãã£ããªé ç¹ã®ã»ããã«è¿œå ãããŸãã
åèšå®è¡æéïŒ
OïŒnâlog 2 nïŒ ãããã³å æã¡ã¢ãªã
ã¿ã¹ã¯B.ãã¹ã§ã®ãã¯ããã¯
åé¡ãšåæã®èè
ã¯ããã€ã«ã»ãã£ããããã§ãã ã¢ã¹ã¯ã¯å·ç«å€§åŠåæ¥ãTopcoder Open 2014ãã¡ã€ããªã¹ããæ¯å¹Žå€ãYandexã®åŸæ¥å¡ã¯Yandex.Picnicã§èªç¶ã«åºãããŸãã èªåã®è»ãæã£ãŠããªãåŸæ¥å¡ã®ããã«ããã¹ã¯ãªãã£ã¹ããäŒæ©æãŸã§ã¬ã³ã¿ã«ãããŸãã
ãã¹ãå¿
èŠãšããåŸæ¥å¡ã®æ°ã«é¢ããæ
å ±ããããŸãã ããã«ãäžéšã®åŸæ¥å¡ã°ã«ãŒãã¯ããã¹ã®åãåã®åžã«åº§ããããšèããŠããŸãã ééäŒç€ŸãæäŸãããã¹ã«ã¯ã1åã«6åžããããŸãã 泚æããåã«ãåŸæ¥å¡ã®ãã¹ãŠã®ã°ã«ãŒããåžæã«å¿ããŠå容ããããã«å¿
èŠãª6åžã®è¡æ°ã決å®ããå¿
èŠããããŸãã
å
¥ååœ¢åŒ æåã®è¡ã«ã¯ãåäžã®æŽæ°
ïŒ1â€nâ€100ïŒ -åŸæ¥å¡ã®ã°ã«ãŒãæ°ãå«ãŸããŠããŸãã 次ã®è¡ã«ã¯ãã¹ããŒã¹ã§åºåãã
ã nåã®æŽæ°
a i-ã°ã«ãŒããµã€ãº
ïŒ 1â€a iâ€6ïŒãå«ãŸããŠããŸãã
åºåãã©ãŒãããã 1ã€ã®çªå·ãå°å·ããŸãã6åžã®æå°è¡æ°ã§ãåžæã«å¿ããŠãã¹ãŠã®ã°ã«ãŒãã«å¯Ÿå¿ã§ããŸãã
åé¡Bã®è§£æ±ºçäžè¬çãªã¢ã€ãã¢ïŒè¡ã®åº§åžæ°ã6ãè¶
ããªãå ŽåãåçŽãªè²ªæ¬²ãªã¢ã«ãŽãªãºã ãæ©èœããŸãã
æããã«ããµã€ãº6ã5ããŸãã¯4ã®åã°ã«ãŒãã¯å¥ã
ã®è¡ã«é
眮ããå¿
èŠããããŸãã ãµã€ãº3ã®ã°ã«ãŒãã¯ã§ããã ãå¯ã«é
眮ããå¿
èŠããããŸãã
ããªãã«ã®ãã¢ã®è¡ãããã³ããããæ®ãã®1ã€ã¯å¥ã®è¡ã«é
眮ããå¿
èŠããããŸãã å®éãæé©ãªããŒãã£ã·ã§ã³ã«ã¯2ã€ã®è¡ããããããããã«1ã€ã®ããªãã«ãå«ãŸããŠãããšããŸãã 次ã«ãããªãã«ã®1ã€ãã2çªç®ã®ããªãã«ãšåãè¡ã«ããã°ã«ãŒããšäº€æããŸãã ããã€ãã®ãã®ãããªæäœã®åŸãèšè¿°ãããæ¡ä»¶ãæºããããããã«ãã¹ãŠã®ããªãã«ã移åããŸãã
次ã«ã2ã€ã®ã°ã«ãŒããš1ã€ã®ã°ã«ãŒããé
眮ããŸãã ãŠããã以å€ã®ãã¹ãŠãé
眮ãããšããŠãããã®å Žæãæ確ã«æ±ºå®ãããŸãã䜿çšãããè¡ã®æ®ãã®ç©ºãå Žæãåãã次ã«æ°ããè¡ã次ã
ã«å®å
šã«åããŸãã ãã¥ãŒã¹ãåãããã«é
眮ããå¿
èŠãããããšã¯ç°¡åã«ããããŸãã䜿çšãããŠããè¡ã®1ã€ã«ã¯å°ãªããšã2ã€ã®å ŽæããããŸããã次ã®ãã¥ãŒã¹ãããã«é
眮ããŸãã
説æããã¢ã«ãŽãªãºã ã¯ã次ã®ããã«ç°¡åã«èª¬æã§ããŸããã°ã«ãŒãããµã€ãºã®éé ã§æ€èšããã¹ããŒã¹ãå°ãªããã°ã«ãŒãã«ã¯ååãªè¡ã«ãããããé
眮ããŸãã
åé¡C.補åå
šäœ
åé¡ãšåæã®èè
ã¯ãªã¬ã°ã»ã¯ãªã¹ãã³ã³ã§ãã Yandex.AlgorithmãOpen Cupã®ã³ãŒãã£ããŒã¿ãŒãsnarknewsãããžã§ã¯ããN -1åæ°
u_i / d_iãäžãããã
2â€u iâ€Nããã³2â€d iâ€Nã®å Žåããã¹ãŠã®
u iã¯ãã¢ããšã«ç°ãªãããã¹ãŠã®
d iã¯ãã¢ããšã«ç°ãªããŸãã åæ¯ãçŽ æ°ã®çŽ¯ä¹ã§ãããéžæããããã¹ãŠã®åæ°ã®ç©ãæŽæ°ã«ãªãããã«ãå°ãªããšã1ã€ãæ倧ã§
N / 10åæ°ãéžæããŸãã
å
¥ååœ¢åŒ æåã®è¡ã«ã¯ãåäžã®æŽæ°
NïŒ10â€Nâ€10 6 ïŒãå«ãŸããŠããŸãã 次ã®
N-1è¡ã®ããããã«ã¯ã
u_i / d_iïŒ2â€u i ãd iâ€Nãu i â u j for
iâ jãdiâ dj for
iâ j ïŒã®åœ¢åŒã®å°æ°éšã1ã€å«ãŸããŠããŸãã æ°åãšã/ãèšå·ã®éã«ã¹ããŒã¹ã¯ãããŸããã
åºåãã©ãŒãããã 2è¡å°å·ããŸãã æåã®èŠçŽ ã«ã¯æŽæ°
M-éžæããåæ°ã®æ°ãå«ãŸããŠããå¿
èŠããããŸãã 次ã®
Mè¡ã«ã¯ãå
¥åãšåã圢åŒã§1è¡ã«1ã€ãã€æå®ãããåæ°èªäœãå«ããå¿
èŠããããŸãã éžæãããã¹ãŠã®åæ°ã®åæ¯ã¯ãçŽ æ°ã®çŽ¯ä¹ã§ããå¿
èŠããããŸããã€ãŸãã
ããã§ã
p iã¯çŽ æ°ã
k iã¯æ£ã®æŽæ°ã§ãã åæ°ã¯ä»»æã®é åºã§è¡šç€ºã§ããŸãã 1ã€ã®åæ°ã¯1åããéžæã§ããŸããã
è€æ°ã®è§£æ±ºçãããå Žåã¯ããããããå°å·ããŸãã 解決çããªãå Žåã¯ãæåã®è¡ã«
-1ãåºåããŸãã
ã¿ã¹ã¯Cã®è§£æ10
5ãã2â10
5ãŸã§ã® Nã®å Žåã
Nãè¶
ããªãçŽ æ°
ã®æ°ã¯
N / 10æªæºã§ãã
PïŒNïŒä»¥äžã®åæ°
ïŒPïŒNïŒã¯
Nãè¶
ããªãçŽ æ°ã®æ°
ïŒãéžæããå¿
èŠãããå Žåãåé¡ã«ã¯åžžã«å»ºèšçãªè§£ãããããšã瀺ããŸãã
次ã®ããã«éžæããŸãã ãŸããåæ°
N / 2ãéžæããŸãã
Nãå¶æ°ã®å Žåãåçãåä¿¡ãããŸãã
Nãå¥æ°ã®å Žåãåæ¯ãšããŠæå°ã®çŽ æ°
Nããã€åæ°ãéžæããŸãã ååãå¶æ°ã®å Žåãæåã®2ã€ã®å°æ°ãçãã§ãã ååãåæ¯ã§å²ããšã2çªç®ã®å°æ°ãçãã«ãªããŸãã 次ã®åã¹ãããã§ãåæ¯ãšããŠåã®ååã®æå°ã®çŽ å æ°ãæã€åæ°ãéžæããããšããŸãã ãã®çªå·ã
içªç®ã®ã¹ãããã§åæ¯ã«æ¢ã«ããããšãå€æããå Žåãiçªç®ã®ç«¯æ°ããæåŸã«éžæããã端æ°ãŸã§ã®ã»ã¯ã·ã§ã³ãçãã§ãã ãã以å€ã®å Žåã¯ãé©åãªåæ°ãéžæããŸãã ãããã£ãŠãææªã®å Žåãåæ¯ãšããŠ
Nãè¶
ããªããã¹ãŠã®çŽ æ°ãéžæããŸãããã®åŸãç¹°ãè¿ããå¿
ç¶çã«çºçããŸãã
ã¿ã¹ã¯D.å£çµããŠåŸæãã
åæãšåé¡ã®äœè
ã¯ãGleb Evstropovã§ããå°ãåãŸã§ãYandexã®åŸæ¥å¡ã¯ããããã¯ãŒã¯çµç±ã§éä¿¡ããããã®å€§éã®é åºä»ããããããŒã¿ã®æé©ãªæçåã®ããã®ã¢ã«ãŽãªãºã ã®ç¹èš±ãååŸããŸããã ä»ã圌ãã¯æçåãããããŒã¿ã®äžããæ¢ã«æçåããããã³ãã¬ãŒããèŠã€ãããšãã課é¡ã«çŽé¢ããŠããŸãã ããªãè€éã«èãããŸãããç¹ã«ããªãã®å©ããåããŠã圌ãã¯ãã®ã¿ã¹ã¯ã«ææŠããæºåãã§ããŠããŸãã ç§ãã¡ã¯åœŒãã®ããæ°ãèµ·ããããããã«åé¡ã®å£°æã«é²ã¿ãŸãã
1ã5ã®
nåã®æ°åã§æ§æãããåæã·ãŒã±ã³ã¹
a iãããããœãŒã¹ããŒã¿ã®æçåã«ãããé£ç¶éšåã®ãµã€ãºãè¡šããŸãã 1ãã5ãŸã§ã®
måã®æ°åãããªãã·ãŒã±ã³ã¹
b iããããåæ§ã«ãµã³ãã«ã®æçåã«ãããé£ç¶éšåã®ãµã€ãºã瀺ããŸãã
1ã€ã®ã¢ã¯ã·ã§ã³ã§ã2ã€ã®ã·ãŒã±ã³ã¹ã®ããããã§2ã€ã®é£æ¥ããèŠçŽ ãéžæããããããçµã¿åãããŠã1ã€ã®èŠçŽ ããã®åèšã«çããå€ã«çœ®ãæããããšãã§ããŸãã ãããã£ãŠã1åã®ã¢ã¯ã·ã§ã³ã§ã·ãŒã±ã³ã¹
1ã2ã2ããååŸã§ããã®ã¯ãã·ãŒã±ã³ã¹3ã2ããã³
1ã4ã ãã§ãã ãã®æäœãå®è¡ãããšãèŠçŽ ã5ãã倧ããã·ãŒã±ã³ã¹ã«è¡šç€ºãããå ŽåããããŸããã·ãŒã±ã³ã¹
b iãã·ãŒã±ã³ã¹
a iã®ãµãã¹ããªã³ã°
ã«ãªãããã«ããããã®ã·ãŒã±ã³ã¹ã§å®è¡ããå¿
èŠãããã¢ã¯ã·ã§ã³ã®æå°æ°ãèšç®ããå¿
èŠããããŸãã
å
¥ååœ¢åŒ å
¥åã®æåã®è¡ã«ã¯ã2ã€ã®æŽæ°
nãš
mãå«ãŸããŸããããããããœãŒã¹ããŒã¿ã®ããŒãã£ã·ã§ã³å
ã®ãã©ã°ã¡ã³ãã®æ°ãšãæ€çŽ¢çšã®ãã³ãã¬ãŒãã®ããŒãã£ã·ã§ã³å
ã®ãã©ã°ã¡ã³ãã®æ°ã§ã
ïŒ1â€nãmâ€200 000ïŒ ã
次ã®è¡ã«ã¯ããœãŒã¹ããŒã¿ã®ããŒãã£ã·ã§ã³å
ã®ãã©ã°ã¡ã³ãã®ãµã€ãºãæå®ããããããã1ã5ã®
nåã®æ°å€
a iãå«ãŸããŠããŸãã
æåŸã®è¡ã«ã¯ããã³ãã¬ãŒãã®ããŒãã£ã·ã§ã³å
ã®ãã©ã°ã¡ã³ãã®ãµã€ãºãåæ§ã®åœ¢åŒã§èšè¿°ãã
måã®æ°å€
b iãå«ãŸããŠããŸãã
åºåãã©ãŒãããã åäžã®æŽæ°-2çªç®ã®ã·ãŒã±ã³ã¹ãæåã®ã·ãŒã±ã³ã¹ã®ãµãã¹ããªã³ã°ã«ãªãããã«å¿
èŠãªã¢ã¯ã·ã§ã³ã®æå°æ°ãåºåããŸãã ãããäžå¯èœãªå Žåã¯ã
-1ãåºåããŸãã
解æåé¡BãŸã第äžã«ãè¯å®çãªçãããããšããå€é
åŒæéãã§ãã¯ã®åé¡ã解決ããæ¹æ³ãåŠã³ãŸãã å
ã®ã·ãŒã±ã³ã¹ã®2ã€ã®å¢çãå埩ããŸãã ã·ãŒã±ã³ã¹
b iãååãšããŠéžæãããã©ã°ã¡ã³ã
a iã«ãããã³ã°ã§ããããšã確èªããã«ã¯ã©ãããã°ããã§ããïŒ ãã¹ãŠã®èŠçŽ
b iã®åèšããéžæãããèŠçŽ
a iã®åèš
ãšçãããã©ããã確èªããŸãã æäœã®æ°ãå¶éããããšãªãããã¹ãŠã®èŠçŽ ã1ã€ã«ãŸãšããããšãã§ããããããã®æ¡ä»¶ãå¿
èŠãã€ååã§ããããšã¯å®¹æã«ããããŸãã
äžèšã®ã¢ã«ãŽãªãºã ã®è€éãã¯
OïŒn 2 + mïŒã§ãã ãã¹ãŠã®èŠçŽ ãæ£ã§ããããããµãã»ã°ã¡ã³ãã®åèšã¯äž¡æ¹ã®å¢çã«æ²¿ã£ãŠå³å¯ã«å調ãªé¢æ°ã«ãªãããšã«æ³šæããŠãã ããã 2ã€ã®ãã€ã³ã¿ãŒã®æ¹æ³ã䜿çšããŠãæé
OïŒn + mïŒã«ãããåçã®ååšãæ€èšŒããåé¡ã解決ããŸãã
ã·ãŒã±ã³ã¹
b iã®èŠçŽ ã®åèšããããã·ãŒã±ã³ã¹
c i ïŒãµãã»ã°ã¡ã³ã
a i ïŒã®èŠçŽ ã®åèšã«çããããšãããã£ãŠãããšä»®å®ããŸãã ãããã®ã·ãŒã±ã³ã¹ãåãã«ããããã«å¿
èŠãªããŒãžæäœã®æå°æ°ãå®çŸ©ããŸãã äž¡æ¹ã®ã·ãŒã±ã³ã¹ã®ãã¬ãã£ãã¯ã¹ã
xã«çããä»»æã®æ£æ°
xãèããŸãã ãããã®æ°å
xã® 1ã€ã¯ããã¹ãŠã®çµåãå®äºããåŸãäž¡æ¹ã®ã·ãŒã±ã³ã¹ã®æåã®æåã«å¯Ÿå¿ããŸãã äžèšã®èŠä»¶ãæºãã
2ã€ã®ç°ãªã
x 1ããã³
x 2 ïŒx 1 <x 2 ïŒãååšããå Žåãæå°æ°ã®çµåïŒãããã£ãŠæ倧é·ïŒãæã€åçã¯
x 2ã§éå§ããããšã¯æ±ºããŠæå©ã§ã¯ãªãããšãããããŸãã
å®éãæçµåçã®åèŠçŽ ã¯åã·ãŒã±ã³ã¹
b iããã³
c iã®ãµãã©ã€ã³ã«å¯Ÿå¿ããããããã®ãµãã©ã€ã³ã¯åžžã«2ã€ã«åå²ã§ããèŠçŽ
x 1ããã³
x 2 -x 1ã圢æããŸãã ãããã£ãŠãäž¡æ¹ã®ã·ãŒã±ã³ã¹ã®æ¥é èŸã
xã«ãªãããã«ãã¹ãŠã®
xã䜿çšããŠãæé©ãªåçã貪欲ã«å
¥åã§ããŸãã ãã®ãããª
xã®æ°ã¯ãå¿çã®é·ãããããã£ãŠæäœã®æ°ã決å®ããŸãã
OïŒnïŒã®èå³æ·±ããµãã»ã°ã¡ã³ããåºå¥ãã
OïŒn + mïŒã®éã«ããããã®çããèŠã€ããæ¹æ³ãåŠã³ãŸããã ãŸã é
ãããŸãã äž¡æ¹ã®ã·ãŒã±ã³ã¹ã§ãã¹ãŠã®éšååãèšç®ããããããããã§ããŒã¯ããŸãã 次ã«ãäžèŽããèŠçŽ ã®æ°ã®èšç®ã¯ã2ã€ã®ãããã·ãŒã±ã³ã¹ã®ã¹ã«ã©ãŒç©ã®èšç®ã«åæžãããŸãã ããã·ãŒã±ã³ã¹ãšå¥ã®ã·ãŒã±ã³ã¹ã®ãã¹ãŠã®æ¥å°ŸèŸãšã®ã¹ã«ã©ãŒç©ã®çµæã¯ãé«éããŒãªãšå€æã䜿çšããŠèšç®ã§ããŸãã 解ã®æçµçãªè€éãïŒ
OïŒcnã»logïŒcnïŒïŒ ãããã§
cã¯èŠçŽ
a iããã³
b iã®äžéã§ãã
åé¡E.ã³ã³ãã¯ãè¡
åé¡ãšåæã®èè
ã¯ãMichal Forishekã§ãã Yandex.Algorithm 2013ã®ãã¡ã€ããªã¹ããã¿ã¹ã¯ACM ICPCãIOIã®èè
ããã®åé¡ã§ã¯ãå°æåã®ã©ãã³æåïŒãaãããzãïŒã®æååãèæ
®ãããŸãã ãã®æååå
ã®2ã€ã®åäžã®æåã®éã«åãæåã®ã¿ãèŠã€ãã£ãå Žåãæååã¯
ã³ã³ãã¯ããšåŒã°ããŸãã ããšãã°ãæååyandexãaacccbãeeeeeã¯ã³ã³ãã¯ãã§ãããæååabaãšaazbbzcã¯ã³ã³ãã¯ãã§ã¯ãããŸããã
å°æåã®ã©ãã³æåãšçåç¬ŠïŒ "ïŒ"ïŒã§æ§æããããã³ãã¬ãŒããæäŸãããŸãã åçå笊ã¯ä»»æã®å°æåã®ã©ãã³æåãè¡šããNFindã¯ãæå®ããããã¿ãŒã³ã«äžèŽããããŸããŸãªã³ã³ãã¯ãè¡ã®æ°ã瀺ããŸãã çãã¯éåžžã«å€§ãããªãå¯èœæ§ãããããã
10 9 + 7ã§å²ã£ãäœããåºåããŸãã
å
¥ååœ¢åŒ å
¥åã®æåã®è¡ã«ã¯ãæŽæ°
t-ãã¹ãã±ãŒã¹ã®æ°
ïŒ1â€tâ€100ïŒãå«ãŸããŸãã 次ã®
tè¡ã¯ãããã1ã€ã®ãã¹ãã±ãŒã¹ãå®çŸ©ããŸãããã¹ãã±ãŒã¹ã¯ã
1æå以äž
10 4æå以äžã®é·ãã®ãã¿ãŒã³ã§ãã ãã¿ãŒã³ã¯ãå°æåã®ã©ãã³æåãšçå笊ã®ã¿ã§æ§æã§ããŸãã
åºåãã©ãŒãããã åãã¹ãã±ãŒã¹ã«ã€ããŠã1ã€ã®æŽæ°ïŒããã«å¯Ÿå¿ããã³ã³ãã¯ããªè¡ã®æ°ã
10 9 + 7ã§å²ã£ãäœãïŒãåºåããŸãã
解æåé¡Eæåã«ãããåçŽãªã¿ã¹ã¯ãèããŸãããã³ãã¬ãŒããäžããããå Žåãããã«äžèŽããå°ãªããšã1ã€ã®ã³ã³ãã¯ããªè¡ããããŸããïŒ ãã®ãããªåé¡ã¯ãåã«ç·åœ¢æéã§è§£æ±ºãããŸãããã¹ãŠã®çå笊ãåé€ããçµæã®æååãã³ã³ãã¯ããã©ããã確èªããå¿
èŠããããŸãã ãããã£ãŠã決å®ã®æåã®ã¹ãããã¯ãã®ãããªãã§ãã¯ã«ãªããŸãã åæ Œããªãå Žåã¯ã0ãåºåããŸãã
ãã®åŸãããã€ãã®äºåèšç®ãè¡ããŸããããã¯å°æ¥ã«åœ¹ç«ã¡ãŸããåãæåãå·Šå³ã«é£ç¶ããçå笊ïŒ
z ??? zãªã© ïŒã®è¡ã衚瀺ããããã³ã«ãçå笊ã¯äžæã«é瀺ã§ããããïŒãã®æåãšåãã«ãªããŸãïŒããã®ã¿ã¹ã¯ã®ã³ã³ããã¹ãã§ã¯ããã®æååããã®ãããªæå1ã€ã«çœ®ãæããããšãã§ããŸãïŒã€ãŸãããã©ã°ã¡ã³ã
z ??? zã
zã«å€ãããŸãïŒã
ããã«ã次ã®è¡šèšã䜿çšããŸãã
- Nã¯ãæå®ããããã¿ãŒã³ã®é·ãã瀺ããŸãïŒãã®ã¿ã¹ã¯ã§ã¯10 4ä»¥äž ïŒã
- ã¢ã«ãã¡ãããã®ãµã€ãºã瀺ãS ïŒãã®å Žåã¯26ïŒ;
- ãã®ãã¿ãŒã³ã§èŠã€ãããªãã¢ã«ãã¡ãããã®æåæ°ã瀺ãUã
U = 0ã®å Žåãåé¡ã¯åçŽã«è§£æ±ºãããŸãã é£ç¶ããçå笊ã®ãããã¯ããšã«ãæåã®æåãã©ãã§çµããã2çªç®ã®æåãã©ãã§å§ãŸããã¯äžæã®ãŸãŸã§ãã
ããšãã°
ã???? bãããã¯ã§ã¯ãçå笊ãå
é ã®è€æ°ã®ïŒå Žåã«ãã£ãŠã¯ãŒãã®ïŒæå
aã«çœ®ãæããããšãã§ããæ®ãã®çå笊ã¯æå
bã«çœ®ãæããããŸãã ãããã£ãŠãåãããã¯ã®ãªãã·ã§ã³ã®æ°ã¯çå笊ã®æ°ã«1ã足ããæ°ã«çããããããã¯ã¯ç¬ç«ããŠããããããªãã·ã§ã³ã®åèšæ°ã¯ãããã®æ°ã®ç©ã«çãããªããŸãã
äžè¬çãªå Žåã
Uâ 0ã®å Žåãè¿œå ã®ãªãã·ã§ã³ã衚瀺ãããŸãããã³ãã¬ãŒãã«å«ãŸããŠããªãæåã®ãã¡ãæçµè¡ã«ååšããæåãšå Žæãç¹å®ããå¿
èŠããããŸãã ãããã®æåã¯ããããæçµè¡ã®é£ç¶éšåæååã圢æããå¿
èŠãããããããã®ãããªæåãã©ããã§çºçããå Žåããã®çºçã¯ãã¹ãŠé£ç¶ããçå笊ã®åããããã¯ã«å±ããŠããå¿
èŠããããŸãã
ãã®ãããªè¡ã®æ°ãå¹æçã«æ°ããæ¹æ³ã¯ããã€ããããŸãã èããããã¢ãããŒãã®1ã€ã¯ãããªãæšæºçãªæ¹æ³ã䜿çšããŸãããããã®ãã¹ãŠã®è¡ãååž°çã«çæããäžåºŠã«1æåãã€è¿œå ããŠãããçæãã¡ã¢åã«ããã«ãŠã³ãã«çœ®ãæããŸãã é©åãªã¢ã¯ã·ã§ã³ãæ£ããè¡ãããå ŽåãçµæãšããŠã
OïŒNUïŒtimeã§ã®èŠæ±ã«å¿çããã¡ã¢åãããååž°é¢æ°ãååŸããŸãã
ååž°é¢æ°ã¯æ¬¡ã®åŒæ°ãåããŸãã
- åŠçããããã«æ®ããããã³ãã¬ãŒãå
ã®æåæ°ã
- ãŸã 䜿çšãããŠããªãæåã®æ°ã
- åŠçãããæåŸã®æåã®ã¿ã€ãã
ã¿ã€ãã¯ã次ã®4ã€ã®å€ã®ãããããåãããšãã§ããŸãã
- ä¿®æ£æžã¿ ïŒæåŸã«åŠçãããæåã¯æåã§ãããæååã«å
¥ããå¿
èŠãããããã§ãã
- éå» ïŒæåŸã«åŠçãããæåã¯çå笊ã§ãããæåŸã«åŠçãããæåã«çœ®ãæããããšã«ããŸããã
- future ïŒæåŸã«åŠçããããã®ã¯çå笊ã§ããããããå°æ¥ãã³ãã¬ãŒãã«è¡šç€ºããã次ã®æåã«çœ®ãæããããšã«ããŸããïŒã¿ã¹ã¯ã¯ã«ãŠã³ãã®ã¿ã§ãããããã©ã®æåã§ããããç¥ãå¿
èŠã¯ãããŸããïŒã
- æªäœ¿çš ïŒæåŸã«åŠçãããæåã¯çå笊ã§ããã以åã«äœ¿çšãããããšã®ãªãæåã«çœ®ãæããããšã«ããŸããã
åã®æçŽã®çš®é¡ãç¥ã£ãŠããã°ã次ã®çå笊ãé瀺ããæ©äŒãç¥ã£ãŠããŸãã ããšãã°ãã¿ã€ãã
futureã®å Žåã
futureã¿ã€ãã¯ãããã¯ã®ãã¹ãŠã®æåã«ãªããŸãã
ããã«ããããã«é«éãªãœãªã¥ãŒã·ã§ã³ãæäŸããå¥ã®ã¢ãããŒãããããŸãã åæåïŒãœãªã¥ãŒã·ã§ã³ã®ååšã確èªãããã¹ãŠã®èªæãªãããã¯ã1æåã«çœ®ãæããïŒåŸãé£ç¶ããçå笊ã®
S + 1ãããã¯ä»¥äžãååŸã§ããããšã«æ³šæããŠãã ããïŒè¡ã®å
é ã«ããå Žåããããæ®ãã®ãããã¯ã®éå§åã«ãããã€ãã®ãããã¯ãããã¯ãã§ãæçŽã åæååŸããããã®ãã¹ãŠã®æåã¯ãã¢ããšã«ç°ãªããŸãã ãããã£ãŠããããã¯ã®æ°ã¯ãã¢ã«ãã¡ãããã®æåæ°ã1ãè¶
ããŠè¶
ããããšã¯ã§ããŸããã
ããã§ãçµã¿åããã¡ãœããã䜿çšããŠããã¿ãŒã³ã«äžèŽãããã¹ãŠã®ã³ã³ãã¯ããªéšåæååãã«ãŠã³ãã§ããŸãã ãããè¡ãã«ã¯ãé£ç¶ããçå笊ã®ãããã¯ãåŠçããååž°é¢æ°ã䜿çšããŸãã ãããã£ãŠãé¢æ°ã«ã¯2ã€ã®åŒæ°ããããŸããåŠçãããããã¯ã®æ°ãšãçŸåšäœ¿çšãããŠããªãæåã®æ°ã§ãã
æ°ãããããã¯ãåŠçãããšãããã®ãããã¯ã§å°ãªããšã1å䜿çšããæªäœ¿çšã®æåæ°ã®ãã¹ãŠã®ãªãã·ã§ã³ãèæ
®ããŸãã ãããã£ãŠãçãã¯ãç¹å®ã®æªäœ¿çšæåã»ãããéžæããæ¹æ³ã®æ°ïŒäºé
ä¿æ°ïŒãšããã§ã«éžæãããŠããæåããœãŒãããæ¹æ³ã®æ°ïŒéä¹ïŒãšãããã¿ã€ãã®æåã®ãã§ãŒã³ãçµäºããä»ã®æåã®ãã§ãŒã³ãéå§ããå ŽæïŒäºé
ä¿æ°ïŒã®ç©ãšçãããªããŸãæ®ãã®æªäœ¿çšã®æåã䜿çšããŠæ®ãã®ãããã¯ãåããæ¹æ³ã®æ°ïŒååž°åŒã³åºãã®çµæïŒã
ãããã£ãŠã
OïŒNUïŒæéã䜿çšããŠãç¹å®ã®ã¢ãžã¥ãŒã«ã®äºé
ä¿æ°ã®ããŒãã«ãäœæããæé
OïŒSU 2 ïŒã®ãŠãããèŠæ±ã«å¿çãããœãªã¥ãŒã·ã§ã³ãååŸããŸãã
åé¡F.ã©ã³ãã ãã€ã³ã
èè
ã¯ã€ãŽã¡ã³ã»ã«ãºã¡ã³ã³ã§ãã ãµã³ã¯ãããã«ãã«ã¯å·ç«å€§åŠã®åæ¥çããµã³ã¯ãããã«ãã«ã¯å·ç«å€§åŠãšãªãŒãã³ã«ããã®éžææš©ã®ã¿ã¹ã¯ã®èè
ã次ã®ç·åœ¢ååæ¬äŒŒä¹±æ°ãžã§ãã¬ãŒã¿ãŒãæ€èšããŠãã ããã ãžã§ãã¬ãŒã¿ãŒã«ã¯ç¶æ
-æŽæ°
sïŒ0â€s <2 32 ïŒããããŸãã éé
[0ãXïŒã§æ¬¡ã®æ¬äŒŒä¹±æ°æŽæ°ãå¿
èŠã«ãªããã³ã«ããžã§ãã¬ãŒã¿ãŒã¯å€æ
S new =ïŒaâS old + cïŒmod2 32ãå®è¡ããŸãã ãã®åŸã
S newã¯ãžã§ãã¬ãŒã¿ã®æ°ããç¶æ
ã«ãªããçµæã¯æ°å€ãšããŠå®£èšãããŸã
ã
ãã®åé¡ã§ã¯ã
a = 134,775,813ããã³
c = 1-ãããã®å€ã¯ãBorland Delphi 7ã®çµã¿èŸŒã¿æ¬äŒŒä¹±æ°ãžã§ãã¬ãŒã¿ãŒã§äœ¿çšãããŸãããã®ãžã§ãã¬ãŒã¿ãŒã¯ã座æšãåºé
[0ã100 000 000 ïŒ ãã€ã³ããçæãã2ã€ã®æ¹æ³ãæ€èšããŠãã ããã
æåã®æ¹æ³ïŒã³ãŒãããŒã RAWïŒã§ã¯ããžã§ãã¬ãŒã¿ãŒã¯åæç¶æ
sã«ãªã ããã®åŸãåžæããééã§
2nåã®æ¬äŒŒä¹±æ°
a 1 ãa 2 ã...ãa 2nãé 次çæããŸãã ãã®åŸã
nåã®ã©ã³ãã ãªç¹ã¯ã次ã®åº§æšãã¢ã«ãã£ãŠå®çŸ©ãããŸãïŒ
ïŒa 1 ãa 2 ïŒãïŒa 3 ãa 4 ïŒã...ãïŒa 2n-1 ãa 2n ïŒ ã
2çªç®ã®æ¹æ³ïŒã³ãŒãåSHUFFLEDïŒã§ã¯ãããã»ã¹ã®å§ãŸãã¯åãã§ãïŒãžã§ãã¬ãŒã¿ãŒã¯ããã€ãã®åæç¶æ
sã«ãªãããã®åŸãåžæã®ééã§
2nåã®æ¬äŒŒä¹±æ°
a 1 ãa 2 ã...ãa 2nãé 次çæããŸãã ãã ãããããã®
2nçªå·ã¯ã次ã®ããŒãžã§ã³ã®
Fisher-Yatesã¢ã«ãŽãªãºã ïŒæ¬äŒŒã³ãŒãïŒã䜿çšããŠã©ã³ãã ã«åé
眮ãããŸãã
i = 1,2ã...ã2ânã®å ŽåïŒ
k =ã©ã³ãã [0ãiïŒ+ 1
ã¹ã¯ããïŒa i ãa k ïŒããã§
random [0ãiïŒã¯ãåºé
[0ãiïŒããã®æ¬äŒŒä¹±æ°æŽæ°ã§ããããã®çæã«ã¯åããžã§ãã¬ãŒã¿ãŒã䜿çšããã
swapïŒa i ãa k ïŒã¯æ°å
a iãš
a kã亀æããŸãã ãã®å Žå
i = kã®å Žåãäœãèµ·ãããŸããã æ¬äŒŒã³ãŒãã®å®è¡ãéå§ããåã«ããžã§ãã¬ãŒã¿ãŒã¯ãçªå·
a 1 ãa 2 ã...ãa 2nãçæããåŸã«èªåèªèº«ãèŠã€ããç¶æ
ã«ãã
ãŸãçªå·
a 1 ãa 2 ã...ãa 2 nãåé
眮ãããåŸãæåã®æ¹æ³ã®ããã«ã
nåã®ã©ã³ãã ãªç¹ã¯æ¬¡ã®åº§æšã®ãã¢ã«ãã£ãŠäžããããŸãïŒ
ïŒa 1 ãa 2 ïŒãïŒa 3 ãa 4 ïŒã ...ãïŒa 2 n-1 ãa 2 n ïŒ ã
nãã€ã³ãã®ã·ãŒã±ã³ã¹ãæå®ãããŠããŸã
ïŒ10,000â€nâ€100,000ïŒ ã äžèšã®2ã€ã®æ¹æ³ã®ããããã§ååŸãããããšãç¥ãããŠããŸãã ã©ã®ã¡ãœãããéžæãããããããã³åæç¶æ
sãäœã§ãã£ããã¯äžæã§ãã ã©ã®ãã€ã³ãçææ¹æ³ã䜿çšããããã調ã¹ãŸãã
å
¥ååœ¢åŒ æåã®è¡ã«ã¯ãæŽæ°
n-ãã€ã³ãæ°
ïŒ10000â€nâ€100 000ïŒãå«ãŸããŸãã 次ã®nè¡ã«ã¯ããã€ã³ãã®èª¬æã1è¡ã«1ã€ãã€å«ãŸããŠããŸãã ãã€ã³ãã®åèšè¿°ã¯ãã¹ããŒã¹
xã§åºåããã2ã€ã®æŽæ°ã§æ§æãããŸã-ãã®åº§æš
xããã³
yïŒ0â€xãy <100,000,000ïŒ ã æ¡ä»¶ã«èšèŒãããŠãã2ã€ã®æ¹æ³ã®ããããã§ãã€ã³ããååŸãããããšãä¿èšŒãããŸãã
åºåãã©ãŒããããæåã®æ¹æ³ã§ãã€ã³ããçæããå Žåã¯ãRAWãã2çªç®ã®æ¹æ³ã§äœ¿çšããå Žåã¯ãSHUFFLEDããå°å·ããŸãã
åé¡Fã®è§£æ±ºçäžè¬çãªèŠ³å¯ã çæãããä¹±æ°ã2
32åã®æ°åã®1ã€ã®åŸªç°ã·ãŒã±ã³ã¹ã圢æããŠããããšã瀺ãã®ã¯ç°¡åã§ãã åæç¶æ
ããã¯ããã®åšæçã·ãŒã±ã³ã¹ã®ã©ã®èŠçŽ ãçæãéå§ãããã®ã¿ã«äŸåããŸãã
æåã®æ±ºå®ã ãã®è§£æ±ºçã¯ç¢ºçè«çã§ããã€ãŸãã1ã«è¿ã確çã§æ£ããçããäžããŸãã äž»ãªã¢ã€ãã¢ã¯ã2ã€ã®çææ¹æ³ã®ãã¡1ã€ã ãã«åºæã®ããããã£ãèãåºãããã®ããããã£ãæºããããŠããããã»ãšãã©æºããããŠããªãããšã確èªããããšã§ãã
ãã®ãããªããããã£ã®ç°¡åãªäŸã次ã«ç€ºããŸãã å°ããæ°
k ïŒããšãã°ã
k = 10 ïŒãä¿®æ£ããŸãã
nç¹ã®åº§æšãé çªã«çæããŸãã 次ã«ãé·ã
kã®ãã€ã³ãã®é£ç¶ãµãã·ãŒã±ã³ã¹ããäœããã®ç¶æ
ããéå§ããä¹±æ°ã®é£ç¶çæã«ãã£ãŠååŸãããŸãã ãŸãã座æšæ··åã䜿çšããŠ
nåã®ãã€ã³ããçæãã
å Žå ãé·ã
kã®ãã€ã³ãã®é£ç¶ãµãã·ãŒã±ã³ã¹ãä¹±æ°ã®é£ç¶çæã«ãã£ãŠååŸããã確çã¯éåžžã«å°ãããªããŸãã
ãã®ããããã£ããã¹ããããœãªã¥ãŒã·ã§ã³ã¯æ¬¡ã®ããã«ãªããŸãã ååã«å€§ããæ°
t ïŒããšãã°ã
t = 10 6 ïŒãä¿®æ£ããŸãã 次ã®ã¹ãããã®
ãã¡tãå®è¡ããŸããã©ã³ãã ãªåæç¶æ
ãéžæãã座æšãæ··åããã«
kãã€ã³ããçæããŸãã åã¹ãããã§ã
kãã€ã³ãããäžãããã
nãã€ã³ãã®äžã§é£ç¶ãããµãã·ãŒã±ã³ã¹ãšããŠåºäŒãããšã確èªããŸãã ãããå°ãªããšã1ã€ã®ã¹ãããã§çºçããå Žåã座æšã¯æ··åããã«çæããããšçããŸãã ããã§ãªãå Žåã¯ãããã·ã³ã°ãè¡ããããšçããŸãã
kãš
tã®éžæãããå€ã§ãããããã®å Žåã®ãšã©ãŒ
ã®ç¢ºçã¯10-10以äžã§ããããšã瀺ãããŸãã
åã¹ãããã§ã
OïŒkïŒãŸãã¯
OïŒk log
nïŒã§ãã§ãã¯ãè¡ãããšãã§ããŸããæåã«ã
OïŒ1ïŒ ïŒããã·ã¥ããŒãã«ïŒãŸãã¯
OïŒ lognïŒ ïŒãã€ããªæ€çŽ¢ããªãŒïŒã ãœãªã¥ãŒã·ã§ã³ã®åèšå®è¡æéã¯ãããã·ã¥ããŒãã«ã®å Žåã¯
OïŒn + tkïŒ ããã€ããªæ€çŽ¢ããªãŒã®å Žåã¯
OïŒn log
n + tk log
nïŒã§ãã
2çªç®ã®è§£æ±ºçã ããã·ã³ã°ããªãã£ããšããŸãã æåã®åº§æš
ïŒx 1 ïŒãçæããåŸããžã§ãã¬ãŒã¿ãŒã®ç¶æ
ã埩å
ããŠã¿ãŸãããã ç§ãã¡ã¯ãããç¥ã£ãŠããŸã
ã
sã¯ã»ãŒçãã
ã ãã®ãããª
x 1ã®å€ãååŸã§ãã
ã®ã¯çŽ43
ã®å€ã ã
ã§ãã ãããããã¹ãŠæŽçããããããã«ã€ããŠãããã«
2n-1åã®æ°å€
ãy 1 ãx 2 ãy 2 ã...ãx n ãy nãçæããŸãã ããã€ã
ã®sã«å¯ŸããŠãçµæã®ãã€ã³ããæå®ããããã€ã³ããšäžèŽããå Žåãæããã«æ··åã¯ãããŸããã§ããã ãã®ãããªãã®ããªããã°ãæããã«ããã·ã³ã°ãè¡ãããŸããã
ãã®ãœãªã¥ãŒã·ã§ã³ãæ£ããæ©èœããããã«ã¯ãæåã®ããã€ãã®ãã€ã³ãã®ã¿ãèæ
®ããã ãã§ååã§ããããšã«æ³šæããŠãã ãããå
sã«ã€ããŠãã·ãŒã±ã³ã¹ã¯å®å
šã«äžèŽããããã»ãŒå³åº§ã«ç°ãªãããšãããããŸãã æ®ãã®å
¥åããŒã¿ã¯èªã¿åãããšããã§ããŸããã