
å é±ã®åææ¥ã6æ16æ¥ããã·ã¢ã³ãŒãã«ãã2012ã®äºéžã©ãŠã³ãã¯çµäºããŸãããäºéžã©ãŠã³ãã®ã¿ã¹ã¯ã¯äºéžãããè€éã§ã-ãããæºæ±ºåã®çç±ã§ãã ç§ã¯ãã§ã«ã以åã®ãªã³ã©ã€ã³ãã¢ãŒã§åå è ã«æäŸããããã®ã«ã€ããŠè©±ãããœãªã¥ãŒã·ã§ã³ãªãã·ã§ã³ïŒ Q1 ã Q2 ã Q3 ïŒã詳现ã«åæããŸããã
600åãäºéžã«æåŸ ãããŸããã 434人ãå°ãªããšã1ã€ã®åé¡ã解決ã§ããŸããã ãã¹ãŠã®ã¿ã¹ã¯ã¯2人ã§è§£æ±ºãããŸããã æé«ã®50人ã決åã«é²åºããŸããã ãã¢ãŒã®ããã3æéã§ã3190ã®ãœãªã¥ãŒã·ã§ã³ããã¹ãã·ã¹ãã ã«éä¿¡ãããŸããã
ããã§ã¯ãã¿ã¹ã¯èªäœã«ç§»ããŸãããã ç§ã¯ãããã説æããããšããã®ã§ãã¹ããŒãããã°ã©ãã³ã°ã®æåã®äžæ©ãèžã¿åºã人ãã¡ïŒãããŠå®éã«ã¯ããã°ã©ãã³ã°å šè¬ïŒã§ã決å®ãæ確ã«ãªãããã«ããã
çµäº
åé¡ã®æ¬è³ªã¯ã2çš®é¡ã®é åãä»»æã®é åºã§é©çšããããšã«ãããå€ã®ãªã¹ãå ã®æå®ãããäœçœ®ããæå®ãããäœçœ®ã«èŠçŽ ã移åã§ãããã©ãããå€æããããšã§ããã åé¡ã®ç¶æ ã«ãããæåã®2ã€ã®èŠçŽ ã亀æããããããé åãšãå€ã®ã«ãŒã«ã»ããïŒa1ãa2ã...ãaNïŒã«ãã£ãŠå®çŸ©ãããè€éãªé åãé©çšããããšãã§ããŸãããåå€ã¯ã移åå¯èœãªäœçœ®ã®ã·ãªã¢ã«çªå·ã決å®ããŸãããã®äœçœ®ããã®çªå·ã ããšãã°ãé åèŠåã®æåŸã®2ã€ïŒ1,4,3,2ïŒã¯ãæåŸã®äœçœ®ãã2çªç®ã«åé 眮ã§ããããããæåŸã«åé 眮ã§ããããšãæå³ããŸãã å®éã«ã¯ãæåŸã«ããã®ãªã¹ãïŒNåã®å€ïŒãšãã©ãŒã ïŒäœçœ®1ãäœçœ®2ïŒãå«ãå ¥åããŒã¿ã«ãã¯ã/ãããããšãã圢åŒã®åçãäžããå¿ èŠããããŸã-ãèŠçŽ ãäœçœ®1ããäœçœ®2ã«ç§»åã§ããŸãããããã®ã¿ã¹ã¯ã¯ã³ã³ãã¹ãã§æãç°¡åã§ã411人ãããã«å¯ŸåŠããŸãããæåã®ãã¹ãã¯ãã©ãŠã³ãã®éå§ãã3å31ç§ã§Dmitry Zhukovã«ãã£ãŠææ¡ãããŸããã
æããã«ããã¹ãŠã®é åã¯æçµçã«äžé£ã®ã«ãŒãã«ãªããŸãã äžèšã®ãµã€ã¯ã«3ã®äŸã§ã¯ã4-> 2-> 4-> 2 ... 1-> 1-> 1 ... 3-> 3-> 3 ...ã€ãŸãããpãé©çšããããšããæäœã ãããã£ãå Žåã 2ã€ã®èŠçŽ aiãšbiã«ã€ããŠã¯ããããã®èŠçŽ ãé åpã®1ãµã€ã¯ã«ã«ããå Žåã«éããçãã¯ãã¯ããã«ãªããŸãã
ãé åãzãé©çšãããšã©ããªããèããŠã¿ãŸãããã æåã«1çªç®ãš2çªç®ã®èŠçŽ ãç°ãªããµã€ã¯ã«ã«ããå Žåããé åãã䜿çšãããšãããã2ã€ã®ãµã€ã¯ã«ã®1ã€ããå¥ã®èŠçŽ ã«èŠçŽ ãåé 眮ããæ©äŒãäžããããŸãã
ããã§ãäžè¬çãªãœãªã¥ãŒã·ã§ã³ãå®åŒåã§ããŸãã
- é åpå šäœããµã€ã¯ã«ã«åå²ããŸãã
- aiãšbiã®ããããã«ã€ããŠãaiãšbiãåããµã€ã¯ã«ã«ããå ŽåããŸãã¯æåã®èŠçŽ ãäžæ¹ã®ãµã€ã¯ã«ã«ããã2çªç®ã®èŠçŽ ãä»æ¹ã®ãµã€ã¯ã«ã«ããå Žåãçãã¯ãã¯ããã§ãã
ãµã€ã¯ã«ãžã®åå²ã¯æ¬¡ã®ãšããã§ãã
// col, â1. vector<int> col(n, â1); // , , for (int i = 0; i < n; i++) { if (col[i] != â1) continue; // int x = i; do { col[x] = i; // x = a[x]; } while (col[x] == â1); }
æåã®2ã€ã®ãµã€ã¯ã«ã1ã€ã«çµåããŸãã
for (int i = 0; i < n; i++) if (col[i] == 0) col[i] = 1;
ãã®çµæãcolã®é åãåŸããããã®
for (int i = 0; i < m; i++) { int a, b; cin >> a >> b; // , . cout << ((col[a â 1] == col[b â 1])? «Yes» : «No») << «\n»; }
Corå åŒ
åé¡ã®ç¶æ³ã«å¿ããŠã2ã€ã®éŠéœãšç¹å®ã®æ°ã®éœåžããããéè·¯ã§æ¥ç¶ãããŠãããããã©ã®éè·¯ããã§ãå¯äžã®éè·¯ããããŸãã ãããããããã¯ãåéè·¯ã«ç€ºãããŠããç¹å®ã®æ°ã®è»ãééããåŸãæ è¡ã«é©ããªãã»ã©ã®å質ã§ãã 2ã€ã®éœåžã®éã«åž¯åå¹ ãç¡å¶éã®å¥ã®ïŒããããéè€ããïŒéè·¯ãè¿œå ããããšã決å®ãããŸããã ãã®æ°ããéè·¯ãèæ ®ããŠã2ã€ã®éŠéœéãèµ°è¡ã§ããè»ã®æ倧æ°ãèŠã€ããå¿ èŠããããŸããåé¡ã®è©³çŽ°ãªå£°æã¯ããã·ã¢ã³ãŒãã«ããã®å ¬åŒãŠã§ããµã€ãã®ã©ãŠã³ãããŒãžã«ãããŸã ã
ãã®ã¿ã¹ã¯ã¯ããæåŸããã2çªç®ã«é£ããããšãå€æããŸããã313人ã解決ããŸããã æåã®æ£ãã決å®ã¯ã12ïŒ50ã«Dmitry Zhukovã«ãã£ãŠéä¿¡ãããŸããã
åé¡ã«ã¯ãéã¿ã®ããç¡åããªãŒããããŸãã ã€ãŸããã«ãŒããšè€æ°ã®ãšããžããªãããã®ãšããžïŒãéè·¯ãïŒããéã¿ãã§æžãããŠããã°ã©ã-éè·¯ã®ã¹ã«ãŒãããã
2ã€ã®ããŒã¯ã匷調衚瀺ãããŸã-ãè³æ¬ã-sããã³tã sããtãžã®ãããŒãæ倧ã«ãªãããã«ãsãŸãã¯tã«åœ±é¿ããªããšããžãè¿œå ããå¿ èŠããããŸãã
é ç¹aããé ç¹bã«ãšããžãè¿œå ããŸãããã sãštã®éã«æ倧2ã€ã®åçŽãªãã¹ãååšããããšã蚌æããŸãããïŒãã¹ã¯ããã®ãšããžãç¹°ãè¿ãããªãå ŽåãåçŽãšåŒã°ããŸãïŒã ç§ãã¡ã¯å察ãã蚌æããŸãã 3ã€ã®æ¹æ³ãèŠã€ãããšããŸãã
次ã®2ã€ã®å ŽåãèããŸãã
- ãã®ãã¡ã®å°ãªããšã2ã€ã«ã¯ããšããžabããããŸãã ããã«ã2ã€ã®ã±ãŒã¹ããããŸãã
- ãªãã¯äž¡æ¹ã®æ¹åã§äžæ¹åã«ã³ã¹ããããããŸãã æ¹åa-> bã®ãããããåããšãèæ ®ãããäž¡æ¹ã®ãã¹ã«ãµããã¹<sãå«ãŸããŸãã a; b; t>ã ãããã®ãã¹ã¯çãããªãããããµããã¹<sã¯çãããããŸããã a>ããŸãã¯<b; t>ã ã©ã¡ãã®å Žåããããã¯ãããªãŒã®é ç¹éã«2ã€ã®ç°ãªããã¹ãããããšãæå³ããŸããããã¯ããã®ããããã£ãšåé¡ã®ç¶æ ã«ççŸããŸãã
- ãªãã¯å察æ¹åã«é²ã¿ãŸãã ãã®å ŽåãããªãŒã®ãµã€ã¯ã«ã¯<sã§ãã a; t; b; s>ã¯ãåé¡ã®ç¶æ ãšããªãŒã®ããããã£ãšãççŸããŸãã
- ãšããžabã¯ãã®ãã¡ã®1ã€ã ãã«ãããŸãã 次ã«ãæ®ãã®2ã€ã®ãã¹ããµã€ã¯ã«ã圢æãããããã£ãŠãããªãŒå ã®åçŽãªãµã€ã¯ã«ã圢æããŸãããããã¯åé¡ã®æ¡ä»¶ã«ãããã®ã§ã¯ãããŸããã
ãã®çµæããšããžabãè¿œå ãããšã2ã€ä»¥äžã®åçŽãªãã¹ã衚瀺ããããã®ãã¡ã®1ã€ã ãããšããžabãæã¡ããã1ã€ã¯æããã«ããªãŒã®ãšããžã«æ²¿ã£ãŠééãããããé ç¹éœåžéã®å¯äžã®ãã¹ã§ããããšãããããŸããã
ãšããžabãéã2çªç®ã®ãã¹ãèããŸãã äžç«¯ã§ã¯ããã®ãšããžã¯é ç¹sãžã®ãã¹ã«æ¥ç¶ãããä»ç«¯ã§ã¯é ç¹tãžã®ãã¹ã«æ¥ç¶ãããŸãã ããã§ãabãš<s; a>ã®ãžã£ã³ã¯ã·ã§ã³ãsã«è¿ãããŒãã«ç§»åããŠããã¹ã«ãŒãããã¯äœäžããŸããã åæ§ã«tãžã®éã«ã€ããŠè°è«ããåé¡ã®å¶çŽãæãåºããŠãè³æ¬ããŒãsãtãããã³ãšããžabãæãå¹æçãªåœ¢ã§ééããæ°ãããã¹ã¯ãsããã®ãšããžãsããabããã³tããã®ãšããžã
ãã®çµæãçãã¯2ã€ã®ãã¹ã§æ§æããã1ã€ã¯ãšããžabãè¿œå ããåã«ååšãããã1ã€ã¯sããã®ãšããžããšããžabãtã®ãšããžã§ããããšãããããŸãã
ãœãªã¥ãŒã·ã§ã³ãååŸããŸãã
- ããªãŒã®ãšããžã«æ²¿ã£ãŠsããtãžã®ãã¹ãèŠã€ãã
- ããã«æ²¿ã£ãŠè»ã®æ倧æ°ãã¹ãããããããã«å¿ããŠãéã«æ²¿ã£ãŠãã¹ãŠã®rib骚ã®ã¹ã«ãŒããããæžãããŸãã ãã®å Žåãæ倧æ°ã®ãã·ã³ããã¹ã«å«ãŸãããšããžã®æå°ã¹ã«ãŒãããã«å¯Ÿå¿ããããããã¹ã¯ééããªã厩å£ããŸãã
- sãštããããå€ãã®éè·¯ïŒãŸãã¯1ã€ã®éè·¯ïŒãååšããå¯èœæ§ããããŸãã æ倧ã¹ã«ãŒããããæã€ãã®ãéžæããŸãã
- ãããããšããžabã§æ¥ç¶ããŠãè»ã®æ°ãèšç®ããŸããããã¯ãéŠéœãé¢ãã2ã€ã®rib骚ã®ã¹ã«ãŒãããããã®æå°å€ã§ãã
ãœã·ãªãã©ã
åé¡ã®æ¡ä»¶ã¯ãæå°éã®åæžã§ããã«ããããããšã§ããããã¹ãŠã®äººãåžžã«çŸ€è¡ã®äžã«ããããšãåãã§ããããã§ã¯ãããŸããã å€ãã®äººãå€ç¬ãæãããã®ä»£äŸ¡ãæã£ãŠãæ§ããªããšæã£ãŠããŸãã OJSCãJoyful Railwaysãããã±ãã販売ãŠã§ããµã€ãã§ãSociophobeããšåŒã°ããæ°ãããµãŒãã¹ãå°å ¥ããã®ã¯ãã®ããã§ãã ãã®ãµãŒãã¹ã¯ãåä¹å®¢ãå¯èœãªéãå°ãªãæ°ã®é£äººã®ããåºç»ã«ä¹ãããšãã§ããããã«ããããã«å¿ èŠã§ãã ãã®æ¬è³ªã¯æ¬¡ã®ãšããã§ãã
ãã±ããã¯ãã³ã³ããŒãã¡ã³ãã®äžéšããã§ã«æºããããŠããå°è»ã§è²©å£²ãããŸãã ããæç¹ã§å¥ã®ä¹å®¢ããã®è»ã®ãã±ãããè³Œå ¥ãããšãæã空ããŠããåºç»ãã€ãŸãä»ã®ãã¹ãŠã®äººãããå€ãã®äººãããªãåºç»ã§åº§åžã販売ãããŸãã ãã®ãããªã³ã³ããŒãã¡ã³ããè€æ°ããå Žåãæãå°ããçªå·ã®ã³ã³ããŒãã¡ã³ããéžæãããŸãã ãã ããããããã®ã³ã³ããŒãã¡ã³ãã®ä¹å®¢ããã±ãããçºè¡ãããšããã®ã³ã³ããŒãã¡ã³ããšæãæºå¡ã®ã³ã³ããŒãã¡ã³ãã®äººæ°ã®å·®ãå°ãªããšã2ã«ãªã£ãå Žåãä»ã®ã³ã³ããŒãã¡ã³ãã®åã«ãã±ãããè³Œå ¥ããä¹å®¢ã¯ãæãæºå¡ã®ã³ã³ããŒãã¡ã³ããã空ããŠããã³ã³ããŒãã¡ã³ãã«è»¢éãããçªå·ãæãå°ããä¹å®¢ãããŸãã æããã£ã±ãã®åºç»ãè€æ°ããå Žåããã±ãããé ãããåºç»ã«æãè¿ãåºç»ãéžæãããŸãã ãããŠãããããè€æ°ããå Žåãæãå°ããçªå·ã®ã³ã³ããŒãã¡ã³ããéžæãããŸãã
ä¹å®¢ããã±ãããè³Œå ¥ããŠé åžããæ¹æ³ã«å¿ããŠãã³ã³ããŒãã¡ã³ãå ã®ä¹å®¢ã®æçµçãªååžã衚瀺ããå¿ èŠããããŸãã ä¹å®¢ããã±ãããè³Œå ¥ãããã³ã«ãè»å ã«å°ãªããšã1ã€ã®ç¡æ座åžãããããšãä¿èšŒãããŠããŸãã
åé¡ã®åè»ã¯æ¬åœã«å·šå€§ãªããã§ãããªããªãããã±ããã®è²©å£²ãšãã±ããã®è¿åŽã®æ°ã¯æ倧200,000ãã¯ãŒãã®æ°ã¯æ倧50,000ã§ããããã§ãã
åèšã§167人ããã®åé¡ã解決ããŸãããæåã®äººã¯Pavel KuniavskyïŒ23:19ïŒã§ããã
ãã®åé¡ã®è§£æ±ºçã®1ã€ã¯æ¬¡ã®ãšããã§ãã 次ã®ããŒã¿æ§é ãæºåããŸãã
// , . Pas[i] = , -1 « ». vector<int> pas(200000+1, -1); // â . Cars[i] vector< set<int> > cars(50000 + 1);
ãŸãã2ã€ã®ã»ããããµããŒãããŸãïŒããšãã°ãC ++ã§ã¯ããã®ããã«Javaã®TreeSetã§setã䜿çšã§ããŸãïŒïŒ0ãš1ã ãŒãã§ã¯ãä¹å®¢æ°ãæãå°ãªãã³ã³ããŒãã¡ã³ãçªå·ãæ ŒçŽãã1ã€ã§ã¯-æãå€ãã³ã³ããŒãã¡ã³ãçªå·ãæ ŒçŽããŸãã
set<int> zero; set<int> one;
æåã¯ããã¹ãŠã®ã³ã³ããŒãã¡ã³ãã空ã§ãããããããããå¡ãã€ã¶ãã®åè£ãªã¹ãã«å ¥ããŸã-ãŒãã
for (int i = 1; i <= n; i++) zero.insert(i);
ç°ãªãåºç»ã®ä¹å®¢æ°ã®å·®ã1ãè¶ ããããšã¯ãªããããä»ã®äººã¯å¿ èŠãããŸããã
ãã±ãã販売æäœïŒã+ãïŒã åé¡ã®ç¶æ³ã«å¿ããŠãæã人æ°ãå°ãªãè»ãéžæããå¿ èŠããããŸãã ãããè¡ãã«ã¯ãèšå®ããããŒãã®æå°èŠçŽ ãååŸããŸãã pasãšcarsã®æ å ±ãããããæŽæ°ããŸãã 次ã«ãèŠã€ãã£ãèŠçŽ ã0ããåé€ããŠ1ã«è¿œå ããŸããããã¯ããã®è»ã«ã¯ãã¹ãŠã®è»ã1ã€ã«äžŠãã§ããã®ãšåãæ°ã®äººãããããã§ãã ãŒãã空ã«ãªã£ãå Žåããã¹ãŠã®ã¯ãŒãã¯åã人æ°ã§ããããã1ãš0ã亀æããå¿ èŠããããŸãã
int car = *zero.upper_bound(0); // pas[++id] = car; // cars[car].insert(id); // zero.erase(car); // one.insert(car); // ⊠if (zero.empty()) // , ⊠{ zero = one; // zero.erase(-n); zero.erase(2 * n); one.clear(); // one.insert(-n); one.insert(2 * n); }
ãã±ããé ä¿¡æäœïŒ "-"ïŒã pasé åã䜿çšããŠãä¹å®¢ãã©ã®ã³ã³ããŒãã¡ã³ãã«åº§ã£ãŠãããã調ã¹ãŸãã 察å¿ããã³ã³ããŒãã¡ã³ãããä¹å®¢ãåãé€ããŸãã
int car = pas[x]; cars[car].erase(x); pas[x] = â1;
è»ã®ã¯ãŒãã«å±ããŠãããã®ãã芧ãã ããã 以äžã®ãªãã·ã§ã³ããããŸãã
- 1ã€ã®ã»ããã«å±ããŠãã-ãå¡ãã€ã¶ãããã³ã³ããŒãã¡ã³ããã 次ã«ãXã1ã€ããåé€ããŠ0ã«è¿œå ããŸããã€ãŸããã³ã³ããŒãã¡ã³ããæªå ¥åã«è»¢éããŸãã
- ãŒãã®ã»ããã«å±ãã1ã®ã»ããã¯ç©ºã§ãã 次ã«ããã¹ãŠãŒãïŒå å¡«ã®ç³è«è ïŒã1ïŒå å¡«æžã¿ïŒã«è»¢éããä¹å®¢ãåºãåºç»ã®ã¿ããŒãã®ãŸãŸã«ããŸãã
- ãŒãã®ã»ããã«å±ãã1ã®ã»ããã¯ç©ºã§ã¯ãããŸããã ããã¯ãã³ã³ããŒãã¡ã³ãã®ä¹å®¢æ°ã®å·®ã2ã«çãããªãç¶æ³ãçºçããå¯äžã®ã±ãŒã¹ã§ãã ãããè¡ãã«ã¯ãã»ãã1ã§ãæåã®ã³ã³ããŒãã¡ã³ãïŒçªå·ãã³ã³ããŒãã¡ã³ãããã倧ããïŒãšãæåŸã®ã³ã³ããŒãã¡ã³ãïŒçªå·ãã³ã³ããŒãã¡ã³ããããå°ããïŒãèŠã€ããŸãã 次ã«ãèŠã€ãã£ãããã2ã€ã®ã¯ãŒããããæãè¿ãã¯ãŒããéžæããŸãã ã»ãã1ïŒå ¥åæžã¿ïŒããã»ãã0ïŒãå¿åè ãïŒã«è»¢éããŸãã ãŸããè»ã®ã¯ãŒãã®é åãšä¹å®¢ã®ãã¹ã®é åã®ä¿®æ£ãè¡ããŸãã
set<int>::iterator ll = (one.upper_bound(car)); ll--; // , set<int>::iterator rr = (one.upper_bound(car)); // , if (abs(*ll - car) > abs(*rr - car)) // ll = rr; int l = *ll; one.erase(l); zero.insert(l); // one zero int p = *cars[l].upper_bound(0); cars[l].erase(p); cars[car].insert(p); // pas[p] = car;
ã¿ã¹ã¯ãžã®åçã衚瀺ããã«ã¯ãcarsé åã䜿çšããŸãã
cout << cars[i].size() << ((cars[i].size() == 0) ? "\n" : " ");
ãããŠãå€ãã®è»ã«å±ãããã¹ãŠã®ä¹å®¢[i]ã
set<int>::iterator en = cars[i].end(); en--; for (set<int>::iterator it = cars[i].begin(); it != cars[i].end(); it++) cout << *it << ((it == en) ? "\n" : " ");
硬貚
åé¡ã®ç¶æ³ã«å¿ããŠãããéè¡åž«ã®ãªã³ã»ãŠã£ããã¯ã³ã€ã³ãæ··åããäŸãã°ãããã³ã§æ¯æã代ããã«ãã¹ã¿ãŒãªã³ã°ãã«ãŠã³ãããŸãïŒåæã«ã圌ã¯æ¬ç©ã®ã¹ã¿ãŒãªã³ã°ã§æ¯æããŸããïŒã ã³ã€ã³ã®ãã¢ãããã€ããããèšç®ããå¿ èŠããããŸãããã®ãããæåã®ã³ã€ã³ã2çªç®ã«åã£ãŠãèšç®ãããšãããSã§ã¯ãªãTãã«ãæ£ç¢ºã«æ¯æãããšãã§ããŸãã説æã®ããã«äŸã瀺ããŸãã æµéããŠãã1ã2ã3ãã«ã®ç¡¬è²šããããRiswindã9ã§ã¯ãªã10ãã«ãæ¯æã£ãå Žåã1ã®ç¡¬è²šã«å¯ŸããŠ2ã®ç¡¬è²šãåãå ¥ããããšãã°2ã®ç¡¬è²š4æãš2ã®ç¡¬è²š1æãæ¯æãããšã§ãããè¡ãããšãã§ããŸã圌ã¯é¡é¢ã1ãã®ããã«ãããåã£ãã
圌ã¯ãŸãã2ã®å®æŽŸã®ã³ã€ã³ã«å¯ŸããŠ3ã®å®æŽŸã®ã³ã€ã³ãåãå ¥ãã1ã®å®æŽŸã§7ã³ã€ã³ã3ã®å®æŽŸã§1ã³ã€ã³ãæ¯æããããã2ã®å®æŽŸã§ã³ã€ã³ãšããŠåããŸããã
å®éã«é¡é¢ã§æ¯æãããéé¡1 | åç®å€2ã§å®éã«æ¯æãããéé¡ | é¡é¢éé¡3ã§å®éã«æ¯æãããéé¡ | æ¯æç·é¡ |
- | ã»ããšã«
4ã³ã€ã³ ïŒ8ãã«ã4Ã2ïŒ 1ã³ã€ã³ ïŒ2ãã«ã2Ã1ïŒ Riswindã®èŠè§£ã§ã¯- 1ãã«ïŒ1Ã1ïŒ | - | ã»ããšã«
5ã³ã€ã³ ïŒ10ãã«ã4Ã2 + 2Ã1ïŒ Riswindã®èŠè§£ã§ã¯- 9ãã«ïŒ4Ã2 + 1Ã1ïŒ |
ã»ããšã«
7ã³ã€ã³ ïŒ7ãã«ã7Ã1ïŒ | - | ã»ããšã«
1ã³ã€ã³ ïŒ3ãã«ã3Ã1ïŒ Riswindã®èŠè§£ã§ã¯- 2ãã«ïŒ2Ã1ïŒ | ã»ããšã«
8ã³ã€ã³ ïŒ10ãã«ã4Ã2 + 1Ã1ïŒ Riswindã®èŠè§£ã§ã¯- 9ãã«ïŒ4Ã2 + 2Ã1ïŒ |
Rincewindãsã®ã³ã€ã³tãåã£ããšä»®å®ããŸãã æåŸã®äŸã§ã¯ãã³ã€ã³3ïŒtïŒã2ïŒsïŒã§ãã ããã¯ãã³ã€ã³sïŒãã®äŸã§ã¯$ 7ïŒã䜿çšããã«ç¹å®ã®éé¡VïŒäŸã§ã¯$ 10ïŒãç²åŸãããã®åŸãå¥ã®kã³ã€ã³çªå·tïŒäŸã§ã¯1ã³ã€ã³ïŒ 3ãããã2ã ãšæã£ãŠã
ã€ãŸããããŸããŸãªãªãã·ã§ã³ã2ã€ã®ã±ãŒã¹ã°ã«ãŒãã«åãŸããŸãã
- æŽæ°Vâ¥0ããã³k> 0ããããS = V + kã»asããã³T = V + kã»atã§ããããã§ãTã¯å®éã«æ¯æãããéé¡ã§ãSã¯Riswindè¡šçŸã®éé¡ã§ãã
- Vã®åèšã¯ãã³ã€ã³sã䜿çšããã«å ¥åã§ããŸãã
æåã®æ¡ä»¶ã¯OïŒ1ïŒã§æ€èšŒã§ããŸãã ã«æ³šæããŠãã ãã
k =ïŒS-TïŒ/ïŒas-atïŒ;
V = S-k
åŸãããæ°å€ãæŽæ°ãVâ¥0ãk> 0ã§ããããšãæ€èšŒããããšã¯æ®ã£ãŠããŸãã
2çªç®ã®æ¡ä»¶ã確èªããããã«ãåçèšç»æ³ã䜿çšããŸãã D [i] [j]ãšãã-æåã®iåã®ã³ã€ã³ã䜿çšããŠåèšjãååŸããããšã¯å¯èœã§ããïŒ ããŒã¹ïŒD [0] [0] = trueã é·ç§»ïŒD [i] [j] = D [i-1] [j]ãŸãã¯D [i] [j-ai]ã å®è£ ã«ã¯ããµã€ãºSã®1ã€ã®é åã§ååã§ããããã®ã¢ã«ãŽãªãºã ã®å®è¡æéã¯OïŒSã»nïŒã§ãã åçããã°ã©ãã³ã°ã䜿çšããã¢ãããŒãã®è©³çŽ°ãªèª¬æã«ã€ããŠã¯ã æåŸã®ã©ãŠã³ãããã®ã¿ã¹ã¯ã®åæã ããã³äŸãšå³ãå«ãåªããè³æãåç §ããŠãã ããã
説æããæ¹æ³ã䜿çšããŠãRinncewindãã³ã€ã³sã䜿çšããã«ãã®åèšãåéã§ãããã©ãããã1ããSãŸã§ã®åèšVã«ã€ããŠèšç®ããŸãã ãã®åŸãRincewindãåã£ãã³ã€ã³ãæŽçããŸãã ããã§ãOïŒ1ïŒã®äž¡æ¹ã®æ¡ä»¶ã®æ€èšŒãå®è¡ãããŸãã çµæãšããŠåŸããã解ã®æŒžè¿æåã¯OïŒSã»n2ïŒã§ãã
ãã³ã€ã³ãã®ã¿ã¹ã¯ã¯ã17ïŒ06ã«Peter Mitrichevã«ãã£ãŠæåã«è§£æ±ºãããŸããã åèšã§234ã®æ£ãã決å®ãããããã®ã¿ã¹ã¯ã¯è€éãã®ç¹ã§æåŸãã3çªç®ã«ãªããŸããã
è¡è§£æ
ãã®åé¡ã¯ãç¹å®ã®ããã¹ãããã®èªåœåèªã®æ€çŽ¢ã¢ã«ãŽãªãºã -çºèŠãããåèªããã®ããã¹ãããåé€ããããã³ã«ããããã欲匵ãã¢ã«ãŽãªãºã ã«ã€ããŠèª¬æããŸãã å Žåã«ãã£ãŠã¯ããã®ã¢ãããŒãã誀ã£ãçµæã«ã€ãªãããšããäŸã瀺ãããŠããŸãã ããšãã°ãworkingrassã®å Žåãworkingã¯åé€ãããäžéšã®rassããããŸãããæ£ãã解決çã¯ãwork / in / grasã®3ã€ã®åèªã«åå²ãããããããèŸæžã«å ¥ããããšã§ãã 貪欲ãªã¢ã«ãŽãªãºã ãæå®ãããèŸæžã§æ£ããæ©èœãããã©ããã確èªããå¿ èŠããããŸããæ£ãããªãå Žåã¯ãèŸæžããã®åèªåå²ãååšãããã説æãããã¢ã«ãŽãªãºã ã§ã¯èŠã€ãããªãæååã®äŸã瀺ããŸãã ãã®ãããªäŸãè€æ°ããå Žåã¯ãæãçããã®ãã€ãŸãé·ããä»ã®éšåããé·ããªããã®ãèŠã€ããå¿ èŠããããŸãã è€æ°ããå Žåã¯ããããããå°å·ããå¿ èŠããããŸãããŸããåé¡ã®è§£æ±ºã«ã€ãªããéèŠãªã¢ã€ãã¢ãæ€èšããŸãã æååt-æçé·ã®å¿ èŠãªåäŸãšãèŸæžw 1 ãw 2 ã...ãw kããã®åèªãžã®åå²ããããšããŸãã ãã®è¡ã調ã¹ãéã«ç Žå£ããããšããŠãã貪欲ãªããŒãµãŒããæååwãæåã«ãé£ã蟌ãŸãããŸãã
次ã®ã¹ããŒãã¡ã³ãã蚌æããŸããããæååã®é·ãwãæååã®é·ãw 1 ãw 2 ã...ãw k-1ã®åèšããã倧ãããªãå ŽåãæååtããçãåäŸããããŸãã
ãŸããæååtã®é·ãããã®åèšã«çããããŸãã 次ã«ãæååwãæåã«ãåã¿ä»ããŠããããæååtãèŸæžã«å«ãŸããæãé·ãæååãã¬ãã£ãã¯ã¹ã§ãããããæååtã§è²ªæ¬²ãªããŒãµãŒãæ£ããåäœããããšã¯æããã§ãã
ãã®å Žåãæååã®é·ãwãæååã®é·ãw 1 ãw 2 ã...ãw k-1ã®åèšãããå°ããããŸãã 次ã«ãw jãæ¥é èŸw j1ãšæ¥å°ŸèŸw j2ã«åå²ãããw j1ãæååwã®æ¥å°ŸèŸïŒé·ãããŒãã®å ŽåãããïŒã§ãããããªçªå·jãååšããŸãã æååw j2ãèããŸãã 圌女ã®ããã«èŸæžããåèªãžã®æ£ããããŒãã£ã·ã§ã³ãããå ŽåãåäŸãšããŠãè¡j j2 ãw j + 1 ãw j + 2 ã...ãw kã®é£çµãæ®ãã ãã§ååã§ããããã¯ããçãåäŸã«ãªããŸãã æååw j2ã«å¯Ÿã㊠ãèŸæžããã®åèªåå²ãååãšããŠååšããªãå ŽåãçãåäŸã¯æååw 1 ãw 2 ã...ãw jã®é£çµã§ãã

ã ãããä»ãç§ãã¡ã¯æãŸããåäŸãã©ã®ããã«èŠãããæ³åããããšãã§ããŸãã

ãã®æ§ç¯ã«æå¹ãªã¢ã«ãŽãªãºã ãéçºããŸãã èŸæžã®åè¡ã«ã€ããŠãã©ã®æ¥å°ŸèŸãšæ¥é èŸãèŸæžããã®åèªã«åé¡ãããŠãããã確èªããŸãïŒãã®ããŒã¿ã®èšç®æ¹æ³ã«ã€ããŠã¯åŸã§èª¬æããŸãïŒã ãã£ã¯ã·ã§ããªã®ãã¹ãŠã®è¡ããœãŒãããŠãããããæåã«ãåã¿ä»ãããwè¡ã§ãããã©ããã確èªããŸãã æ£ããããŒãã£ã·ã§ã³ããæåŸãã2çªç®ã®è¡ã¯ãããŒãã£ã·ã§ã³ãããè¡ãã¬ãã£ãã¯ã¹wãçµããåãå Žæã§ã®ã¿çµäºã§ããããšã¯æããã§ãã ãã®ãããªãã¹ãŠã®ãã¬ãã£ãã¯ã¹ã«ã€ããŠèª¬æããŸãã ããã§ãåäŸã®æ£ããåå²ã®æåŸã®è¡ãç解ããã ãã§ãã ãŸãããããã¯ããã§ãã¯å¯Ÿè±¡ã®æååã®ãŸã ã«ããŒãããŠããªãæ¥å°ŸèŸwã®é·ããããé·ãè¡ã§ããå¿ èŠããããŸãã 第äºã«ãæååwã®ã«ããŒãããŠããªãæ¥å°ŸèŸã¯ã察å¿ããé·ãã®ããŒãã£ã·ã§ã³ã®æåŸã®å Žæã®åè£æååã®æ¥é èŸãšæ£ç¢ºã«äžèŽããå¿ èŠããããŸãã ãããŠæåŸã«ãæååwã§ã«ããŒãããŠããªãåè£æååã®æ¥å°ŸèŸã«ã¯ãèŸæžããã®åèªãžã®æ£ããåºåãããªãã¯ãã§ãã
ããã§éèŠãªãã€ã³ãã1ã€æããã®ãé©åã§ãã åè£æååã®ã«ããŒãããŠããªãæ¥å°ŸèŸãèŸæžããåèªã«åå²ããããšããŠããçŸåšãã§ãã¯ããŠããããšã¯åäŸã«ãªããŸãã ãã ãããµãã£ãã¯ã¹èªäœãåäŸã«ãªãããã§ãã¯ããã®ã¯æ¢ããŠããæçã®åäŸã§ã¯ãªããèå³ããããŸããã

åé¡ã解決ãããã®ã¢ãããŒãã§ã¯ããã1ã€è³ªåããå¿ èŠããããŸãã ãããŠããã§ãã¯ããŠããè¡wã®ä»£ããã«ãæåã®è¡ãwãæ¥é èŸã§ããå¥ã®è¡ã«ãåã¿ä»ãããå Žåãã©ããªããŸããïŒ ãã®å Žåã貪欲ãªããŒãµãŒã¯äºæž¬ã§ããªãåäœãããäœããã®ããŒãã£ã·ã§ã³ãèŠã€ããå¯èœæ§ããããŸãã ãã ãããã®éåœãåé¿ããã«ã¯ãè¡ã®é·ããå¢å ããªãé ã§wæååã§ãªããã©ããã確èªããæ¢ã«ç¢ºèªããè¡ãèŠããŠããå¿ èŠããããŸãã 次ã«ããã®ãããªåé¡ãçºçããå¯èœæ§ã®ããåè¡ã¯ãåé¡ãçºçããæéãŸã§ã«ãã§ãã¯ããããã®è¡ã¯åçŽã«ç¡èŠã§ããŸãã
åé¡ã解決ããããã®äžè¬çãªã¢ã«ãŽãªãºã ãçšæãããã®ã§ãæ¥é èŸãšæ¥å°ŸèŸã®å£ããããããã§ãã¯ããåé¡ã解決ããå¿ èŠãªè¡ã®å¿ èŠãªéšåæååããã°ããæ¯èŒããŠåçã«ããæ¹æ³ãåŠç¿ããŸãã 2çªç®ã®åé¡ã¯ãããèªäœãå¥ã®èšäºãŸãã¯è¬çŸ©ã®ãããã¯ã§ããããã·ã¥ã¢ã«ãŽãªãºã ã®å©ããåããŠéåžžã«ç°¡åã«è§£æ±ºãããŸãã æåã®ã¿ã¹ã¯ã¯ãåçããã°ã©ãã³ã°ã䜿çšããŠè§£æ±ºãããŸãã æååtã®ãã¹ãŠã®ãã¬ãã£ãã¯ã¹ã«ã€ããŠããã®é·ããå³å¯ã«lããçãå ŽåãèŸæžããã®è¡ãžã®åå²ããããã©ããã確èªããŸãã é·ãlã®ãã¬ãã£ãã¯ã¹ã®ããŒãã£ã·ã§ã³ããããã©ããã確èªããã«ã¯ãèŸæžãããã¹ãŠã®è¡ãæŽçãã2ã€ã®ã¹ããŒãã¡ã³ããçã«ãªãããã«ååšã確èªããã ãã§ååã§ãã
- 察å¿ããé·ãã®èª¿æ»æžã¿æ¥é èŸã®æ¥å°ŸèŸã¯ãèŸæžããã®è¡ãšæ£ç¢ºã«çãã
- 察å¿ããé·ãã®èª¿æ»æžã¿æ¥é èŸã®æ¥é èŸã¯ãèŸæžããã®åèªã«åå²ãããŸã
, O(sumL Ã n), sumL â , n â , , . , .
« » ( ) « », , â 115:47.
, , . , / , . , , , . , , , â Impossible.
, , x , x â . : (0, 0) (x, y) y, ( ), ( ) (). .

, , , . , , .
, . , , «» , . , . . , - . . , .
, . , . , . , , , , - . , . , , . x, . , , .
, , . O(n2 log n) , O(n) O(n) O(n) . O(n log n) , O(n) .
, .

ãããŠ

.

â 23 , â 100:18. , , â , 2 . , .
50 . 10 Swissotel, . , , , .
ã¢ãªãšãã»ã©ãŠã
Mail.Ruã°ã«ãŒã