NoviSteps2Q
é¢ç½ãã£ããpriority queue ã¨ããå ¨ä½ã«åæ ãããå¤ãå¥ã«ãã¤ããã¯ããã¯ãå¦ã¹ãåé¡ã åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ ã¯ãããä½ãå ¥ã£ã¦ããªãè¢ããããæ¬¡ã® åã®ã¯ã¨ãªã«çããã ã¯ã¨ãªã¿ã¤ã 1ï¼è¢ã«ã ã¨æ¸ããããã¼ã«ãå ¥ãã ã¯ã¨ãªã¿ã¤ã 2ï¼è¢â¦
ãããå ¨æ¢ç´¢ã®ç·´ç¿åé¡ãå°ãåé¡å 容ãçè§£ããã®ã«æããããããããªãã åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ ãã§ã« åã®åºãåºåºãã¦ããååºè¡ã§ãæ°ãã«åºãéããã¨ãã¦ããã ã©ã®åºã«ã¤ãã¦ã 10 åã®æé帯ããããããããã«ã¤ã㦠openã»close ãé¸ã¶ãâ¦
å ¨æ¢ç´¢æèã«æ £ãã¦ããããã°ã ã®è§£æ³ãªãããã«æãã¤ããå°ã工夫ãã¦ã ã®è§£æ³ã«ãªãï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ é·ã ã®æ°å ãä¸ãããããæ°å ã®é¨åæ°å ã§ãã£ã¦ ãçå·®æ°åã§ãã ã§ãã ã¨ããæ¡ä»¶ãæºãããã®ãèããããããã®æ°åã®æå¤§é·â¦
ãåºéã®å¤ã®åããè¦ãããç´¯ç©åãã¨ããï¼ï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ æ°å ã¨æ´æ° ãä¸ããããã æ°åã®é£ç¶ããåºéã§ãã£ã¦ããã®ç·åã ã«ä¸è´ãããã®ãä½åããããæ±ããã å¶ç´ èããã㨠0-indexed ã§èããã æ°å ã®ç´¯ç©åã ã¨ãããããã®â¦
ãå ¨ä½ã«è¶³ããã®ã¯é£ãããããè¶³ãå¤ãå¥éæã£ã¦ããã¨ããã¹ãã«ï¼ï¼ï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ 以ä¸ã® åã®ã¯ã¨ãªã«çããã ã¯ã¨ãªã¿ã¤ã 1ï¼æ°ãã«è¦ç´ 0 ãæ¿å ¥ããï¼éè¤ãããï¼ ã¯ã¨ãªã¿ã¤ã 2ï¼ãã§ã«æ¿å ¥ããã¦ãããã¹ã¦ã®è¦ç´ ã« ãè¶³ã ã¯ã¨â¦
ããããæ¢ç´¢ç³»ã¯ã¿ããªè¦æã¨ããã¤ã¡ã¼ã¸ã ã£ããã©ãçµæ§ Difficulty ä½ãã®ãã åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ ã°ãªããã§ãåãã¹ã¯ã空ããã¾ãã¯ãå£ãã§ããã ãã空ããã¹ãåºçºããä¸ä¸å·¦å³ã«é£æ¥ãããã¹ã¸ã®ç§»åã åè¡ãæ¹æ³ã§ãã£ã¦ãé害ç©ã®ããâ¦
åé¡ãè¨ãæããã®ãå°ãé£ãã åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ é ç¹æ° ã®æ¨ãä¸ããããï¼é ç¹çªå· ï¼ã ãã®æ¨ã«å¯¾ãã¦ãèã 1 ã¤é¸ãã§åé¤ãããã¨ããæä½ãç¹°ãè¿ããé ç¹ 1 ãåé¤ããã¾ã§ã®æä½åæ°ã®æå°å¤ãæ±ããã å¶ç´ èããã㨠0-indexed ã§èãâ¦
é¢ç½ããåå¤ã«å¯¾ããçããäºãæ´çãã¦æ±ãã¦ããææ³ã¯é »åºï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ åã®åç©ããããåç© ã¯ãéãã ã§ããã価å¤ã ã§ããã ããã¤ãã®åç©ããç·åã 以ä¸ã¨ãªãããã«é¸ã¶ã¨ããé¸ãã åç©ã®ä¾¡å¤ã®ç·åã®æå¤§å¤ãæ±ããã å¶ç´ â¦
ãã®æä»£ããã®æã® Greedy ã¯ãããããã£ãã®ãï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ é·ã ã®æ°å ãä¸ããããããæ°åã®è¦ç´ ã 1 ã¤é¸ã³ã+1 ãããã-1 ãããã¨ããæä½ãè¡ããã¨ã§ã次ã®ç¶æ ãéæãããããã ãã ã¨ããã ãã¹ã¦ã® ã«å¯¾ãã¦ã ã§ãã ãã¹â¦
ãx 軸㨠y 軸ãç¬ç«ã«èãããããã¨ã主客転åã»å¯ä¸åè§£ãã®åããæï¼ï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ 座æ¨å¹³é¢ä¸ã«ã æ¬ã®ç´ç· ã¨ã æ¬ã®ç´ç· ãããã ãããã®ç´ç·ã®ãã¡ 4 æ¬ãé¸ãã§ã§ããé·æ¹å½¢é å㯠åãããããããã®é¢ç©ã®ç·åã 1000000007 ã§å²â¦
座æ¨å¹³é¢ä¸ã® æ¬ã®ç·åã®é åºãæ¢ç´¢ãã¦ãããã«åç·åã®ã©ã¡ãå´ããã©ã¡ãå´ã«ãªããããæ¢ç´¢ããã åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ 座æ¨å¹³é¢ä¸ã« æ¬ã®ç·åãããã æ¬ç®ã®ç·åã¯ãåº§æ¨ ã®ç¹ã¨åº§æ¨ ã®ç¹ãçµãã§ããã æåãåç¹ã«ã¬ã¼ã¶ã¼ããããã¬ã¼ã¶ã¼ã¯å°â¦
äºé¨ã°ã©ãå¤å®ãæ¸ãããã¨ãããã°ããã®è¦é ã§è§£ããï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ é ç¹æ° ãè¾ºæ° ã®éã¿ä»ãæåã°ã©ããä¸ãããããåé ç¹ ã«å¤ ãæ¸ãè¾¼ãæ¹æ³ã§ãã£ã¦ãã©ã®è¾º ã«å¯¾ãã¦ã ãæºãããããªãã®ã 1 ã¤æ±ãã (ãã®ãããªãã®ãåå¨ããâ¦
åºéã®å·¦ç«¯ã¨å³ç«¯ãæ·»åã«ãã¡ã¤ã¤ã左端ãé¤å»ãããå³ç«¯ãé¤å»ããããã DPãé忬ã®åé¡ãªã®ã§ãã³ã¼ãã®ã¿ã åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ ããã㯠ããã®é ã«ä¸åã«ä¸¦ãã§ãã¦ãã左端ã®ãããã¯ã¾ãã¯å³ç«¯ã®ãããã¯ãé¤å»ãããã¨ããæä½ã åè¡ã£ã¦â¦
LCS ãæ±ãã DP ã®ç·´ç¿ãé忬ã®åé¡ãªã®ã§ã³ã¼ãã®ã¿ã åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ 2 ã¤ã®æåå ãä¸ããããã ã®é¨ååã§ã ã®é¨ååã§ããããããªæååã®é·ãã®æå¤§å¤ãæ±ããã å¶ç´ ã³ã¼ã #include <bits/stdc++.h> using namespace std; int main() { string S, </bits/stdc++.h>â¦
ã¾ã¨ãã«è¨ç®ããã¨æ¡æ°ãã¨ãã§ããªããã¨ã«ãªãã®ã§ããLU ã§æ¶ãããRU ã§æ¶ãããæ´»ç¨ãããï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ é ç¹æ°ãååå¤ãå®å ¨äºåæ¨ãä¸ãããããæ ¹ã®çªå·ã¯ 1 ã§ãããä¸è¬ã«é ç¹ ã®å·¦åé ç¹ã®çªå·ã¯ ãå³åé ç¹ã®çªå·ã¯ ã§ããã æâ¦
ãããã¤ãã®å¤ã決ããã¨ãæ®ããæ±ºã¾ã£ã¦ããã®ã§ãæå¾ã«æ´åæ§ã check ãããã¨ããã®ã¯ãé »åºã®å ¸åãã¯ããã¯ï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ åç°ç¶ã«åç© ããã®é ã«ä¸¦ãã§ãããååç©ã¯ç¾ ('S') ãç¼ ('W') ã§ããããã ããååç©ããããã§ããããâ¦
ä¸è¦ã ã® DP ã«è¦ãããããã®å¿ è¦ã¯ãªãã£ãã åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ ã°ã¼ã¨ãã¼ããåºããªãã¸ã£ã³ã±ã³ã åãããç¸æãååã«ä½ãåºãããäºãããã£ã¦ããããã ããã©ã®æç¹ã§ã (ããã¾ã§ã«åºããã°ã¼ã®åæ°) (ããã¾ã§ã«åºãããã¼ã®åæ°) ãæºâ¦
ã°ãªãããå¹ åºãããé»è²ãã¹ã®å¨è¾ºã§ããã3 x 3 å é¨ã«é»è²ãã¹ããããã¨ããç¶æ³ãçºçããªããã¨ãæ´»ç¨ããï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ ã°ãªããã®åãã¹ã¯ç½è²ã¾ãã¯é»è²ã§ããã åã®ãã¹ãé»è²ã§ããï¼åº§æ¨ãä¸ããããï¼ã ãã®ã°ãªããå é¨ã®å 3â¦
å台颿°ã使ã£ãå ¨æ¢ç´¢ã®ç·´ç¿ï¼ ããããã®ã¯æ¬å½ã«ç·´ç¿ã«ãªãã åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ åãã¹ã 0 ã¾ã㯠1 ã§ãããã㪠ã®äºæ¬¡å ã°ãªãã ãä¸ããããã ã°ãªããä¸ã®åãã¹ãæ¸¡ãæ©ãã¦ããç§»åçµè·¯ã®ãã¡ãæ¬¡ã®æ¡ä»¶ãæºãããã®ãèããã 1 åã®â¦
å®ã¯ã¯ã¨ãªãã¨ã«æ¯åæç´ã« Dijkstra æ³ãåãã¦ãéã«åãï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ æåãè¾ºæ° 0 æ¬ãé ç¹æ° åã®ã°ã©ããä¸ãããããé ç¹çªå·ã¯ ã§ããããã®ã°ã©ãã«å¯¾ã㦠åã®ã¯ã¨ãªãæããããã ã¯ã¨ãªã¿ã¤ã 0ï¼2 é ç¹ ãæå®ãããã®ã§ãé ç¹â¦
å°ãæ°å¦ããã¯ãªåé¡ï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ äºæ¬¡å ã®åº§æ¨å¹³é¢ä¸ã« åã®ç¹ããããç¹ ã®åº§æ¨ã¯ ã§ããã ããã åã®ç¹ãã 4 åãé¸ã¶ãé¸ãã 4 ç¹ãæ£æ¹å½¢ã®é ç¹ã¨ãªãå ´åã«ã¤ãã¦ã®ãæ£æ¹å½¢ã®é¢ç©ã®æå¤§å¤ãçããã å¶ç´ èããã㨠ã§ãããããªâ¦
ã¨ã¦ãè²ããªè§£æ³ãèãããããã ã åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ ä»¥ä¸ ä»¥ä¸ã® åã®æ´æ°ããç¸ç°ãªã åã®æ´æ°ãé¸ãã§ä¸¦ã¹ã¦å¾ãããæ°å ãä¸ããããã ä»ããã®æ°åã®ä¸ã« ã§ããè¦ç´ ããããªãã°ããã®è¦ç´ ã 1 ä»¥ä¸ ä»¥ä¸ã®å¥½ããªæ´æ°ã«æ¸ãæãã¦ããã â¦
ã¨ã£ã¦ãæè²ç㪠DP ã®åé¡ï¼ï¼ï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ 髿©åã®åã« åã®æçãé ã«é ãããã髿©åã¯ãã®é½åº¦ãé£ã¹ãããä¸ãã¦ããããã鏿ãããã¨ãã§ããã çªç®ã®æçã¯ã ã®ã¨ããè§£æ¯å¤å ¥ãã®ãç¾å³ããã ã®æç ã®ã¨ããæ¯å ¥ãã®ãç¾å³â¦
å®è£ åé¡ï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ ã®ã°ãªããããã£ã¦ãåãã¹ã¯ç½è²ã¾ãã¯é»è²ã«å¡ããã¦ãããä»ããç½è²ã®ãã¹ãé¸ãã§é»è²ã«å¡ããã¨ããæä½ãé«ã 2 åã¾ã§å®æ½ã§ããã æä½å¾ã«ãç¸¦ã»æ¨ªã»æãã®ããããã«é£ç¶ã㦠6 åã®ãã¹ãé»è²ã«ãªãããã«â¦
åé¡ã®æå³ãçè§£ããã®ãé£ããããçè§£ãã¦ãã¾ãã°ãããå ¨æ¢ç´¢ã§è§£ãããã¨ã¯æ¯è¼çåãããããã¨æãï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ æ¬ã®éµ ããããããããæ¬ç©ã§ããããããã¼ã§ãããã®ããããã§ãããã㢠X ããããéµã®ãã¡ã® æ¬ä»¥ä¸ã®æ¬ç©ã使â¦
ãããã¨ãæ³ã®ç·´ç¿åé¡ï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ æ£ã®æ´æ°ãããªãé·ã ã®æ°å ãä¸ããããã ãã®æ°åã®é£ç¶ããåºéã§ãã£ã¦ãç·åã 以ä¸ã§ãããã®ã®åæ°ãæ±ããã å¶ç´ è§£æ³ (1)ï¼ãããã¨ãæ³ editorial ã«è©³ããæ¸ããã¦ããã github.com ã³ã¼â¦
ãã®ãããæè²çãªå ¸ååé¡ï¼ è²ããªæ¹æ³ãèããããããããã§ã¯åºéã½ã¼ãã§è§£ãã¦ã¿ãã åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ æ°ç´ç·ä¸ã« åã®åºéãä¸ããããã çªç®ã®åºé㯠ã§ããã ãããåºéã®çµã§ãã£ã¦ãå ±æç¹ãã㤠(端ç¹å«ã) ãã®ã®åæ°ãæ±ããã å¶â¦
ãã®æä»£ã¯ Greedy ãå¤ãã£ããããã¦ãå®ã¯ãããåç´ãªãã¨ã«æ°ãã¤ããã©ãããåãããåé¡ï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ æ°ç´ç·ä¸ (æ±è¥¿æ¹å) ã« åã®çºããããããããã®çºã®åº§æ¨ã¯ ã§ãããçº 1 ããåºçºãã¦ããã¹ã¦ã®çºã訪ããããæ¬¡ã® 2 ã¤ã®æãâ¦
ã¨ã¦ãæè²ç㪠Greedy åé¡ï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ åã®éè² æ´æ°ãããªãæ°å ãä¸ããããããã®æ°åã«å¯¾ãã¦ã ãæ£ã®æ´æ°ã§ããè¦ç´ ã 1 ã¤é¸ã³ã-1 ããã ã¨ããæä½ãç¹°ãè¿ããã¨ã§ãã©ã®é£æ¥ãã 2 åã®è¦ç´ ã®åã 以ä¸ã¨ãªãããã«ãããã ãâ¦
è²ããªæ¹æ³ãããããã§ããã ãæ¥½ã«ããããï¼ åé¡ã¸ã®ãªã³ã¯ å顿¦è¦ å調å¢å 㪠è¦ç´ ãããªãæ°å ãããããã®æ°åã«ã¤ãã¦ã次㮠åã®ã¯ã¨ãªã«çããã ãã¯ã¨ãªã æ´æ° ãä¸ããããã®ã§ã ã®ã©ãã¨ãç°ãªãæ°å¤ (ããæ°ã¨å¼ã¶ãã¨ã¨ãã) ã®ãã¡ãâ¦