ABC lessons learned1 - zettsu-t/zettsu-t.github.io GitHub Wiki
ABC 6,8åäœå¶(126..ææ°)ã®Dåé¡ãã ãããè§£ããã®ã§ãããããåŸãæèšããŸãšããŠãããŸãã
ã³ãŒãã¯ãã¡ã
intã䜿ããªãã
åé¡èªäœã¯ãé£çµãããã¹ãé£çµæåã«åè§£ããã ãã§ãããè²ã®ç°ãªããã¹å士ãé£çµããŠã§ããã°ã©ãã§ã¯ãä»»æã®é»ãã¹ããä»»æã®çœãã¹ã«å°éå¯èœã§ããããã£ãŠé£çµæåã®é»ãã¹ã®æ° x çœãã¹ã®æ°ãæ±ããåæ°ã§ããããé£çµæåããšã«æ°ããã°ãããé£çµæåãšããã°union-findæšã§ããã
è§£ã®å€§ãããæç€ºãããŠããªãããã©ãã 32-bit æŽæ°ã«åãŸããªãããã§ããããã£ãŠ 64-bit æŽæ°ã§èšç®ãããACLã®union-findæšã¯æåã int
ã§æ±ã£ãŠããããããã£ãŠ long long int
ãã int
ãžã® narrowing cast ãçºçãããæ°ã«ããªããçãããªãŒããããŒããŠWAããã®ã¯éåžžã«åããã«ãããã°ãªã®ã§ãåãããåé¿ããæ¹ãç°¡åã§ããã
ã³ãŒãã¯ãã¡ã
EDPC Gåé¡ã®åŸ©ç¿ã§ããã
ã³ãŒãã¯ãã¡ã
ã³ãŒãã¯ãã¡ã
粟éž100-67ã§édiffãé ç¹å士ã§ã¯ãªããé ç¹ãšX,Yã«å¹³è¡ãªçŽç·ãçµã¶ã
ããé ç¹
蟺ãã³ã¹ãã®å°ããé ã«äžŠã¹æ¿ãããããšã¯union-findæšã§ã¯ã©ã¹ã«ã«æ³ãå®è¡ããã³ã¹ããäœãé ã«é£çµããŠããªã蟺ãé£çµããã
ã³ãŒãã¯ãã¡ã
粟éž100-63ã
å
¥åã«ã¯ãŒã·ã£ã«ããã€ãæ³ãå®è¡ããŠçµæãå€ãã£ãã -1
ã§ããã
ãã蟺
ã³ãŒãã¯ãã¡ã
XORãšã¯æ¡ç¹°äžãã®ãªãåã§ããã
ãšç¥ã£ãŠããã°é¡æãæºãã
2ã§å²ãåæ°ã¯æ±ºãæã¡ã§ãã(å
¥åãã20åã ãã32åãšããŠãåé¡ãªã)ã
ã³ãŒãã¯ãã¡ã
ã³ãŒãã¯ãã¡ã
ããæ°ã
ã³ãŒãã¯ãã¡ã
环ç©åã®çޝç©åãåãã
- æåã«Lå§ãŸãRçµããåè»ã®äºæ¬¡å é åãäœãããã®ãšãRã§çµããã®ã§ã¯ãªããRããã³Rãã西ã§çµããåè»ãæ°ãããããã¯çޝç©åã§æ±ãŸãã
- 次ã«Lã§å§ããã®ã§ã¯ãªããLããã³Lããæ±ã§å§ãŸãåè»ãæ°ãããããã¯äžèšã«çޝç©åããLã€ããŠçޝç©åãšåãããšã§æ±ãŸãã
- ããšã¯åã¯ãšãªã«çããã
ã³ãŒãã¯ãã¡ã
å顿ãçŽ çŽã«å®è£ ããã
ã®ã ããçŠããšäœããã¹ããåãããªããªããé ã远ã£ãŠèãããã
- å
¥åãå
¥åé ã«ä¿åãã(ãããå¿ããã¡)ãç x
$10^9$ + 幎 x$10^6$ ã§ããããåºåã«åŒãããããŠç x$10^6$ ã«ãããšWAããã - åžãçããšã«åé¡ãã
- ããããã®çã®åžããå¹Žã®æé ã§äžŠã³æ¿ããŠ1ããé äœãã€ãããå€ãç x
$10^6$ + é äœ x$10^6$ ãšããã - ããŒãšå€ãšãçµã³ä»ããå ¥åãããããŒã®é ã«å€ãåºåãã
æŽæ°ã®0åãã¯ã€ãã£ãªã ãªã®ã§èŠããã
os << std::setfill('0') << std::setw(12) << ids[key] << "\n";
ã³ãŒãã¯ãã¡ã
ãããæ³ã®ã³ã³ãã ãããããæ³ã§ã¯ãªãã
æãåãããšè§£ãããæ°Žãããããšå·Šç«¯ã«äžããšããžãäžæ®µãå³ç«¯ã«äžããšããžãäžæ®µã§ããããšãåããããã£ãŠ
å³ã«ããã°å°ãåãããããã以äžã®4ãã¿ãŒã³(å·Šå³å¯Ÿç§°ãçç¥)ã§ãäžèšã®æ¡ä»¶ãæºããããšãåããã
+++++ +++++ +++++ +++++
-- --- --- -----
-+++++ +++++ +++++ +++++
ã³ãŒãã¯ãã¡ã
èœã¡çããŠå顿ãæåŸãŸã§èªããçŠããªãã
ã³ãŒãã¯ãã¡ã
æ©ãã§ãªãã§æãåããã
- ã³ãã1åãªãã巊端ã«ãããŠãå³ç«¯ãŸã§äžéããªãã
- ã³ãã2åãªããå·Šå³ã®ç«¯ã«ãããŠãããããäžå€®ã«åããããã®ãšãäºã€ã®ã³ããåºäŒãå¿
èŠã¯ãªããšè§£ããã§ã¯æçµç¶æ
ã§ã©ãã ãé¢ããããšãããš
$X_i, X{i+1}$ ã®æé·è·é¢ã§ããã - ã³ãã3åãªããå·Šå³ã®ç«¯ãšãå
ã®
$X_i$ ãŸãã¯$X{i+1}$ ã«ããã䞡端ããäžå€®ãžãäžå€®ãã端ã«åãããäžã€ã®ã³ããåºäŒãå¿ èŠã¯ãªããæçµç¶æ ã§ã©ãã ãé¢ããããšãããšãå ã®$X_i, X{i+1}$ ãšäºçªç®ã®æé·è·é¢$X_j, X{j+1}$ ã§ããã - 以äžåæ§ã«
$N$ ã³ããããªã$N-1$ çªç®ã«å€§ãã$X_k, X{k+1}$ ãé¢ãããç¹ã«$N \geq M$ ãªãããã¹ãŠã®ã³ãããã¹ãŠã®$X$ ã«é 眮ããã®ã§åæé 眮ããç§»åããªããŠãã
ãããå®è£ ããã
ã³ãŒãã¯ãã¡ã
å¹çãæªããçµã¿åãããç¶²çŸ ã
åæã³ã¹ãã¯ã
竹ã®çµã¿åãã (0...0123
ãå§ç¹ãšã㊠std::next_permutation
ãåãã 0
ã 0123
ã«çœ®ãæããã°ããããã®ãšãéè€ããã®çµã¿åããã¯
ã³ãŒãã¯ãã¡ã
ã¯ãšãªãå èªã¿ããŠéããèããã
Union-findæšã¯èŠçŽ ãå¢ããããšã¯ã§ãããé€ãã®ãé£ããããªã®ã§ãäžäŸ¿ããæå€§ãšããæçµç¶æ ãããæ©ãæãããäžäŸ¿ããæžã£ãŠããããšéæäœãè¡ããA-Bã«æ©ãæ¶ããããšã§äžäŸ¿ãã¯Aã®é£çµæå x Bã®é£çµæåã ãæžãã蟺ã®ãªãé ç¹ã®é£çµæåã¯1åãªã®ã§ç¹å¥æ±ãã¯èŠããªãã
ã³ãŒãã¯ãã¡ã
å·Šå³ããçŽ¯ç©æå€§å
¬çŽæ°ãåããšãããæ°ãé€ããæå€§å
¬çŽæ°ãæ±ãããããã»ã°ã¡ã³ãæšã«ãèŒããã
ã³ãŒãã¯ãã¡ã
- å
¥åãæšãªã®ã§ãå¹
åªå
æ¢çŽ¢(BFS)ã䜿ãã°é ç¹æ°ã®ç·åœ¢æéã§è§£ãããæ ¹ã§ããé ç¹ããBFSããã°ãåé ç¹ãæ ¹ã«è¿ãé ã«èšªåã§ããããã€ã¯ã¹ãã©æ³ã¯
$log(N)$ åã ãæéãæããã®ã§äœ¿ããªãã - æšã®é ç¹ããã¥ãŒã«èŒãããšãã蚪åå ã®è²ãè¿œå æ å ±ã«èŒããã (蟺ã®éã+蚪åå ã®è²) ã®å¶å¥(and 1)ãã蚪åå ã®è²ã«ããã
- æ ¹ã¯ã©ã®é ç¹ã§ããããããããè=次æ°ã1ã®é ç¹ãæ¢ãå¿ èŠã¯ãªãã
ã³ãŒãã¯ãã¡ã
é£ããèããããªãããšãéèŠã§ããã
ã³ãŒãã¯ãã¡ã
2æé8åæãã£ãã
ãã以å€ã®å Žåã¯å·¥å€«ãããã
å
¬åŒè§£èª¬ãèªããšãäžèšã®
ã³ãŒãã¯ãã¡ã
- ãã¹ãŠã®æäœçµäºåŸã®çµæã ãè§£çããã°ããã®ã§ãæäœããšã«ç¶æ ãæŽæ°ãããå¿ èŠã¯ãªããããããã¯ãšãªå èªã¿ãšåãã
- ã«ãŒããåé€ããã眮ãæãããããã³ã¹ããé«ãããªã®ã§ããããã®æäœãç¡ãããã
-
$A_i < C_j$ ãªãã$C_j$ ãéžã°ããŠ$A_i$ â ã¯éžã°ããªãããããããNæã®ã«ãŒãã«æžãããæŽæ°ã®åèšã®æå€§å€ãããéé ã«äžäœNæéžãã ã«ãŒãã«æžãããæŽæ°ã®åèšã®æå€§å€ããšèªã¿æ¿ãããããããã°$C_j$ ã«é ããã$A_i$ ã¯ç¡èŠã§ãããããã§ã«ãŒããåé€ããã«æžãã - ãã ãBã倧ããã®ã§ãCãBæAã«è¿œå ããæäœãMåãããšãTLEãMLEãããããããªãããã£ãŠ
$C_j$ ã®éé ã«Næä»¥äžãŸã§Aã«è¿œå ãããCãäœåã«Aã«è¿œå ããŠãã©ã®ã¿ã¡å°ããã«ãŒãã¯éžã°ããªãã®ã§ããã£ããå®è£ ããŠæ§ããªãã - CãBæãšããã®ã¯ããã¡ããšããã³ãŒããªãæ§é äœãšã¡ã³ããšæ¯èŒæŒç®åãå®çŸ©ãã¹ãã§ããããããæ¯èŒæŒç®åãå®çŸ©ããæéããã£ãããªãæ©è§£ããªãã
std::tuple
ã䜿ããšèŸæžé ã®æ¯èŒæŒç®åãã€ããŠããã
ã³ãŒãã¯ãã¡ã
å šãææãããã€ããã諊ããã®ã ããè§£çããã£ããããŠããŠã³ã£ããããã
é§ãäžã€åºå®ããŠDPãããè§£ããªãã£ããé§ãäºã€åºå®ããã®ãæ£è§£ã§ãããé§ãäºã€åºå®ãããšãã以äžã®æäœãçãã§ããã
- é§ãäºã€åºå®ãããšãã®ãè¡ã®å·®ã®çµ¶å¯Ÿå€
$0 \leq dy < N$ ãåã®å·®ã®çµ¶å¯Ÿå€$0 \leq dx < N$ ãåºå®ããã - ãã®ãããªé§äºã€ã®è·é¢ã¯
$dy + dx$ ã§ããã - ç©åœ¢
$(0,0)-(dy-1,dx-1)$ ãã®å·Šäžãšå³äžã«é§ãçœ®ãæ¹æ³ã¯ãè¡æ¹åã«$N-dy$ ãåæ¹åã«$M-dx$ éãã§ãããããç¬ç«ãªã®ã§ãããã®ç©ã§ããã -
$dy > 0 \land dx > 0$ ãªãäžäžå転ãããã®ã§äºåãã - äžèšããŸãšãããšã
$(dy+dx)(N-dy)(M-dx)(1+(dy > 0 \land dx > 0))$ ã§ãã
é§ãäºã€åºå®ãããšãæ®ãã®é§ã®çœ®ãæ¹ã¯
ã³ãŒãã¯ãã¡ã
ã³ãŒãã¯ãã¡ã
std::back_inserter
ã®äœ¿ãã©ããã
- äœåæäœããã
$n_{iter} \leq K$ - äœååãåºãã
$n_{pop} \leq min(n, n_{iter})$ - å·Šããäœååãåºãã
$left \leq n_{pop}$ - å³ããäœååãåºãã
$n_{pop} - left$
ã«ã€ããŠãçããå®ç³ãå®éã«åãåºãã°ããã std::copy
ãš std::back_inserter
ã䜿ããšç°¡æœã«æžããã䟡å€ãè² ã®å®ç³ãæå€§
ã³ãŒãã¯ãã¡ã
åœæã¯é å»¶ã»ã°ã¡ã³ãæšã§édiffã ã£ãã®ã ããã
éè·¯ã®å·¥äºæéã¯åç¹ã«èªã¿æ¿ããŠãäœçœ®
座æšå§çž®ããæå»ãé
å»¶ã»ã°ã¡ã³ãæšã«èŒãããããŒã¯åº§æšå§çž®ããæå»ã§ãããå€ã¯ããæå»ã«ãããŠãæãå·Šã«ããå·¥äºã®äœçœ®
å·¥äºããã¹ãŠé
å»¶ã»ã°ã¡ã³ãæšã«èŒãããã -1
ãšçããã
ã³ãŒãã¯ãã¡ã
- 4,000,000ãã¹ãªã®ã§ãäžãã¹
$O(log(max(H,W)))$ ã®æ¢çŽ¢ã³ã¹ããªãTLEããªã - ãããã¹ã®å
ç·ãé害ç©ã«åœãããã©ããã¯ã
std::upper_bound
ã§åãã - é害ç©ã«åœãããã°ãªãããçªãæããŠããŸããšãã€ãã¬ãŒã¿ã
begin()
,end()
ãšæ¯èŒããã®ãããã©ãããããªã®ã§çªå µãšããŠã°ãªããã®å€åšãé害ç©ã§å²ã£ãŠãããçªå µã䜿ãããšãèŠããŠããããã
ã³ãŒãã¯ãã¡ã
301-Dã«äŒŒãŠãããã©ãããããã
äžã®æ¡ããé ã«çµã¿åããã®æ°ã环ç©ããã°ããã話ããããããã®ã¯ãããæ¡ã0ãªããã®äžäœã®æ¡ã«ã€ããŠã¯ç·åœããããçµã¿åãããå¢ãããããæ¡ã1ãªããã®å€ã«æ±ºãæã¡ããŠé£ã®æ¡ãã¿ãããšã§ãããLã2鲿°ã§
- æäžäœæ¡ã0ãšçœ®ãã°ãæ®ãã®æ¡ã¯0ãŸãã¯1ã§ããã(0,0), (0,1), (1,1)ã®çµã¿åããã
$3^{n-1}$ éããã - æäžäœæ¡ã¯å¿
ã1ã§ããã
$L=1x...$ ã«ã€ããŠ$x=1$ ãªã- æäžäœæ¡ã¯ (0,1), (1,0)ã®çµã¿åããã
$2$ éããã -
$x=0$ ãšããããšãã$...$ ã«ã€ããŠã¯$3^{n-2}$ éããã -
$11$ ã«ã€ããŠã¯é£ã®æ¡ãèŠã
- æäžäœæ¡ã¯ (0,1), (1,0)ã®çµã¿åããã
-
$L$ ã®æäžäœã®é£ã®æ¡ã0ã€ãŸã$10...$ ãªãã0ã«ã€ããŠã¯ (0,0)ã®1éãã«éãã®ã§çµã¿åããã¯å¢ãããé£ã®æ¡ãèŠã
äžè¬çã«
ã³ãŒãã¯ãã¡ã
- ãŸã环ç©å cumsum ãåãããšåã¥ã
-
$cumsum(a_2 ... a_i)$ =$cumsum(a_1 ... a_i) - a_1$ ãªã®ã§ãéšååã®éå§ç¹ãããããŠããã°éšååã® cumsum ãæŽæ°ã§ããããªã®ã§éšååã®ç·åœããã¯é¿ããããã - å®éã«ã¯ cumsum ãæŽæ°ãã代ããã«ãéšååãåãåºéããå·Šãå«ãã cumsum + k 以äžã«ãªã a ã®äœçœ®ãæ¢ãã环ç©åã¯éšååãé·ãããã°å¢ããã®ã§äºåæ¢çŽ¢ãå°ºåãæ³ã䜿ããããŸãäºåæ¢çŽ¢ã§æžãã
Num answer {0};
for(decltype(n) i{0}; i<n; ++i) {
const Num d = k + cumsum.at(i);
auto it = std::lower_bound(cumsum.begin() + i, cumsum.end(), d);
const auto count = cumsum.end() - it;
answer += count;
}
å°ºåãæ³ã䜿ãã°ãkã®æ¢çޢ忰ã
Num answer {0};
Num right {1};
for(Num left{1}; left<=n; ++left) {
while((right <= n) && ((cumsum.at(left-1) + k) > cumsum.at(right))) {
++right;
}
answer += n + 1 - right;
}
ã³ãŒãã¯ãã¡ã
LISã£ãœãã®ã ãããªããªãLISã身ã«ã€ããªãã
䟿å®äžãç©ºæŽæ°å
ããã
ã³ãŒãã¯ãã¡ã
é忬ã®ã6.4 äžæå ãèãããåé¡ A39ãšã»ãŒåãã§ããããããŸã§ã«ä»äºãå§ããªããšéã«åããªãç· ãåã (b-a) ãçŸåšæå»ãè¶ éããªããã©ãã調ã¹ãŠãè¶ éãããå³ "No" ãšåºåããã
ä»äºã衚çŸããæ§é äœã¯ãç· ãåããçµç¹ãæããæéããæãããœãŒãããã®ã«å¿
èŠãªã®ã¯çµç¹ã ããªã®ã§ãæ§é äœã§ã¯ãªã std::tuple
ã§äœãã°æ¯èŒæŒç®åã¯å®è£
ããªããŠãã€ããŠããã
ã³ãŒãã¯ãã¡ã
æå€§å€ãèãããããã
äžå¿ã«é ç¹1ã眮ããæ®ã
ã³ãŒãã¯ãã¡ã
é£çµæåãšã¯æ°ã¥ãããããã以äžã©ãããŠãããåãããªãã£ãã
åäžX座æšäžã«ããé ç¹ã®éåã
ã³ãŒãã¯ãã¡ã
ããã¡ããæ°ã®è§£èª¬ã«ããéããéè€çµã¿åããã«é¢ããçè§£ãåãããã
éä¹ãæ±ããã³ãŒãã¯é »åºãªã®ã§ãããããçšæããŠãã¹ãããŠãããGMP (GNU Multi-Precision Library)ã䜿ãã°ãä»»æç²ŸåºŠæŽæ°ã䜿ã£ãŠçµã¿åãããæ±ããããã mod 1000000007 ãæ±ãŸãã®ã§æ€ç®ã«äœ¿ãããRãªã gmp
ããã±ãŒãžããå©çšã§ããã
ã³ãŒãã¯ãã¡ã
åã«BFSããŠãåé ç¹ãŸã§ã®æçè·é¢ãæ±ããããã ãç§»ååæ°ã3ã®åæ°ä»¥å€ãªãæçè·é¢ãæŽæ°ããªããç§»ååæ°ã3ã®åæ°ã§æçè·é¢ãæŽæ°ã§ããªãç§»åã«ã€ããŠã¯ãã®åŸã«ç§»åããªãã®ã§ããã€ãæ¢çŽ¢ããé ç¹ã¯ç¡ããªãã
ã³ãŒãã¯ãã¡ã
倿°ã®åãäºã€ãããšãããããããç¹å®ã®å€æ°ãé€ãã«ã¯ãå·®ãåãã°ãã£ã³ã»ã«ã§ããããšãæãã€ããçµ±èšåŠã§ã¯ difference in differences (DID) ãšããææ³ãããã
- å±±
$i$ ã«éã£ãéšã®éã$a_i*2$ ãšãããéšéã¯å¶æ°ãªã®ã§ãã衚çŸã§ãããå±±$i$ ã«éã£ãéšã®éã¯$a_i+a_{i+1}$ ã§ããã -
$B_2 = A_2 - A_1$ ,$B_3 = A_3 - B_2$ , ... ãšçœ®ããäžèšãã$B_n = a_1 + a_1$ ã§ããããããã$a_1=B_n / 2$ ãæ±ãŸãã - ããšã¯
$A_{2..n}$ ããèã¥ãåŒã«$a_2..a_n$ ãæ±ãŸãããã®å€ã2åããŠåºåããã
A1=a1+a2, A2=a2+a3, A3=a3+a4, A4=a4+a5, A5=a5+a1
B2=A2-A1=a3-a1,
B3=A3-B2=a4+a1,
B4=A4-B3=a5-a1,
B5=A5-B4=a1+a1
ã³ãŒãã¯ãã¡ã
çŽ çŽã«é ç¹ãå¡ãã
131-Eã®èŠæŠãšã¯æã£ãŠå€ãã£ãŠããã¡ãã¯çŽ çŽã«åœ©è²ããã°ãããæšã®é ç¹éã®è·é¢ã2以äžãšããã®ã¯ãé ç¹
- æšã®æ ¹ã¯
$K$ è²ã§å¡ããé ç¹çªå·ãã€ã³ããã¯ã¹ãšããŠãäœè²ã§å¡ãããä¿åããã - æšã®æ ¹ã«åã
$i$ é ç¹åããã°ãåã$K-i..K-1$ è²ã§å¡ã - æšã®æ ¹ã«åã®åã
$j$ åããã°ãåã®åã$K-j-1..K-2$ è²ã§å¡ãã以äžDFSã§èãŸã§ç¹°ãè¿ãã - åé ç¹ãäœè²ã§å¡ããããmodintã§ä¹ç®ãã
éäžã§å¡ãçµµã®å ·ãç¡ããªã£ããé ç¹ã0éãã®è²ã§å¡ãã®ã§ãçµæçã«çãã¯0éãã«ãªããã ããå¡ãè²ããªããªã£ããšãã®åŠçã¯æç€ºçã«å®è£ ããªããŠããã
ã³ãŒãã¯ãã¡ã
ãšã©ãã¹ããã¹ã®ç¯©ã¯ãçŽ æ°
ããã§ã¯ãã®éã§ãçŽ æ°ãšã¯éããªã
ã³ãŒãã¯ãã¡ã
ãªããšgreedyã ã£ãã
解説ãèªãã ãšãããå¢å åãè€æ°ç®¡çããŠãããŠãå¢å åã«ã€ãªãããã(å¢å åã®æå€§å€ãã倧ãã)ãªããã®å¢å åã«ç©ãã§ãããã§ãªããªãå¢å åã1åå¢ãããç©ãã¹ãå¢å åã¯æå€§å€ãæãå°ãããã®ãéžã¶ããšããgreedyã§è§£ãããå¢å åãã®ãã®ã管çããå¿
èŠã¯ãªããæå€§å€ã®å€ã ã std::multiset<Num>
ã§ç®¡çããã°ããã
LISãšãstackãšãè²ã èãããã©é§ç®ã ã£ãã
ã³ãŒãã¯ãã¡ã
Mod 13 ãš mod 1000000007 ãåºå¥ããã
äœéãããã㯠atcoder::modint1000000007
ã§æ°ãããåæå€ã¯ãäœã0ã1éããä»ã¯0éãã§ããã
ã³ãŒãã¯ãã¡ããifæã ããã§é·ãã®ã§ãããå°ããã£ããæžãããã§ããã
çµè«ããèšãã°ãé£ç¶ãããã¹ãåå²ããã°ããã
ååé·ãç§»ååæ°ã«ãªãã°ã LR
ãŸã㯠RL
ãåŸåŸ©ããŠããããå€ã«åºãªãããšãåããã
-
LR
ãŸãã¯RL
ã«ãªãåºçºç¹ã¯ãåè ã¯å·Šã«é£ç¶ããL
ãšå³ã«é£ç¶ããR
ãåŸè ã¯å·Šã«é£ç¶ããR
ãšå³ã«é£ç¶ããL
ã§ããã - äžèšã®å氎嶺ã¯
RL
ã§ããããã£ãŠRL
ãèŠã€ããããã®RãšLã®éã§ãã¹ãã°ã«ãŒãåãããã - åŸã¯ã°ã«ãŒãããšã«ã
LR
ãŸãã¯RL
ã«å°éãããŸã§ã®åæ°ã®å¶å¥ãæ±ããã
å¥è§£ãšããŠã¯ãããªã³ã°ããããããã
ã³ãŒãã¯ãã¡ã
æäœåŸã®
ãã
ã³ãŒãã¯ãã¡ã
ç· ãåãããèããã
åçèšç»æ³ã§ã¯ãªã貪欲æ³ã ãšããããšã¯äœãšãªããããã®ã ãã忥ãã
-
$M..0$ æ¥ã«ã€ããŠã«ãŒããã - ãã
$i$ æ¥ã«ã€ããŠãå ±é ¬ãåŸããããŸã§ã¡ããã©$M-i$ æ¥æããã¢ã«ãã€ããåªå 床ãã¥ãŒã«è¿œå ãã - ãã®æç¹ã§æãå ±é ¬ã®é«ãã¢ã«ãã€ããè«ããããåãã¢ã«ãã€ãã¯åããããªãã®ã§åªå 床ãã¥ãŒããåé€ãã
ã³ãŒãã¯ãã¡ã
Bellman-Fordæ³ã ã£ãã
é ç¹1ãšé ç¹Nã®äž¡æ¹ããå°éå¯èœãªé ç¹ã ãã§ã°ã©ããæ§æãã蟺ã®ã¹ã³ã¢ã
åºæ¬çã«ã¯Bellman-Fordæ³ã§ãé ç¹ã®å€ã
ã³ãŒãã¯ãã¡ã
126-D ãšã»ãŒåãã§ãããéãã®ã¯èŸºã®éã¿ãäŒæ¬ããã®ã§ã¯ãªãã芪ã®é ç¹ã®ã«ãŠã³ã¿ãŒãåã«BFSã§äŒæ¬ããããšã§ããã
ã³ãŒãã¯ãã¡ã
ãã¡ããgreedyã ã£ãã
134-Eã®èŠæŠã«æ¯ã¹ããšããã¡ãã¯ãã£ããããŠããããŸã t
ã«ãã£ãŠ s
ã«ãªãæåããã£ããé¡æãæºãããªãã®ã§-1ãè¿ãã
ããšã¯ t
ãå
é ããé çªã«èŠãŠããã°ããã s
ã®äœæåç®ãæãã(ã«ãŒãœã«)ã s
ãäœåã€ãªããã(åšåæ°)ã管çããã°ããã
- åæåæç¹ã§ã¯ãã«ãŒãœã«ã¯-1, åšåæ°ã¯0ãšãã
- ãŸã
t
ã®å é æåc
ããs
ã®äœæåç®ã(å é ã0çªãšãã)æ¢ããs
ãæ¯åã¹ãã£ã³ãããšTLEããã®ã§ãc
ã®åºãäœçœ®ãããããã調ã¹ãŠãstd::upper_bound
ã§èª¿ã¹ããc
ã¯å¿ ãèŠã€ããã®ã§ã«ãŒãœã«ãããã«çœ®ãã - åæ§ã«
t
ã®äºæåç®d
ãæ¢ããd
ã®åºçŸäœçœ®ãã«ãŒãœã«ä»¥éãªã.end()
ãè¿ãã®ã§ãåšåæ°ã1è¶³ããŠã«ãŒãœã«ã-1ã«æ»ããŠã¹ãã£ã³ããããšãããããd
ã®åºãäœçœ®ã¯èª¿ã¹ãŠããã®ã ãããã®æå°å€ã§ããã
以åŸåæ§ã« t
ã®æåŸã®æåãŸã§ã¿ãŠããã°åšåæ°ãšã«ãŒãœã«ãåããã®ã§çããæ±ãŸãã
ã³ãŒãã¯ãã¡ã
æŽæ°ãæŽæ°Nã§å²ã£ããšãã®äœãã¯æå€§N-1ã§ããããªãã°æ°åãå転ãããã°ãäžã€ãé€ããŠå²ã£ãäœããæå€§ã«ã§ããã
ã³ãŒãã¯ãã¡ã
ããããžã«ã«ãœãŒã
詊å
ããããžã«ã«ãœãŒãã«æåããå Žåã¯ããœãŒã¹æžã°ã©ãã®çŽåŸãæ±ããã°ãããããã¯ããããžã«ã«ãœãŒãæžã®é ç¹é ã«DFSããŠã åã®é ç¹ã®æ·±ã = max(åã®é ç¹ã®æ·±ã, 芪ã®é ç¹ã®æ·±ã + 1) ã§æŽæ°ããããã¹ãŠã®é ç¹ã®æ·±ãã®æå€§å€ãçãã§ãã(æ·±ã0ããå§ããæã¯æå€§å€ã«1è¶³ã)ã
ã³ãŒãã¯ãã¡ãã
解説ãèªããŸã§ãäœãã©ãããŠãããåãããªãã£ãåé¡ã§ãããå ¥åäŸ4ãè§£ããªãã£ãã
RRRLRLRLL
RRRRRLRLL
RRRRRRRLL
è§£ãæ¹ã¯é£ç¶ããLãRãå転ãããã°ãå転ãããéšåã®å·Šå³ã®ç«¯ã®äººã幞çŠã«ãªãããšãããã®ã§ãããããå°ã詳ããæžããšã L..LR..RL
ã®é£ç¶ããRãå転ããããšãæå³ã®Rãšæå³ã®Lã®äººãå転ããŠå¹žçŠã«ãªãããã ãããã§æå³ã®Lããªããã€ãŸãé£ç¶ããLãšé£ç¶ããRã¯åãããŠ2ã€ãããªããšãã¯ãæå³ã®Rã ãã幞çŠã«ãªããLãšRãå
¥ãæ¿ããŠãåæ§ã§ãããäžåå転ãããã°2人幞çŠã«ãªããé£ç¶ããLãšé£ç¶ããRã®çµã2ã€æžã(ãã ãæäœ1)ã
åŸãããæèšãšèšãã°ãã©ããå転ããããšæé©è§£ãªã®ãåãããªããç¹åŸŽéã¯åãããšããããšã§ãããå ¥åäŸãæäœæ¥ã§è§£ããªããŠããç€é¢ãèšè¿°ããç¹åŸŽé(å¶å¥ãšãããã®äžçš®)ãèŠã€ãããšãè§£ããåé¡ãããã
- äžåå転ããããšé£ç¶ããLãšé£ç¶ããRã®çµãšããç¹åŸŽéã2æžã(æäœ1)
- 幞çŠãªäººã®æ° = äººæ° - ç¹åŸŽé
ã³ãŒãã¯ãã¡ã
ãã®ãããä¹ ãã¶ãã«ã解説ACã§ããªãåé¡ã«åºäŒã£ãã
çŽæçãªçè§£ã¯è§£èª¬ãèªãŸãã«åãã£ãã®ã ããèå¯ãé²ãŸãå®è£ æ¹æ³ãå šãåãããªãã£ããã»ã°ã¡ã³ãæšã§ACã§ããã ä»ã®æ¹ã®ã³ãŒã ãèªã¿è§£ããŠããããçè§£ããã
å®è£
ã倧å€ã§ãããå€
ã³ãŒãã¯ãã¡ã
åªå
床ãã¥ãŒ std::priority_queue
ã®äœ¿ãã©ããã§ãããåªå
床ãã¥ãŒ std::priority_queue
ã¯ããã©ã«ãã§å€ãæã倧ããå€ãåãåºãã®ã§ãæãå°ããå€ãåãåºããšãã¯æ¯èŒæŒç®ãå転ããã
std::priority_queue<Num, std::vector<Num>, std::greater<Num>> q;
å²åŒåžã0æä»¥äžäœ¿ã£ãåŸã§ãæã倿®µã®é«ãåç©ã«å²åŒåžã䜿ããšãæãå²åŒãé¡ãå€ããã€ãŸã貪欲æ³ã§è§£ãã°ãããå²åŒåŸã®å€æ®µãåªå 床ãã¥ãŒã§è¡šçŸããã°ããã
ã³ãŒãã¯ãã¡ã
è»æ¬ãç¥ã£ãŠããã°ããã£ãšãšã¬ã¬ã³ãã«è§£ãããããã
ã®ã ãè»æ¬ãèªãã§ãªãã®ã§ããŒãªã³ã°ããã·ã¥ã§è§£ããL=1..Næåãããªãéšåæååã«ã€ããŠã1..(N+1-L)æåç®ããå§ãããã®ã«ããŒãªã³ã°ããã·ã¥ãäžèŽãããã®ããããªããçãã¯Lã§ãããããŒãªã³ã°ããã·ã¥ãçŽ æ°1åã§è§£ããšããã·ã¥è¡çªãå€çºããŠWAããã®ã§çŽ æ°2åã«ããŠããã®ããããããããããšTLEããã®ã§std::mapãstd::unordered_mapã«å€ãããšããããTLEããªããªãã
ã³ãŒãã¯ãã¡ã
çŽ å æ°åè§£ãé »åºã§ãããã³ãŒãã¹ãããããšããŠçšæããŠãã¹ãããŠããã
è§£æ³ãšããŠã¯ãAãšBãçŽ å æ°åè§£ããŠãAãšBã«å ±éã®çŽ å æ°ã®æ°ã§ãããçç±ã¯ä»¥äžã®éãã ãããããŸã§æãã€ãã«æéãæãã£ãŠããŸã£ãã
- AãšBã«å ±éã§ã¯ãªãAãŸãã¯Bã®çŽ å æ°ã¯å ¬çŽæ°ã«ã¯ãªããªã
- AãšBã«å ±éã®çŽ å æ°ããåäžã®çŽ æ°ãå«ããŠè€æ°éžãã§æãåããããšãä»ã®çŽæ°ãšçŽ ã§ãªããªã
ã³ãŒãã¯ãã¡ã
Bit DP
åçèšç»æ³ã®çžŠè»žã«éµã暪軞ã«å®ç®±ãéãããã©ããã®ããããã¿ãŒã³ã
åæå€ã¯éµãå
šã䜿ãããç®±ãå
šãéããŠãªããšãã®ã³ã¹ã
éµ
- éµ
$i$ ãã³ã¹ã$a_i$ ã§äœ¿ã$DP[i-1][p] + a_i$ - éµ
$i$ ã¯äœ¿ãã$DP[i][q]$
ã®ãã¡å°ããæ¹ã§ãããããããã¹ãŠã®
ã³ãŒãã¯ãã¡ã
éãããã«ããŠACã
è§£
ãŸãé ç¹2ã®è§£ã¯ãã¹ãŠã®èŸºã調ã¹ãã°åãããéæ¹åã®æãããã°ãããè§£ã§ããã
ãã以å€ã¯DFSã§æ¢çŽ¢ãããDFSã§é ç¹ãäžã€ãã€è¿œå ããè§£ã®åè£ã«è¿œå ããé ç¹ããã©ããªãã«ãŒãã§ãããæçã®ã«ãŒããåãåºããŠè§£ã®æ¡ä»¶ãæºãããã©ãã調ã¹(ãããç¡ããš1 WA)ãè§£ãªãåºåããã
æçã®ã«ãŒããåãåºãã®ããŸãã«çãã§ãã£ããšãå ¬åŒè§£èª¬ãèªãã§åãã£ããäžèšã®æ¹æ³ä»¥å€ã«æãã€ããªãã£ãããå®ã¯BFSã§ æ±ãŸã ã
ã³ãŒãã¯ãã¡ã
倿°ã®é åºãåºå®ãããšãéè€ãªãæ°ãäžãã§ããã
äžè¬æ§ã倱ããã«
-
$a \leq b < b + c$ ãã$a < b + c$ -
$b \leq c < a + c$ ãã$b < a + c$
std::vector
ã®èŠçŽ ãæãã€ãã¬ãŒã¿ãå
é ããäœçªç®ã«ããã(è·é¢ std::vector::begin()
ãšã®å·®ãšããŠå®æ°æéã§æ±ãŸãã std::distance()
ã䜿ã£ãŠãããã
const auto d = std::max(0LL, static_cast<Num>(
std::lower_bound(nums.begin(), nums.end(), s) - nums.begin())
- second - 1);
ã³ãŒãã¯ãã¡ã
ã¯ãŒã·ã£ã«ããã€ãæ³ã ãšæã£ãŠæéãæº¶ããããå¶çŽãæ·±èªã¿ãéãã§ããã
æ£è§£ã¯ãã€ã¯ã¹ãã©æ³ã§ããã
åºçºããçº
$D_S = 0$ -
$D_V = D_U + dist(U, V) if \lceil D_U / L \rceil = \lceil (D_U + dist(U, V)) / L \rceil$ ãããã¯çº$U$ ã§çµŠæ²¹ããã«$V$ ã«å°éã§ããå Žåã§ããã -
$D_V = L\lceil D_U / L \rceil + dist(U, V) if \lceil D_U / L \rceil < \lceil (D_U + dist(U, V)) / L \rceil$ ãããã¯çº$U$ ã§çµŠæ²¹ããªããš$V$ ã«å°éã§ããªãå Žåã§ããã
ãšæã£ãã解説ãèªãã§ãç¡çµŠæ²¹ã§ãã©ãçããçºå士ãã³ã¹ã1ã®ã°ã©ãã«ããŠãã¯ãŒã·ã£ã«ããã€ãæ³ã§ è§£ãã ãšåãã£ããããã¯æãã€ããªãã
ã³ãŒãã¯ãã¡ã
宿°è§£ãæ±ããåé¡ã¯ãè§£æè§£ãæ±ãããããäºåæ¢çŽ¢ã«ããçµã蟌ã¿ãæå¹ãªå Žåãå€ãã
è§åºŠãäžãã=ããå€ãåŸããçšã容åšã®äžèº«ãããŒããã®ã¯æãããªã®ã§ãåèª¿é¢æ°ãšããŠäºåæ¢çŽ¢ã§ãããæ°Žé¢ãåºèŸºãšåŽé¢ã®ã©ã¡ãã«ããããå Žååãããã°ããã
ååšçã®å®çŸ© M_PI
ã¯ãããããããäžèšã®ãã¯ããšã€ã³ã¯ã«ãŒãæãèŠããããããªãã
#define _USE_MATH_DEFINES
#include <cmath>
ã³ãŒãã¯ãã¡ã
äºåæ¢çŽ¢ã§ããã
äœãæ¢çŽ¢ããããéèŠãªã®ã ããããã§ã¯ããŒã å
šäœã®æçžŸãšããããŸãèªæã«èšããããšãšããŠãæãã³ã¹ãã®é«ã人ãæãé£ã¹ããããã®ã«å²ãåœãŠãã®ãæé©ã§ããããã£ãŠã³ã¹ãã®éé ãé£ã¹ã«ããã®æé ã«ãœãŒãããããœãŒãåŸã®ã³ã¹ããšé£ã¹ã«ããã®ãããã³ã°ã
次ã«ããŒã å
šäœã®æçžŸ
ä¿®è¡ããåæ°ã
ã³ãŒãã¯ãã¡ã
äºæ¬¡å
DPããã«ã¯
- ãã€ããç§»åããåãåŸããx座æš+y座æšã¯3ã®åæ°ã§ããã
- ãªã®ã§
$X+Y$ ã3ã®åæ°ã§ãªããã¹ã«ã¯å°éäžèœã§ããã - Xã«ã§ããã ãå°ãªãç§»åãããªãæ¯å+1ç§»åããããã®ãšãYã¯æ¯å+2ç§»åããããªã®ã§
$Y > X * 2$ ãªã$X$ ã«éããŠã$Y$ ã«éããªããåãã$X > Y * 2$ ãªãYã«éããŠãXã«éããªããã©ã¡ãã ($X$ ,$Y$ ) ã«å°éäžèœã§ããã ããã«æ³šæããªããšWAããã - äžèšãé€ãã (
$X$ ,$Y$ ) ã«ã¯å°éå¯èœã§ããã
- ç§»åããåæ°ã¯
$n = (X+Y) / 3$ - æ¯å1ç§»åããã®ã§ã2ç§»åããåæ°ã¯è¿œå å
$k = min(X,Y) - (X+Y) / 3$ - ãã£ãŠç§»åããæ¹æ³ã¯
${}_n \mathrm{C}_k$
ã³ãŒãã¯ãã¡ã
ã«ãŒãã®å å€ãéèŠã§ããã
æé©ãªçããæ±ãŸã£ãŠããŠé£ã¹ãç¿ã®éåãåºå®ãªããéãããæéã§ã¯é£ã¹ãã®ã«æããæéãçãç¿ããé£ã¹ãã®ãæé©ã§ããããã£ãŠé£ã¹ãã®ã«æããæéãçãé ã«ãæå»
ãã®ãšãã«ãŒãã®å
å€ãéèŠã§ãããå€ã«ãŒããç¿
ã³ãŒãã¯ãã¡ã
126-D, 138-D ãšåæ§ã«ãæšã®é ç¹ãBFSã§ãã©ããšãã«äœãèŒãããã§ãããä»åã¯èŸºã®è²ãèŒããã
- ç¡åã°ã©ãã®èŸºã
std::vector<std::vector<Num>>
ã«èŒããã®ã¯ãã€ãéã - 蟺ãå¡ãããã«ã蟺ã®å§çµç¹ãã蟺ã®çªå·ãžã®é£æ³é
åãäœããããŒã¯
from + to * (n+1)
ã«ããã - é ç¹ã®æ¬¡æ°(ã€ãªãã£ãŠããèŸºã®æ°)ãèšé²ãããæå€§ã®æ¬¡æ°ãå¿ èŠãªã®è²æ°ã§ããã
- 次æ°ãæå€§ã®é ç¹ããBFSããã芪é ç¹ãšã€ãªãã£ãŠãã蟺(æ ¹ãé€ã)以å€ã®è²ããåé ç¹ãšã®èŸºã«å¡ãã
ã³ãŒãã¯ãã¡ã
èœã¡çããŠå¢çå€ãæ¢ãã
èŠçŽ
æåã«
-
$U = \sum_{1}^{i} A_i$ ãšããã环ç©åãªã®ã§ãããããæ±ããŠããã -
$(\sum_{L}^{L+W} A_i) mod K = 0$ ã®çµã¿åããã®æ°ã¯$T[U]$ ã§ããããããçãã«è¶³ãã -
$T[U]$ ã1æžãããŠã以åŸ$[A_1,...A_i]$ ãæ°ããªãããã«ãã -
$R \leq N$ ãªã$V = \sum_{1}^{R+1} A_i$ ãšããŠã$T[V mod K]$ ã1è¶³ãããã®åŸ$R$ ã1å¢ããã
ãããã®åãçãã§ããã
ã³ãŒãã¯ãã¡ã
DPã諊ããããšãéèŠã
DPã§
åºç®ã®åãèŸæžé ã§æå°ã§ããããšããæ¡ä»¶ãæºããã«ã¯ãŽãŒã«ããã§ããã ã倧ããªç®ã§é£ãã§ãã¹ã¿ãŒãè¿ããå°ããªç®ã§é£ã¹ã°ãããåŸãããèããã
ã³ãŒãã¯ãã¡ã
蚌èšã«ççŸãç¡ããšãã®ãæ£çŽè ã®æå€§å€ãçããã
ã³ãŒãã¯ãã¡ã
Nimæ°ã®çºæ³ã¯ã2鲿°ã§æ¡ãç°ãªããã®ãç¬ç«ã«æ±ãããšã§ãã£ãã
-
$A_i$ ã®ããã$pos$ ãç«ã£ãŠãããã©ããããäºæ¬¡å é å$board[i][pos]$ ã«å ¥ãã -
$A_{1..N}$ ã®ããã$pos$ ãç«ã£ãŠããåæ°ã®åèšããäžæ¬¡å é å${nbits}[pos]$ ã«å ¥ãã
ããããã°
-
$A_i$ ã®ããã$pos$ ã0ãªãã$A_{i+1..N}$ ã®ããã$pos$ ãã1ã§ããåæ° -
$A_i$ ã®ããã$pos$ ã1ãªãã$A_{i+1..N}$ ã®ããã$pos$ ãã0ã§ããåæ° - 2鲿°ã§æ¡ã«å¯Ÿå¿ããä¿æ°
$2^{pos}$
ã®åæ°ãšä¿æ°ãæãããã®ãè¶³ããšçããæ±ãŸãã
äºæ¬¡å
é
åãšããŠã¯æ§ã
ãªå®è£
ããããæ·»ã忀æ»ãå¿
èŠãªã boost::multi_array
ããããèŠçŽ ãäžæ¬èšå®ã§ããã
ã³ãŒãã¯ãã¡ã
åŸã¯å·Šããå³ãäžããäžã«åãã£ãŠåçèšç»æ³ã§ãããå·®ãåããããã©ãã調ã¹ããäžãšå·Šã«ã»ã³ããã«åº§æš0ããããšä»®å®ãããšå Žååããæ¥œã«ãªãã
- åæå€ã¯
$DP[][0..W][0..S-1] = false$ ããã ãå·®0ã«ã€ããŠ$DP[0][1][C] = true$ ãšããã - å€ã«ãŒã
$y=1..H$ ãå ã«ãŒã$x=1..W$ ã«ã€ããŠã$DP[y][x][i \pm D_{y,x}] = DP[y][x-1][i] \lor DP[y-1][x][i]$ ã§ããããã ã$i \pm D_{y,x}$ ã¯ç¯å²å€ãªãç¡èŠãã$DP[y]$ ã®éšåã¯ä»æŽæ°ããŠããè¡ãšåã®è¡ã ãæã£ãŠããã以åã®è¡ã¯å¿ããŠããã
ã³ãŒãã¯ãã¡ã
å é ããèŠãŠæåã«èŠã€ãã1ãæ®ããæ¬¡ã«èŠã€ãã2ãæ®ã... ãç¹°ãè¿ã貪欲æ³ã§è§£ããããªããªãæå·Šã®1ãæ®ããæ¹ããããããåŸã«åºã1ãæ®ããããæ¬¡ã®2ãæ®ããäœå°ãé«ãŸãããã ã
ã³ãŒãã¯ãã¡ã
10ã®åæ°=2ã®åæ°ãã€5ã®åæ°
奿°ç³»åã¯2ã®åæ°ãå«ãŸãªãã®ã§çãã¯0ã§ããã
å¶æ°ç³»åã¯5ã®åæ°ãã©ããã ã調ã¹ãã10æªæºãªãçãã¯0ã10以äžãªãçŽ å æ°5ã®æ°ããçŽ å æ°2ã®æ°ãå€ãã®ã§çŽ å æ°5ã®æ°ãæ±ããããã㯠N % 2
ãš N & 1
ã¯ã©ã¡ããã«çµ±äžããŠæ··ããªã(ã©ã®ã¿ã¡ãã®é€ç®ã®ã³ã¹ããæ°ã«ããŠã仿¹ãªã)ã
ã³ãŒãã¯ãã¡ã
蚌æãé·ãã詳ãããã¡ãã®èšäºãåç §ã
LCA (Lowest Common Ancestor) ã䜿ãå¿ èŠã¯ãªããã294-Gã§äœ¿ãã®ã§çšæããŠãããšããã
ã³ãŒãã¯ãã¡ã
äžæ¬¡å DP(åçèšç»æ³)ããè€æ°ã®ã¹ããããçšæããŠæŽæ°ãããé忬ã®å詊ãåé¡ C09: Taro's Vacation ãšåæ§ã§ããã
ããã§ã¯çŽåã«ã°ãŒããã§ããããŒãåºããæã®åŸç¹ãçšæãããã°ãŒããã§ããããŒããããã«ã€ããŠãKååãšã¯ç°ãªãæã¯2éãããã®ã§ãã©ã¡ããåŸç¹ãé«ãæ¹ãéžãã§ãä»åã®æã§åŸãåŸç¹ãè¶³ããåè¿°ã®C09ã§ã忥ã«å匷ããã仿¥ã¯å匷ããªãããšåãããšãããŠããã
å®è£ äžã¯ä»¥äžã®ç¹ã«æ³šæããã
- iåç®ã®ãžã£ã³ã±ã³ã§ãi<Kãªãåã®æã¯ç¡ãã®ã§äœãåºããŠããã
- i mod Kåç®ãåãKéãã«ã€ããŠåçèšç»æ³ãè§£ããŠãKéãã®åŸç¹ãè¶³ãããªããªãi mod Kåç®ãç°ãªããžã£ã³ã±ã³ã¯ãåºãæãäºãã«åœ±é¿ããªãããã§ããã
ã³ãŒãã¯ãã¡ã
ã·ãã¥ã¬ãŒã·ã§ã³ããªãã§äºåæ¢çŽ¢ããã
ã³ãŒãã¯ãã¡ã
æŽæ°ãå æ°åè§£ãããšãã¯ãå æ°åè§£ãå¯èœã§ãã(æŽæ°ã®ç©ã§è¡šçŸã§ãã)ããšã ãã§ãªããå æ°åè§£ã®åŒãæ¡ä»¶ãæºããããšã確èªããã
æå°å
¬åæ°(LCM)ã¯æšç§»å std::lcm
ãš std::gcd
ãçšæãããŠããã®ã§èªäœããå¿
èŠã¯ãªãã
ãããŸã§ããã°