ARC lessons learned4 - zettsu-t/zettsu-t.github.io GitHub Wiki
ARC 185ããARC 208ãŸã§ratedã§åå ããŠããŸããã
ã³ãŒãã¯ãã¡ã
äžå¯§ã«å Žååãããã°ããããéäžã§å®è£ ãåãããªããªã£ãŠ47åæãã£ãã
-
$P = (1,...,N)$ ãªãçãã¯0 -
$P = (1,...)$ ãŸãã¯$P = (...,N)$ ãªã端以å€ããœãŒãããŠçãã¯1 -
$P = (N,...,1)$ ãªãã$P[1,N-1]$ ããœãŒãããŠå·Šç«¯ã®$N$ ãæŒãåºãã$P[2,N]$ ããœãŒãããŠå³ç«¯ã®$1$ ãæŒãåºããŠ$N$ ãå³ç«¯ã«åããã$P[1,N-1]$ ããœãŒãããŠçãã¯3 - äžèšä»¥å€ã§
$P = (N,...)$ ãŸãã¯$P = (...,1)$ ãªãã$P[1,N-1]$ ããœãŒãããŠå·Šç«¯ã®$N$ ãæŒãåºãã$P[2,N]$ ããœãŒãããŠå³ç«¯ã®$1$ ãæŒãåºããŠ$N$ ãå³ç«¯ã«åãããšçãã¯2
äžèšä»¥å€ã¯ãããæ·»ãå
å
¬åŒè§£èª¬ã«ããã°ãåå²å¯èœãã©ããã¯çޝç©min,maxã§æ±ãŸããåå²å¯èœã§ãªãã
ã³ãŒãã¯ãã¡ã
TLEè§£ããæãã€ããªãã£ãã
èªæãªå Žåã¯åããããããã§ãªããšãã«
-
$X_0 = Y_0 \land X_1 = Y_1$ ãªã$S=T$ ãšããã°è§£ã®æ¡ä»¶ãæºããã®ã§Yes - ããã§ã¯ãªãã
$X_0 \neq Y_0 \land X_1 = Y_1$ ãªãã©ããª$T$ ãéžãã§ã$S$ ã®ç¹°ãè¿ããäžèŽãããããšãã§ããªãã®ã§No - ããã§ã¯ãªãã
$(X_0 - Y_0)(X_1 - Y_1) > 0$ ãªãã$S$ (空ã§ã¯ãªã)ãš$T$ ãã©ãéžãã§ãã$X$ ãŸãã¯$Y$ ã«ã€ããŠ$S$ ãŸãã¯$T$ ã®ç¹°ãè¿ããäœåãªã®ã§No
äžèšä»¥å€ã§ã¯ No ã§ãã(å
¬åŒè§£èª¬ã«ããéãäžèš3ã No ãšèšãæããŠããã)ãããããå
ãåãããªãã£ãã
ã³ãŒãã¯ãã¡ã
äœæéèããŠãåããã諊ããã
è§£ãæ¹ã¯å ¬åŒè§£èª¬ã«ããéãã§ãããDPã§è§£ãããšããŠçµå±è§£ããªãã£ããåºåäŸ3ã2ã®60ä¹ãšåãã£ãã®ã倧äºã«ãã¹ãã ã£ãã
å¶çŽããè§£ãæ¹ãå¯ãããã¯ãšãª
- ãã¹ãŠã®ã¯ãšãªã«ã€ããŠãå·Šå³ã©ã¡ãã«ãã§ãããšåæåãã
-
$V_i \leq V_j$ ãªããã¯ãšãª$Q_i$ ã¯ã©ãããŠããã -
$P_i = P_j$ ãªããã¯ãšãª$Q_i$ ãå·Šå³ã©ã¡ãã«ããŠã$Q_j$ ãšè¡çªãé¿ããããªãã®ã§ãçãã¯0ã§ãã -
$P_i < P_j$ ãªããã¯ãšãª$Q_i$ ãå·Šã$Q_j$ ãå³ã«åºå®ãããéã«èšããšã$Q_i$ ãå³ã«çœ®ããªãã$Q_j$ ãå·Šã«çœ®ããªããšèšå®ããããããã¯äžæžãããŠæ§ããªã(å¶çŽãå³ãããªãæ¹ã«ããè¡ããªãã®ã§)ã -
$P_i > P_j$ ãªãã$Q_i$ ãå·Šã«çœ®ããªãã$Q_j$ ãå³ã«çœ®ããªããšèšå®ãã
å šã¯ãšãªãåŠçããŠãåãããçµã¿åãã(å·Šå³ã©ã¡ãã§ããªã2ãå·Šå³ã©ã¡ããäžæ¹ãªã1ãå·Šå³ã©ã¡ããäžå¯ãªã0)ã®ç©ãçãã§ããã
ã³ãŒãã¯ãã¡ã
Aåé¡ããæãããããã«ãã£ã®å±±ãç¯ãã€ã€52åã§è§£ãããåé¡éžã³ããšãŠãéèŠã§ããã
å¶çŽãã
0,1,00,01,10,11,000,001,010,011,1000,... ãšããé çªã§æ®ãããã€ããªããªãŒãBFSããŠæ ¹ããåé ç¹ãŸã§ã®ãã¹ãåæããããšããé°å²æ°ã§ãããå
·äœçã«ã¯ããã¥ãŒã䜿ã£ãŠ
- ãã¥ãŒã®åæã¡ã³ãã¯çµ
$(2^{K-1}, K-2)$ ãšãããããã¯$2^{K-1}$ ã®ããã$K-2$ (LSBã0ãšæ°ãã)ãæäœãããšããæå³ã§ããã䜵ããŠã$A = { 2^{K-1} }$ ãšããã - ãã¥ãŒãã
$(V,P)$ ãåãåºãããã$A$ ã«$V + 2^{P}$ ã远å ãããèŠããã«ããããç«ãŠãå€ã$A$ ã®æ°ããªã¡ã³ããšããããã®åŸ$(V,P-1)$ ãš$(V + 2^{P}, P-1)$ ããã¥ãŒã«å ¥ããã - ããã
$|A| = N$ ã«ãªããŸã§ç¹°ãè¿ãã$2^{K-1} < N$ ãªã®ã§ãã®æäœã¯ãã€ãæ¢ãŸãã
äžèšã¯å ¬åŒè§£èª¬2ã®äžã®bitããæ§æããæ¹æ³ã§ããããããå転ããŠãããã£ãã
ã³ãŒãã¯ãã¡ã
æ¡DPããšæã£ããå ¥åäŸéãã ã£ãã
ã³ãŒãã¯ãã¡ã
ãã¯ã600ç¹åé¡ã¯å³ãããç¿æ¥2æé38åæããŠè§£ããã
硬貚
- ç°çš®ãªãäžæ¹ãæ¬ç©ãäžæ¹ãåœç©ãªã®ã§ãåŸã§å€å®ãããã
$i$ ã$D$ ã«ä¿åããŠããã - åçš®ãªãäž¡æ¹ãšãæ¬ç©ãããã¯äž¡æ¹ãšãåœç©ãªã®ã§ãunion-findæšã§ããŒãžããŠä»£è¡šå
ã
$L$ ã«ä¿åããŠããããã®ãšãunion-findæšã«ããã$size(x)$ ãã$x$ ãå±ããéåã®å€§ãããšããã
-
$l = r$ ãªãããã®èŠçŽ ãåŸã§æ¯èŒããããšã«ããŠã$S$ ã«$L_l$ ã远å ããŠæ¯èŒãçµäºããã -
$Z = M - |D| - |U| < size(x)$ ãªãã$x$ ã代衚å ãšããéåã¯ãã¹ãŠæ¬ç©ã®ç¡¬è²šã§ããããã£ãŠ$size(L_1) > Z \land size(L_r) > Z$ ãªããäž¡æ¹ãšãæ¬ç©ãªã®ã§ãã¯ãšãªãæããããšãªã$L_1$ ãš$L_r$ ãããŒãžããŠ$S$ ã«è¿œå ããã - ããã§ãªããã°ã¯ãšãªãæãã
- åçš®ãªã
$L_1$ ãš$L_r$ ãããŒãžããŠ$S$ ã«è¿œå ããã - ç°çš®ãã€
$size(L_l) > Z$ ãªãã$L_r$ ã代衚å ãšããéåã¯ãã¹ãŠæ¬ç©ã®ç¡¬è²šã§ãªã®ã§ã$U$ ã«è¿œå ãã - ç°çš®ãã€
$size(L_r) > Z$ ãªãã$L_l$ ã代衚å ãšããéåã¯ãã¹ãŠæ¬ç©ã®ç¡¬è²šã§ãªã®ã§ã$U$ ã«è¿œå ãã - äžèšä»¥å€ãªãæ¬ç©ãåœç©ãã¯ãŸã åãããªãã®ã§ã
$L_l, L_r$ ã$S$ ã«è¿œå ããã
- åçš®ãªã
äžéã
ãããããšåœç©ã®ç¡¬è²šã¯
äžèšã®è§£ãæ¹ã¯å ¬åŒè§£èª¬2-1ã«äŒŒãŠãããå ¬åŒè§£èª¬1ã®éãè§£ããš ãã ãªãããã®çºæ³ãç¡ããšè§£çæéã2æéã«åãŸããªãã
ARC ratedååå ã ã£ããA,B 2å®ã42:34ããŒããã§ãåã®éããã©ã§ããã
ã³ãŒãã¯ãã¡ã
äž¡è
ã®å
šã«ãŒãã®åã¯
-
$S mod M = 0$ ãªããBobã¯æåŸã®äžæãåŒããããã®ã§Aliceã®åã¡ã§ãã -
$S mod M > N$ ãªããAliceã¯æåŸã«$1..N < M$ ãåºããBobã¯æåŸã®äžæãåŒããããã®ã§Aliceã®åã¡ã§ãã - ãã以å€
$0 < S mod M \leq N$ ãªããBobã¯æåŸã«$1..N$ ãåºãããããã®åã«ã«ãŒãåºãAliceã¯å Žã®ã«ãŒãã®åã$M$ ã®åæ°ã«ãªããããåŸãªãããã£ãŠBobã®åã¡ã§ããã
ã³ã³ãã¹ãäžã®æèã®éçšã远ãã
- Grundyæ°ããšæã£ããããã®ã²ãŒã ã¯å¯èœæããããå€ãã
-
$1..N < M$ ãããå Žã®ã«ãŒãã®åã$M$ ã®åæ°ã«ãªã=è² ãããããªæãã»ãŒç¢ºå®ã«åé¿ã§ãããå ¬åŒè§£èª¬ãèªãã§åèªèããããã«ãŒãã¯ããããç°ãªãã®ã§ææã2æä»¥äžããã°ç¢ºå®ã«è² ããåé¿ã§ããã - æåŸã®1ã¿ãŒã³ã¯åºãã«ãŒãã«éžæè¢ããªãæã§ãããããã§åæã決ãŸãã ããã
- åŸæãè©°ãäžã€ã®ç¶æ³ã¯ããã¹ãŠã®ã«ãŒããåºåã£ããšãã§ã
$N(N+1) mod M = 0$ ã§ããã - åŸæãæåŸã«åºãã«ãŒãã
$S \in 1..N$ ãšããã$N(N+1) - S mod M = 0$ ãªãåŸæãã«ãŒããåºãåã«ãå æã¯å Žã®ã«ãŒãã®åã$M$ ã®åæ°ã«ãªããããåŸãªããæ¡ä»¶ãèšãæãããšã$N(N+1) mod M \in 1..N$ ã§ããã - åæ§ã®è°è«ãããäžèšã§ãªããã°ãå æã¯è² ããåŸæãè² ããã
äžèšããŸãšãããšã Bob ãããã§ãªããã° Alice ã çã ã§ããã
ä»åã¯çè©°ãã§æåºããããã²ãŒã æšãæ§ç¯ããŠè§£ãæšæž¬ããããšãã§ããã
// 0 means the first player wins
Num visit_dfs(std::vector<Set>& hands, Num turn, Num accum, Num m) {
const auto other = 1 - turn;
if (hands.at(turn).empty()) {
return other;
}
if (hands.at(turn).size() == 1) {
const auto s = accum + *hands.at(turn).begin();
return ((s % m) == 0) ? other : turn;
}
Vec vs;
for(const auto& x : hands.at(turn)) {
vs.push_back(x);
}
for(const auto& x : vs) {
const auto s = accum + x;
if ((s % m) == 0) {
continue;
}
hands.at(turn).erase(x);
const auto result = visit_dfs(hands, other, s, m);
hands.at(turn).insert(x);
if (turn == result) {
return turn;
}
}
return other;
}
void solve(std::istream& is, std::ostream& os) {
const std::vector<std::string> players {"Alice", "Bob"};
for(Num m{2}; m<=10; ++m) {
for(Num n{1}; n<m; ++n) {
std::vector<Set> hands(2);
Num total = n * (n+1);
for(Num i{0}; i<2; ++i) {
for(Num j{1}; j<=n; ++j) {
hands.at(i).insert(j);
}
}
const auto r = total % m;
const auto r_in = (1 <= r) && (r <= n);
os << "m=" << m << ", n=" << n <<
", mod=" << r << ":" << ", 1<=r<=n " <<
players.at(r_in) << " " <<
players.at(visit_dfs(hands, 0, 0, m)) << "\n";
}
}
}ã³ãŒãã¯ãã¡ã
ãŒããµã ãªã®ã§ãå
šèŠçŽ ãå¹³åå€ä»è¿ã«ããã£ãŠããç¶æ³ãäœãããã€ãŸãå
šèŠçŽ ã®å·®ãé«ã
1ã«ãããå
·äœçã«ã¯ã
åŸã¯æäœã«ççŸããªãããšã確ãããã No ãèŠã€ãããªããã° Yes ãçãã§ããã
ãã®æ¹æ³ã¯å ¬åŒè§£èª¬1ãšåãã§ãããARCæ©è§£ãã§åãŠããªãäžå€éã ãããšæã£ãŠãããã匷éãåãããã®ã¡ã«ã188-Bãäžå€éã ãšæ°ã¥ããã«0å®ããããããŠ203-Bã§é¡é¡ãåºãŠã蚌æãæãã€ããªãã£ãã
ã³ãŒãã¯ãã¡ã
é£æåºŠãé«ãããŠåå ããªãã£ããäœæéçµã£ãŠãè§£ãããšãã§ãããããããžã«ã«ãœãŒãã®æ°ãäžããå¹çããããæ¹æ³ã¯ç¡ãããšæ¢ãããããã®åé¡ã®å ¬åŒè§£èª¬ã«ãã©ãçããŠããŸã£ãã
åææ¡ä»¶ãšããŠãéšåæš
ãã®åæã§ãå ¬åŒè§£èª¬ã«ããéããé ç¹éã®é¢ä¿ã¯æšæ§é ã«ã§ããã倧ããªçªå·ã®é ç¹ããé ã«èµ°æ»ããå°ããªçªå·ã®é ç¹ãæ ¹ãšããéšåæšã®é ç¹æ°ãæ±ãããäžéãèµ°æ»ããããå°ããªçªå·ãã倧ããªçªå·ã®é ç¹ã«åãã£ãŠãããããã®é ç¹ã«ã€ããŠéšåæšã®çµã¿åãããæ±ããŠæãããšæšå šäœã®é ç¹ã®äžŠã³æ¹ãäœéããæ±ãŸãã
ãªã
ARC rated 2åç®ã¯ã120åæããŠäžåãè§£ããªãã£ããååã®ããã«äžæãã¯ãããªãã
ã³ãŒãã¯ãã¡ã
è§£ãããšããã°Aåé¡ãããªããããšããã®ã¯ãå顿ãããé äœè¡šãããåãã£ãã®ã§ãã²ãããåé¡ã«éäžããŠæ©ã¿ã¯ãªãã£ãã
æçªã®éäžã§åºçŸ©å調å¢å ã«ãªã£ããå³å»æã¡åã£ãŠããã
é£ãåãæ° No ã¯ãªãããã ã蚌æã§ããªãã
ç¿ææ°ãä»ããããšã«ã
ãããŸã§ããã°è§£æ³ãåããããŸãå
¥åãåºçŸ©å調å¢å ãªãäœãããªãã No ã§ããã
ã³ã³ãã¹ãåŸã« Yes 1 1 ãééããŠããããæåŸã®2 WA 1 msec ã ãšèªåã§æ°ãä»ããã
æ°åãåºçŸ©å調å¢å ãã©ããã¯ã std::ranges::is_sorted ã§èª¿ã¹ããããè¿ãå€ã¯ç矩å調å¢å ã§ã¯ãªãåºçŸ©å調å¢å (éæžå°)ãã©ããã§ããã
ARC rated 3åç®ãBåé¡ 1å®ã ã£ããã³ã³ãã¹ãäžã«édiffãACããã®ã¯åããŠã26:17ããŒããã§åã®é»ããã©ã§ãããæå€§ç¬é18äœããéãåã£ããAåé¡ããBåé¡ã®åŸç¹ãé«ãããšã«å©ãããããAåé¡ã¯90åæãããå šãåãããªãã£ãã
ã³ãŒãã¯ãã¡ã
DPã ãšæã£ããããã以äžã®ããšã¯åãããªãã£ãã
ããæååã®å®çŸ©ã¯ã A,B,C ããããã®åºçŸåæ°ã®å¶å¥ãããã£ãŠãããã®ããšèšãæãããããããã8ç¶æ
ãšããŠåºå¥ã§ãããå
¬åŒè§£èª¬ã«ããéãå¶å¥ãå転ããŠããç¶æ
ãåäžèŠããŠ4ç¶æ
ã«æžããããšãã§ããããšèšãããšã«æ°ãä»ããªãã£ãã
ããç¶æ
ã«æãŸããæååã¯ããæååã§ãããããã¯æŽæ°åã®çޝç©åã«ã€ããŠã
å
¬åŒè§£èª¬ã«ããç¶æ
é·ç§»ãå·§åŠã§ããã
ã³ãŒãã¯ãã¡ã
äžå¯§ã«å Žååãããã
Yes ã§ããã
No ã§ããã
Yes ã§ãããããã§ãªããã°å¡ããªãé ç¹ãããã®ã§ No ã§ããã
以äžã§çããç¶²çŸ
ã§ãããå
¬åŒè§£èª¬ãšã
ã³ã³ãã¹ãäžã®æèã®éçšã远ãã
-
$N$ ãšäœããäºãã«çŽ ãªããåãããšãç¹°ãè¿ããŠãã¹ãŠã®é ç¹ãå¡ãããããã§ãªããã°å¡ãæ®ããããããã®äœããæ±ããã°ãããšçŽèгçã«ãããããã - ãã«ããã¹ãã±ãŒã¹ãªã®ã§ããšããžã±ãŒã¹ãééãããšå€§éã®WAãè¿ã£ãŠããŠãæ ¹æ¬çã«è§£æ³ãééã£ãŠããã®ãããã§ãªãã®ãåãããªãããã£ãŠæåã«ãšããžã±ãŒã¹ãæããŠããã以å€ã®å Žååããäžå¯§ã«è¡ãã
- 顿ãçè§£ããããã«æãåããã
$N = 2$ ãç¹æ®ã ãšåãããäºãã«å¯Ÿç§°ãªäœçœ®ãªãè©°ãã®ãåããã -
$N$ ãå¶æ°ãªãåæã¯èªåã®äœçœ®ã察称ãªäœçœ®ãããªãã®ã§ããšãããã察称ãªäœçœ®ã«æã£ãŠãçŽåã«æã£ãç¹ã®å¯Ÿç§°ãªäœçœ®ã«æã€ã®ãç¹°ãè¿ãã$N$ ã奿°ã®å Žåãåæ§ã«ç¹°ãè¿ãã以åŸåç¹ãèªã¿æ¿ããã ããªã®ã§åšææ§ããããããã§å šé ç¹ãå¡ããã ããã -
$gcd(N,x) = gcd(N,N-x)$ ãªã®ã§ã$K$ ã$N - K$ ã«èªã¿æ¿ããŠããããããã§å Žååããæžãã笊å·ãå ¥ãæ¿ããŠãæå€§å ¬çŽæ°ã¯å€ãããªãã®ã§ã絶察å€ãåã£ãŠå Žååããæžããã - ãã以äžå Žååãã¯ç¡ãã®ã§æåºãããACãããæå€§ç¬éé äœããæ³åããã«ããã®æç¹ã§å€ãã®æ¹ã¯Aåé¡ãè§£ããŠããéäžã§ãBåé¡ãæåã«åãçµãã æ¹ã¯å°ãªãã£ãã®ãããããªãã
ã³ãŒãã¯ãã¡ã
Div.2 ã«ãªã£ãŠ400ç¹åé¡ãåºãã®ã«ã120åæããŠäžåãè§£ããªãã£ããARCã¯ããã»ã©çããªãã
è§£ã«ãªãããªããã®ãé€å€ããã䞡端ã¯å€ããããªãã®ã§
ãªããŒã·æäœã¯ãäž¡é£ãç°ãªãå Žæ
å
¥å 1010... ã§ã¯ãå¹
以äžã©ã³é·ã¯ãã¹ãŠå¥æ°ãšãããã©ã³é·ã1ã®ã©ã³ã¯äœãæäœããªãã®ã§ç¡èŠãããã©ã³
ç°ãªãã©ã³ã®æäœã«ã€ããŠé åçµã¿åãããèããã
101 ã®çãäžã 1 ã§å¡ããªããŒã·æäœãããªãã®ã§åãã( 010 ãå転ããŠãåããªã®ã§ãä»¥åŸ 0 ãš 1 ãå
¥ãæ¿ããå Žåã¯èããªã)ã
å
¬åŒè§£èª¬ã¯äžèšãšåãããšãèšã£ãŠãããç¹ã«ãããã©ã³ã®æäœåæ°
ã³ã³ãã¹ãäžã®æèã®éçšã远ããäžèšã«æžãã
è§£ã«ãªãããªããã®ãé€å€ããã䞡端ã¯å€ããããªãã®ã§
ã©ã³ã®èŠçŽ ããã¹ãŠããããããšãèããã䞡端ã¯ããã£ãŠããã®ã§ã䞡端ã®éã«
åè»¢æ¹æ³ã¯äºéããããäžã€ã¯
ããã©ã³
ãšæã£ãã®ã ããå
¥åäŸä»¥å€ãçããå
šç¶åããªããå®éšã³ãŒãã15åã§æžãã°åãã£ãããšã§ãããããããã以å€ã®ããšã«æ°ãåããéããŠãå®éšã³ãŒããæžãããšæããªãã£ãã®ã¯åçç¹ã§ããã以äžã«ããéãã 10... ã 11... ã«å€ããæ¹æ³ãç·åœããã§æ±ããå®éšã³ãŒãã¯ããã»ã©è€éã§ã¯ãªãã
using Pattern = std::bitset<32>;
using Seq = std::vector<std::pair<Num,Num>>;
Num visit_dfs(Pattern current, const Pattern goal, Num width, Seq& seq) {
Num total {0};
if (current == goal) {
for(const auto& [l,r] : seq) {
std::cout << l << ":" << r << " ";
}
std::cout << "\n";
return 1;
}
for(Num left{0}; (left+1)<width; ++left) {
bool stop {false};
for(Num right{left+1}; !stop && right<width; ++right) {
if (current[left] == current[right]) {
stop = true;
const auto s = right - left;
if (s <= 1) {
break;
}
auto next = current;
for(Num i{left+1}; i<right; ++i) {
next[i] = current[left];
}
if (current != next) {
seq.push_back(std::make_pair(left+1, right+1));
total += visit_dfs(next, goal, width, seq);
seq.pop_back();
}
}
}
}
return total;
}
void full_search(std::istream& is, std::ostream& os) {
Num width = 5;
is >> width;
Pattern current(0);
for(Num i{0}; i<width; i+=2) {
current.set(i);
}
Pattern goal(0);
for(Num i{0}; i<width; ++i) {
goal.set(i);
}
Seq seq;
os << visit_dfs(current, goal, width, seq) << "\n";
}
int main(void) {
full_search(std::cin, std::cout);
return 0;
}ã³ãŒãã¯ãã¡ã
ã³ã³ãã¹ãæ°æ¥åŸã«è§£ãããDiff 1889 ã®åé¡ãè§£ããã®ã¯ã次åã«æåŸ ãæãŠããã³ã³ãã¹ãäžã¯15åæããŠåãããªãã£ãã®ã§èŠéã£ãããåãã£ãŠããŸãã°å®è£ ã¯ç°¡åã§ããã
ãã®åé¡ã®èŠç¹ã¯ãã³ãã§ã¯ãªãã³ãã®ééãç§»åã§ããããšã§ãããã³ãã®ééãç§»åãå·Šããå³ã«ç§»åã§ããããšã瀺ããå³ããå·Šã«ç§»åããã®ã¯å·Šå³å¯Ÿç§°ã«ããã ããªã®ã§ãã¯ãå¯èœã§ããã
å·Šã®ç«¯ã®ã³ããåç¹
ã©ã®ã³ããã©ãã«ç§»åãããã¯æ°ã«ããªããå
ã®ã³ããã©ãã«ãã£ãããæ°ã«ãããåæé
眮ãã
ããããåããã®ã¯æäœ1åã§ã
çããæå°ã«ããã«ã¯ãééãå°ãªããã®ã»ã©å·ŠåŽã«å¯ããã°ãã(ééã倧ãããã®ãå·ŠåŽã«ãããªããå³ã«ããééãšå
¥ãæ¿ãããšçããå°ããã§ããã®ã§)ããã£ãŠå¶æ°çª
ãœãŒãåŸã®
ãã®æ¹æ³ã¯å ¬åŒè§£èª¬ãšåãã§ãããäžèšãäžå€éã ãšåŸã§ç¥ã£ããäžå€éãèŠæãã°ã³ã³ãã¹ãã§å§åã§ããããäžå€éãèŠæãã®ã¯ãã®éãé£ããã
ã³ãŒãã¯ãã¡ã
ã³ã³ãã¹ãäžã«ã¯ã¡ãã£ãšèŠããè§£ããããç¡ããšè«Šãããã®åŸ4æ¥ã»ã©èããããå šãçããåãããªãã£ããã¹ã©ã€ã ã¯ååããããšãèšç®éãæ±ºãããšããçºæ³ã«è³ããªãã£ãã
ã¹ã©ã€ã ã倧ããããã®ã§ã¯ãªãããã以äžå€§ãããªããªããšããå£ã«æ³šç®ããã®ã¯æ£ããã£ãããããèšç®éã®èŠç©ãããã§ãã
ãã®åé¡ã®2ãæ¬¡ã®ABC 384ã«åºãããã¡ãã¯ç·diffã®ãšã£ã€ããããåé¡ã ããããã«ãã£ãåºããŠããŸã£ãã
ã³ãŒãã¯ãã¡ã
Div.1 ã¯ã¬ãŒãã£ã³ã°ãè¶³ããªãã®ã§unrated確å®ã§ãããAåé¡ã¯è§£ãããšæã£ããçµå±è§£ããªãã£ãããããããšè¶³ããªãã
ç¿ææãã€ããè§£æ³ã¯ãå ¬åŒè§£èª¬ãšã»ãŒåãã ã£ãããããè§£æ³ã®è©°ããçããšãããããå®è£ æ¹æ³ãåãããªãã£ãã以äžåéåºéã§èããã
ããç¯å²
ãã2ã€ã®ç¯å²
-
$S1 \cap S2 = \emptyset$ ãªããäž¡ç¯å²ã«æäœ2ãé©çšããŠéæã§ãã -
$S1 \supset S2$ ãªãã$S1$ ã«æäœ1ã$S2$ ã«æäœ2ãé©çšããŠéæã§ãã -
$S1 \cup S2 = [1,N]$ ãªããäž¡ç¯å²ã«æäœ1ãé©çšããŠéæã§ããããããæããŠããããšããããå®è£ ãåããªããŠåå°œããã - äžèšä»¥å€ã§
$M \leq 2$ ãªãè§£ç¡ãã§ãã
äžèšä»¥å€ã®å Žåã
å®è£ æ¹æ³ããã£ã±ããããããä»ã®æ¹ã®ã³ãŒããèªãã§ããããçè§£ãããã³ã¹ã2ã®ãšãã®å®è£ æ¹æ³ã¯ä»¥äžã®éãã§ããã
-
$S1 \cap S2 = \emptyset$ ã¯ã$min(R_i) \leq max(L_j)$ ãæºãã$(i,j)$ ãéžã¶ãããã¯$min(R)$ ,$max(L)$ ããããã æ·»ãå$1..N$ ã«ã€ããŠæŽæ°ããã -
$S1 \supset S2$ ã®æ±ãæ¹ãåãããªãã£ããã»ã°ã¡ã³ãæšã䜿ã£ããã©ãããŠãçããåããªããä»ã®æ¹ã®ã³ãŒããåèã«ã$S$ ã$[L,R)$ ã®æé ã«ãœãŒããã$max(R)$ ãæŽæ°ãã$R_i \leq max(R)$ ã€ãŸãå³ç«¯ãé転ãããæ¡ä»¶ãæºãã(巊端$L$ ã¯éæžå°ãªã®ã§)ãçå·ãå«ã(åäžç¯å²ãäºã€ããã°ãæ£è»¢ãšå転ã§$[1,N]$ ãèŠãã)ã -
$S1 \cup S2 = [1,N]$ ã¯ã$[1,R_i)$ ,$[L_j,N+1)$ ã ãæ³šç®ããã$1,N+1$ ãåºå®ããŠ$max(R)$ ,$min(L)$ ãæ±ãã$max(R_i) \leq min(L_j)$ ãªãæ¡ä»¶ãæºãããããã¯ããã§ãã£ãŠããããã³ã¹ã3以äžã¯å¿ ãéæã§ãããšæ°ãä»ããªããšãã®åŠçãæãã€ããªãã
ã³ã³ãã¹ãäžã«ã¯éã«åããªãã£ãããç¿æã ãããæãã€ããã®ã ããèªåACãããã£ããæ°Ždiffãè§£ããªããšARC Div. 2ãå³ããã
以äžã¯ã³ã³ãã¹ãäžã«æãã€ããè§£æ³ã§ããããŸãã£ããçå€ãã ã£ãããã ã
æäœ1,2ãåç°äžã®æäœãšããŠè¡šçŸãããæäœ1ã¯
åç°ã® -1 ãåºåãããæäœã®éœåäžã
åã¯ãšãªã«å¯Ÿå¿ããæäœ1,2ãããããçšæãããGreedyãªæ¹æ³ãšããŠã std::set ã§æã¡ããã®æå€§èŠçŽ ãã»ã°ã¡ã³ãæšã«èŒããªããã°ããã
ã»ã°ã¡ã³ãæšã«ã
ãã®æ¹æ³ã¯ååãããACããæ®ããWAã«ãªããããããã³ã¹ã3以äžãéæã§ããŠããªããå®è£ ãããçŽããšå°ã ãããã« ãªããããã§ãé·ãã
ä¹ ãã¶ãã®ratedåå ãA,B 2å®ã103:12ã®7ããã§ããªããšã0å®ãéãããèŸãããŠæ°Žããã©ã確ä¿ãããå顿ãã±ã£ãšèŠãã ãã§ãA,Båé¡ã¯è§£ããªããã°ãªããªãé£æåºŠ(Aã¯è¶diff, Bã¯ç·diffãæ³å®)ãC,D,Eåé¡ã¯è§£ããªããšå€æãããA,Båé¡ã¯ã©ã®ã¿ã¡è§£ããªããã°ãªããªãã®ã§Aåé¡ããçæããããçµæçã«Båé¡ããè§£ããæ¹ãããã£ãã
ã³ãŒãã¯ãã¡ã
Greedyã ãšããã£ããèå¯ã«æéåãã46åæããŠæåºããã1 WAãè¿ã£ãŠããŠ62åæãã£ãã
åºæ¬çã«ã
-
$S$ ã®çœ®ãæãå äœçœ®$to$ ã0ãšãã -
$U$ ã®çœ®ãæãå äœçœ®$from$ ã0ãšãã -
$S[to] < U[from]$ ãªãã$S[to]$ ã$T[from]$ ã§çœ®ãæããã-
$T$ ã®æåŸã®çœ®ãæãäœçœ®$L$ ã$max(L,P[U[from]])$ ã§æŽæ°ããã$to$ ãš$from$ ããããã1ã€å¢ããã -
$S$ ã«$T[from]$ ãæžã蟌ãã ããšã$R[T[from]]$ ã«èšé²ãã
-
-
$S[to] \geq T[from]$ ãªãã$S[to]$ ã$T[from]$ ã§çœ®ãæãããšæããã®ã§çœ®ãæããªãã$to$ ã1ã€å¢ããã$S$ ã«$S[to]$ ãæžã蟌ãã ããšã$R[S[to]]$ ã«èšé²ãã - ããã
$to < N \land from < M$ ã§ããéãç¹°ãè¿ã
1 WA察çãšããŠæãã€ãéãã®ããšãå
¥ããã®ã§äœåãªã³ãŒãããããããããªãã
ã³ã³ãã¹ãäžã®æèã®éçšã远ãã䜿ããšæããæ°åã¯
- åé¡ããã£ããèªãã
$T$ ã¯é çªã«äžã€ãã€åŠçããªããã°ãªããªããã€ãŸããã¹ãŠæ°åã®è¡ãå ãæ±ºããå¿ èŠããããã$S$ ã¯ã©ãã1ãæãéžãã§äžæžãããŠãæ§ããªã -
$T$ ã®æ°åã§$S$ ã眮ãæããŠåŸãããªãç©æ¥µçã«çœ®ãæããã眮ãæãããšæãããªããããããŸã§æºããŠãã©ãããŠã眮ãæããªããã°ãªããªãç¶æ³ãŸã§å å»¶ã°ãã§ãããå®éã«ã¯æºãããšãããããäžæžãããŠãªãã£ãããšã«ããã®ãæ£ããã - éé ã«ãœãŒãæžã®
$T$ ã$U$ ãšãã$U$ ãå·Šããå³ã«ã¿ãŠã$S$ ãå·Šããå³ã«greedyã«çœ®ãæããã°å€§äœçãã¯ãã£ãŠããããããå ¥åäŸã埮åŠã«åããªãã - éé ã«ãœãŒãæžã®
$T$ ã ãèããã®ã¯ä¹±æŽã§ãå ã ã®$T$ ã®é çªã«æå³ããããšæ°ãä»ããæ¹éãäºè»¢äžè»¢ããããã«ãè²ã ãšã³ãŒããééã£ãŠããã$to$ ã$from$ ãšæžãããã - æ¹ããŠã
$U$ ã§ã$S$ ãå·Šããå³ã«greedyã«çœ®ãæããäœã£ã$U$ ã$S$ ã«åã蟌ãããªãåã蟌ã¿ãåã蟌ããªããªã$S$ ã®å³ããåœãŠã¯ãããšããããã§ããã$S$ ã®å Žæã¯å³ããé ã§ã¯ãªãæå³ããå Žæã¯ãªããåã蟌ãå€ã¯$T$ ã®è¡ãå Žæã®ãªãæ°åã®ãã¡æå³ãªã®ã ãããã®ããšã«ãªããªãæ°ãä»ããªãã£ãã®ã§æéãæãã£ãã - äžèšãèžãŸããŠã
$U$ ãåœãŠã¯ããæ°åãé åºä»ãã®$T$ ã«åœãŠã¯ããé·ãã³ãŒããæžãã幟床ãã³ãŒããæžãçŽãããéå®è£ ããé¢ããŠããã®ã§æéãæããã - æ©ãBåé¡ã«ãããªããšãŸããã®ã§æåºãããš1 WAãè¿ã£ãŠãããåºæ¬æ¹éã¯ãã£ãŠããã®ã ããã©ã®ãšããžã±ãŒã¹ãæŒããŠããã®ãããããªãã1å®ã§é ããšè² ããããªã®ã§ããšã«ããæåºé床éèŠã§ããã«ãã£å€çºã®2å®ãç²ãä¹±ææŠãèŠæããã
- ééã£ãŠããã®ã¯
$T$ ãäžæåã®å Žåãšæ±ºãæã¡ããŠãè²ã æžãæ¿ãããéã£ããæããã«çŠããããäœèšãªããã«ãã£ããã(5 WAsãšã)ã - 0å®ã¯éãããæ£è§£è ãå€ããBåé¡ãæ©ãè§£ããªããšãŸãããšããã
ã³ãŒãã¯ãã¡ã
Båé¡ã®æ¹ãAåé¡ããè§£çæéãçãã£ããçµæçã«ã¯éã«åã£ãããåé¡éžã³ãé£ããã
ãã®ããšã¯å
¥åºäŸã® intToBits(20250126) ã䜿ããçè©°ãããããARCã¯å®éšã倧äºãšããæèšã掻ããã
ãããã®æŽå¯ããã 0 ã®ãããã 0 ãŸã㯠1 ã«ããæ¹æ³ãã€ã
Leading 0sããªã -1 ãåºåããããããæããŠããŠWAããã
-1 ãåºåããããããæããŠããŠWAãããè§£ããããªã -1 ã«ãªãæ¡ä»¶ãtrailing 0sãç¡ãæ°ãšåéãããã®ãWAã®åå ã§ãããæ£ããã¯ããã«æžããéãã
ãã«ããã¹ãã±ãŒã¹ã¯ãšããžã±ãŒã¹ãééãããšå€§éã«WAãè¿ãããä»åã¯ååWAã ã£ãã®ã§è§£æ³ã«èªä¿¡ãæãŠãããã¹ãã±ãŒã¹ã®ããããã«æãããã
ä»åã¯æŽæ°ã®ç¯å²ãRã®æŽæ°ã«åãŸã£ãããåãŸããªããšãã¯gmpã©ã€ãã©ãªãRubyã䜿ã£ãŠèšç®ããå¿ èŠãããããã ã
as.integer(intToBits(20250126))20250126.to_s(2)
# "1001101001111111000001110"
20381694.to_s(2)
# "1001101101111111111111110"ã³ã³ãã¹ãäžã®æèã®éçšã¯ãã»ãŒäžèšã®éãã§ãããA,Båé¡ãšããããŸããªæ¹éã¯ããèŠãããã现éšã®è©°ããçãæéãæãã£ãäžããã«ãã£ã®å±±ãç¯ããçµãã£ãŠã¿ãã°A,B 2宿é ã§ãã£ããA,Bãããã30åã§è§£ããªããšéããã©ã¯å³ãããæ¹ããŠå®è£ ãããšããããªã« ç°¡æœãª ã³ãŒãã«ãªããx86ã®PDEPåœä»€ã¯ç¢ºãã«ããŒããŠã§ã¢ã§éãããC++ã§æžããŠãæ°è¡ã§ããã
ä»åã¯èгå¯ã ãã§æ¹éãç«ãŠãã®ã§å®éšã³ãŒããæžããªãã£ãããå®éšã³ãŒããæžããæ¹ãæ©ãè§£ãããããããªããæ®ãæéã50åãããã ã£ãã®ã§å®éšã³ãŒããæžãæéãçããã®ãè£ç®ã«åºãã
void experiment(std::istream& is, std::ostream& os) {
using Num = unsigned long long int;
Num n {0};
is >> n;
Vec cs;
for(Num x{1}; x<=n*n; ++x) {
if ((x ^ n) == (x % n)) {
cs.push_back(x);
}
}
print_oneline(cs, os);
}ã³ã³ãã¹ãäžã¯æããã¹ããªããæ®ã16åã¯é äœè¡šãçºããŠçµãã£ãã
å ¬åŒè§£èª¬ã®Writerè§£ããã®ãŸãŸå®è£ ãããš ãã¡ã ã«ãªããTesterè§£ã¯çްããå®è£ æ¹æ³ãããããããªãã
Aåé¡1å®ã74:55 2ããã§ããŸãããŠããªããšã0å®ãéãããèªåã®ã¬ãŒãã£ã³ã°åž¯ã§æ£è§£ç7å²è¶ ã®åé¡ãèœãšãããã«ã¯ãããªããBåé¡ãã³ã³ãã¹ãäžã«è§£ããªãã£ãã®ã¯ãããããCåé¡ã¯åãè¶³ããªãã
ã³ãŒãã¯ãã¡ã
æ·±ãèããããŠæ©ãã§ããŸã£ãã
ARCR ARCR A... ãšäžŠã¹ãã°ãå
ã®
-
$N$ ã4ã®åæ°ã§ããã°ã$A$ ãã©ãããARCRã ãã§å šéš1ã«ã§ããã®ã§Yesã§ããã -
$N$ ã4ã®åæ°+1ã§ããã°ã$A$ ã«äžã€ã§ã1ãããã°ãããçµç«¯ã®Aã«ããããšã§ãARCRããªãã¹ãŠå ãããã1ãAã«ããããšã§å šéš1ã«ã§ããã®ã§Yesã§ããã$A$ ã«1ãäžã€ããªããã°Noã§ããã -
$N$ ã4ã®åæ°+3ã§ããã°ã$A$ ã«äžã€ã§ã1ãããã°ãããçµç«¯ã®Aã«ããããšã§ãARCRã倿°ãªãã¹ãŠããã®ããšã«ARCã眮ããŠãå ãããã1ãAã«ããããšã§å šéš1ã«ã§ããã®ã§Yesã§ããã$A$ ã«1ãäžã€ããªããã°Noã§ããã
1 ã2ã€æªæºãªã No ã§ããã
1 ã2ã€ä»¥äžãããšããèããã 11 ãé£ç¶ãããªãäžèšã®èŠé ã§ã ARCR ã倿°ãªãã¹ãŠããã®ããšã« AR ã眮ããŠããã®ããš 11 ã«ã§ããŠçã㯠Yes ã§ãããåæ§ã«ãããé£ãåã 1 ãš 1 ã®ééã€ãŸã座æšã®å·®ã奿°é·(éã«æãŸã£ãŠãã 0 ãå¶æ°å)ãšãããééãæ±ãããšãã«
-
11ã¯æ¢è¿°ã®éã -
1001ã¯.CRAãšçœ®ãããã®Aãå é ãšããæ®ãã®æååé·ã¯4ã®åæ°ãªã®ã§ãARCRã䞊ã¹ãã -
100001ã¯.CRARCãšçœ®ãããã¯ããã®Aãå é ãšããæ®ãã®æååé·ã¯4ã®åæ°ãªã®ã§ãARCRã䞊ã¹ãã - ããããé£ç¶ãã
0ãå€ãå Žåã¯ãARCRã䞊ã¹ãŠäœããäžèšã®éã調æŽãã
ãŸãšãããšãé£ãåã 1 ãš 1 ã®éé(座æšã®å·®)ã奿°é·ãªç®æã Yes ãããã§ãªããã° No ã§ããã
ãã®è§£æ³ã¯å ¬åŒè§£èª¬ãšåãã§ããã
ãããããŠé£ãåã 1 ãš 1 ã®ééã§ã¯ãªãä»»æã®ééã§ã¯ãªãããšæã£ãããæ¢ã«2ããã ã£ãã®ã§äžèšã®èšŒæã端æã£ããŸãŸæåºããŠACãããéã«å©ãããããã³ã³ãã¹ãåŸã«ããã£ããã¬ãŒãã£ã³ã°ã®æéæžè¡°ãç·©ããã ã£ãã®ã§ãããã«ãã£èŠæã§æ©ãæåºããŠtrial and errorã§ããã£ãã
ã³ã³ãã¹ãäžã¯ãã©ã³ã¬ã³ã°ã¹å§çž®ããããåæ¹ãã 0 ã®äžŠã³ãšãããå²ã 1 ã®äžŠã³ã®é¢ä¿ã ãšæ°ã¥ããããäžèšã®ãããªé¢ä¿ã ãšã¯æããªãã£ããã©ã³ã¬ã³ã°ã¹å§çž®ããæ§ç¯ããã®ãè€éãããŠãããããã©ã³ãç¬ç«ã«èããæŠç¥ã¯äžæããããªããšèŠåã£ããããã§è§£æ³ãèŠããã
ã³ãŒãã¯ãã¡ã
ã³ã³ãã¹ãäžã«ã¯éã«åãããç¿æèªåACããã
èªæãªè§£ãšããŠã Fennec ã§ããã Snuke ã§ããã
以äž
Snuke ã§ããã
以äž
å®ã¯ Fennec ã§ãããããããããã2 WAsãæ®ã£ãã
äžèšä»¥å€ã®å Žå Fennec ã Snuke ã§ããã
ãã®è§£æ³ã¯å ¬åŒè§£èª¬2ãšã»ãŒåãã§ããã
#include <bits/stdc++.h>
using Num = unsigned int;
using Vec = std::vector<Num>;
using Stones = Vec;
using Touched = std::bitset<32>;
bool play(bool player, Stones& stones, const Touched touched) {
const auto another = !player;
const auto size = stones.size();
for(size_t i{0}; i<size; ++i) {
if (stones.at(i) <= 0) {
continue;
}
auto next = touched;
next.reset(i);
if (next.count() == 0) {
return player;
}
stones.at(i) -= 1;
const auto result = play(another, stones, next);
stones.at(i) += 1;
if (result == player) {
return player;
}
}
return another;
}
bool search(const Stones& init) {
Stones stones = init;
Touched touched ((1LL << init.size()) - 1);
return play(false, stones, touched);
}
void print_oneline(const Vec& vec, std::ostream& os) {
const std::vector<std::string> strs {".", "1"};
const auto size = vec.size();
for(size_t i{0}; i<size; ++i) {
os << strs.at(vec.at(i) % 2) << " ";
}
}
void solve(std::ostream& os) {
const std::vector<std::string> players {"Fennec", "Snuke "};
for(Num offset{0}; offset<2; ++offset) {
for(Num width{1}; width<6; ++width) {
Num n_patterns {1};
n_patterns <<= width;
for(Num pat{0}; pat<n_patterns; ++pat) {
Touched bits(pat);
const auto ones = bits.count();
Vec init(width);
for(decltype(width) j{0}; j<width; ++j) {
init.at(j) = offset * 2 + (bits[j] ? 1 : 2);
}
print_oneline(init, os);
const auto actual = search(init);
os << players.at(actual + 0);
if (((width == 1) && (actual == false)) ||
((width == 2) && (actual == true)) ||
((width == 3) &&
(((pat != 0) && (actual == false)) ||
((pat == 0) && (actual == true)))) ||
((width > 3) && (((ones % 2) == 0) == actual))) {
os << " : expected\n";
} else {
os << " : UNEXPECTED\n";
}
}
}
}
}
int main(void) {
solve(std::cout);
return 0;
}ã³ãŒãã¯ãã¡ã
ã³ã³ãã¹ãäžã¯ã¡ãã£ãšèŠãã ãã§ãã€ã³ã¿ã©ã¯ãã£ãåé¡ã¯è§£ããªãã ãããšè«Šããç¿æ¥è§£ãããæ¹éã¯ããç«ã£ãããã€ã³ã¿ã©ã¯ãã£ãåé¡ã®ãããã°ã泥沌ã«ã¯ãŸã2æéãè¶ ããŠããŸã£ããå®è£ åãè¶³ããªããšããããABCã®æ©è§£ãéèŠã®ç·Žç¿ãããŠããªãã®ã§ã³ã³ãã¹ãäžã«ã¯éã«åããªãã
å顿éããã¯ãšãª
-
$C_{1,i} < C_{1,2} \land C_{2,i} < C_{1,2}$ ãªã$i$ ã¯$S_2$ ã«å±ãã - ããã§ã¯ãªãã
$C_{1,i} < C_{2,i}$ ãªã$i$ ã¯$S_1$ ã«å±ãã - ããã§ãªããã°
$i$ ã¯$S_3$ ã«å±ãã ($C_{1,i} > C_{2,i}$ ã§ãã)
ããããŠæ±ãã
A,Båé¡ãšç°ãªããå顿ãèªãã§ããã«æ¹éãç«ã£ããå®è£ åãããã°A,Båé¡ã®ä»£ããã«éžã¹ãããå®è£ åããªããã°ã€ã³ã¿ã©ã¯ãã£ãåé¡ã«ã¯ãã£ããåãçµããªãã
ç§ã«700ç¹åé¡ã¯è§£ãããããªãããDiv. 1ã¯unratedã ãããšããããšã§ã³ã³ãã¹ãã«ã¯åºãã«ç¿æè§£ãããæ°Ždiffã ã£ãããã ããæ°Ždiffã¯è§£ããªããã°ãªããªãã
ã³ãŒãã¯ãã¡ã
ARC 190-Aã®é¡é¡ã«èŠããªãããªãã
å¯èœæããããªã1,2ãŸãã¯3æã§å°éã§ãããå°éå¯èœãªã
åºéã®å³ç«¯
ãã®ãšã
ãããŸã§ãèæ
®ããŠãæå°ã³ã¹ãã -1 ãããã§ãªããã°æå°ã³ã¹ããçããã
æ¹ããŠã
äžèšã¯å
¬åŒè§£èª¬ãšåãã§ããã
åºæ¬æ¹éã¯ããã«æãã€ãããã®ã®ã
äžåãè§£ãããšãã§ãããèšé²ç倧æãå«ãããA,B,Cåé¡ãèŠãŠCåé¡ãªãè§£ãããšæã£ãã72åã§æåºãããWAã仿¹ãªãã®ã§é äœè¡šãèŠããšA,Båé¡ã倧éã«è§£ãããŠããŠã仿¹ãç¡ãã®ã§æ®ã47åãAåé¡ã«ä¹ãæããããã¯ãWAã®å±±ãè¿ã£ãŠãããã©ãããŠCåé¡ãè§£ãããšæã£ãã®ããæåã®70åéã§ãããã¯é äœè¡šãèŠããããªãã£ãã®ãããšã«ããåé¡ã®è§£æ³ã詊åéã³ãããããã
ã³ãŒãã¯ãã¡ã
ã³ã³ãã¹ãåŸã«è§£æ³ãæãã€ãããä»ã®æ¹ã®ã³ã³ãã¹ãææ³ã«DPãšããæåãã¡ãã£ãšèŠããããäžå¿èªåACæ±ãã§ãããã©ã¡ãã«ãããã³ã³ãã¹ãäžã«ã¯åŸç¹ã§ããªãã£ãã®ã ããã
ã¹ã¿ãã¯
- ã¹ã¿ãã¯ã«
$A_i$ ãèŒããã-
$i$ ã奿°ãªããã¹ã¿ãã¯ã¯å¿ ã奿°é·ã«ãªãã$l = 0..\lfloor i/2 \rfloor$ ãšããŠ$R[2l+1] = max(R[2l+1], R[2l] + a)$ ã«ãªãã -
$i$ ãå¶æ°ãªãåæ§ã«ã$l = 1..\lfloor i/2 \rfloor$ ãšããŠ$R[2l] = max(R[2l], R[2l-1] + a)$ ã§ããã
-
- ã¹ã¿ãã¯ã«
$A_i$ ãèŒãããã¹ã¿ãã¯ã®æãäžã®å€ãé€ãã$i$ ã奿°ãªããã¹ã¿ãã¯ãå¶æ°é·ã«ã€ããŠæ¢åºã®å€ã«ãªãã$i$ ãå¶æ°ãªããã¹ã¿ãã¯ã奿°é·ã«ã€ããŠæ¢åºã®å€ã«ãªããçµå±äœãããªãã®ãšåãã§ããã - æ£ç¢ºã«ã¯ã
$R[|S|]$ ã¯ã¹ã¿ãã¯é·ã$|S| $ ã¡ããã©ã§ã¯ãªãã$R[|S|]$ ãšå¶å¥ãçããä»»æã®ã¹ã¿ãã¯é·ã«ãããæå€§å€ãšè§£éãã
ã¹ã¿ãã¯é·ãæžãæ¹åã«ã€ããŠã¯äœãæäœããªãã®ã§ã
-
$i$ ã奿°ãªãã$R[1] = max(R[1], R[0] + a)$ -
$i$ ãå¶æ°ãªãã$R[0] = max(R[0], R[1] + a)$
çãã¯ã
ã³ã³ãã¹ãäžã«æãã€ããè§£æ³ã¯ã©ã³ã¬ã³ã°ã¹å§çž®ã§ãããéè² å€ãç¶ããªãæž©åãããè² ã®å€ãç¶ããªããããè² ã®å€ã«ã€ããŠãã®å€ãèŒãããã®çŽåã®å€ãåé€ããããšã§ãå¶æ°ååäœã§æ¶å»ã§ããã
ãã®èå¯ãããè² ã®å€ãå¶æ°åç¶ããªãããªãã£ãããšã«ã§ããã奿°åãªãå é ã1ãšããŠå¥æ°çªç®ã®å€ã®ãã¡ã©ããäžã€ã ããæ®ããããããéãªæã倧ããªå€ãæ®ãã®ãåŸã§ããããšããè§£æ³ãæåºãããWAã®å±±ãè¿ã£ãŠãã(奿°çªç®ã«ããŠããã¡ã§ãã)ããŸãã£ããæ¹éãééã£ãŠãããäžäºäŒãã
å ¬åŒè§£èª¬ãåºæ¬ã«åãããšãããŠããã衚çŸã¯ç°ãªãã
ã³ãŒãã¯ãã¡ã
ã³ã³ãã¹ãäžã«ã¯ã¡ãã£ãšèŠãŠãã以äžçæããªãã£ãããã³ã³ãã¹ãåŸã«ãããªãè§£ããŠããŸã£ããB,A,Cåé¡ã®é ã«è§£ãã°ããããã®éãã§1å®ã§ããŠã¬ãŒãã£ã³ã°ã®äžãããã ãã¶å°ãªãã£ãããåé¡éžã³ãå®å šã«ééãããåé¡ã®åŸç¹ã¯ã©ãããè§£ããããåé¡ãè§£ãã®ã ããšããææ°èŸŒã¿ãå®å šã«ç©ºåãããŠãããA,Båé¡ã®è§£çè æ°ã¯ã ãããåãã§ãããè§£ããããæ¹ãéžã¹ã°ããã£ãã®ã ããCåé¡ã«æéãæããããŠãBåé¡ãèŠãã«Aåé¡ã«é£ã³ã€ããŠããŸã£ãã
ããã«ãœãŒããããªããããšæããå®éããã§ACããã
äœçœ®
ããããããã«ãœãŒããšã¯éã«ãæå€§ã®æ°ããé ã«å®äœçœ®ã«æã£ãŠãããæ°
ãŸãšãããšã
å ¬åŒè§£èª¬ãåºæ¬ã«åãããšãããŠããã衚çŸã¯ç°ãªãã
ã³ãŒãã¯ãã¡ã
èªåã®ã¬ãŒãã£ã³ã°åž¯ã§ã¯æ£è§£ç5%ã®åé¡ããã©ãããŠè§£ãããšæã£ãã®ã ãããåºæ¬æ¹éã ãã¯ããç«ã£ãã®ã§çŠã£ãã®ã ãããã
å Žååãã¯ä»¥äžã®éãã§ããã
-
$A=1, B=0$ ã¯$C$ ã倧ãããã®ã»ã©æ©ã転æãã -
$A=0, B=1$ ã¯$C$ ã倧ãããã®ã»ã©é ã転æãã -
$A=1, B=1$ ã¯ããã£ãã$A=0$ ã«å€ããŠåŸã§$A=1$ ã«å€ãããšã³ã¹ããäžãããšãã ã転æãã -
$A=0, B=0$ ã¯äœãããªã
äžèšã®æäœ1ã®åŸã«æäœ2ãå®è¡ãããåé¡ã¯æäœ3ãå®è¡ãããªããã€å®è¡ãããšåŸããšããããšã§ãããæäœ3ã®æ°
æäœ3ã
倧ãŸããªæ¹éãšããŠã¯äžèšã¯å ¬åŒè§£èª¬ã®éãã§ãã£ãŠããããå調ã§ã¯ãªãããšãèŠæããªãã£ããå ¬åŒè§£èª¬ã¯èšŒæãäžããŠããããçŽæçã«æ£ãããšåãã£ãããããæ¢çŽ¢ãæã¡åã£ãäžãå®è£ ãå šãäžæããããè§£ããªãã£ããããã®ããã«ãçŽæã«é Œã£ãæªèšŒæã® Greedy ã¯å±éºã§ããæ¡ä»¶ã§ããã
ã³ã³ãã¹ãäžã¯ãããã环ç©åãŸã§èããè³ããªãã£ãããã®åŸç§ãã»ã°ã¡ã³ãæšã§è§£ãããšããããä»ã®æ¹ã® å®è£ ãèŠãŠãããããå®è£ æ¹æ³ãåãã£ããä»ã®æ¹ã¯ã¯ããã«ãã£ããããå®è£ ãããŠããããªãintã ãšãªãŒããŒãããŒããã
Fenwick Treeã2åã环ç©åãš
-
$C$ ãæžããæäœã¯ãæäœ1ã®$S1[0..C-1]$ ãš$T - C$ ã®åã§ãããããã ãã³ã¹ããå¢ãã -
$C$ ãå¢ããæäœã¯ãæäœ2ã®$S2[0..C-1]$ ãš$T$ ã§ãããããã ãã³ã¹ããå¢ãã -
$C$ ã®åã ã$T$ ãæžã£ãå©åŸã¯$C (W1[0..C-1] + W2[0..C-1])$ ã§ãããããã ãã³ã¹ããæžãã - ãããã®åã
$D$ ãšãã
åŸã¯æäœ3ã«ã€ããŠã
-
$U$ ã$U + D$ ã§æŽæ°ãã -
$T$ ã$C$ æžãã -
$S12[C]$ ã«$C$ ãè¶³ãã$W12[C]$ ã«$1$ ãè¶³ãããããã¯ã€ãŸãæäœ1,2ã远å ããããšã«çžåœããã
äžåã¯è§£ãããããŸãã«ãé ãè¶ããã©ã«ãªã£ããèŸãããŠã¬ãŒãã£ã³ã°1200ã«å± æ®ã£ãããããããåŸããªããªã£ããèšé²ç倧æããäºåºŠç¶ãããå®åãšèšããããåŸãªãã
ã³ãŒãã¯ãã¡ã
ç§ãACããè§£æ³ã¯ä»¥äžã®éãã§ãããæ£è§£ã¯ãããè«çã®çµã¿ç«ãŠãæªããã
-
$a$ ã$B$ ã«å«ãŸããªããã€ãŸã$S[a]$ ã空ãªãäœãããªã -
$T[0..k]$ ããã¹ãŠ1以äžã§ãããããªãæå€§ã®$k$ ãæ±ãããããã¯é·ã$k$ 以äžã®æ¥é èŸã«$a$ ãã€ãªããããå¯èœæ§ãããããšããæå³ã§ãããã»ã°ã¡ã³ãæšãäºåæ¢çŽ¢ããŠæ±ããã -
$p \in S[a] \land (p-1) \leq k$ ãæºãããæå€§ã®$p$ ãäºåæ¢çŽ¢ã§æ±ããããã®ãããª$p$ ããªããã°äœãããªãã - ãã®ãããª
$p$ ãããã°ã$T[p]$ ã$T[p] + T[p-1]$ ã§æŽæ°ããããã®ãšããªãŒããŒãããŒããªãããã«ãå€ã®äžéãèšãããå€ã«äžéãç¡ããš3 WAsãããäžé㯠2ã§ãã ã
äžèšã®èµ°æ»ãçµããŠã Yes ãããã§ãªããã° No ã§ããã
å ¬åŒè§£èª¬ã¯ãšã£ãŠãç°¡æœã§ãããéšåæååãæ°ãäžããããšåªåããŠ82åãæããŠããŸã£ãããšããããããç§ã®è§£æ³ãæ¬åœã«æ£ãããã©ããæªããã2以äžã1以äžãã¯å€å¥ã§ããããããã§ãªããšãã¯ã©ããªã®ã ãããè§£æ³ãèŠããªããšãã¯DPãšããååã®åçã«åãããããŠããã®åé¡ãARC 194-Aã£ãœãDPã§è§£ãããšããããšãããDPã«ãããšTLEããã®ã§ãç¡çããTLEãåé¿ããŠããæŒããã
å
¬åŒè§£èª¬éãã«å®è£
ãããš ãã ãªããæ£é ãšéé ã®å®è£
ãå
±éåããéé ã®ã€ã³ããã¯ã¹ãæ£é ã«ããããéšåæååé·ã No ã«ããã
ã³ãŒãã¯ãã¡ã
å šãèŠåœãã€ããªãã£ãã
-1 ã¯ãªãã§ãå
¥ãã®ã§ã -1 ãš -1 ãåèš
çµå±åã®ãããã³ã°ãäœéããããæ°ããæ¹æ³ãåãããªãã£ããå
¬åŒè§£èª¬ã«ããéãã
æåŸã«ã No ã«ã§ãããæ£è§£ãŸã§ã«ã¯å¹Ÿéã®èå¯ãè¶³ããªãã£ãã
ã³ãŒãã¯ãã¡ã
ã ãããåã£ãŠããã ãACã§ããªããŸãŸè§£èª¬ãèªãã ããšããžã±ãŒã¹ãæŒããŠããã
No ã§ããããªããªã
éçå Žã®ãã€ã€ã¢ã³ã圢ãèããããŸã
ããŒã ããŒã¹ No ãçãã§ããã
- äžå¡
$(1,1)$ ãã äºå¡$(0,2)$ ã¯$B$ ã§é²ã - äºå¡
$(0,2)$ ãã äžå¡$(-1,1)$ ã¯$B$ ã§é²ã - äžå¡ããããŒã ããŒã¹ã¯ãå·Šäžã«è¿åããã
$\lfloor (B - 3) / 2 \rfloor$ åå·Šäžã«é²ãã§æ»ã
No ã«ããã
ãšããã®ãå®è£
ããã®ã ãã13 WAs ãè¿ã£ãŠããããšããžã±ãŒã¹ãè¶³ããªãã®ãå®è£
ãééããã®ãããããªããå
¬åŒè§£èª¬ãã¿ãŠãã No ã¯ç¹ãèŸŒã¿æžãªã®ã§ãæ¹ããŠå®è£
ããªããŠã ACãã ã
ã³ãŒãã¯ãã¡ã
ã³ã³ãã¹ãå€ã§èãããå
šãåãããªãã£ãã解説ãèªãã åŸã® std::set å®è£
ã«ããã£ã·ãæéãæããŠããŸã£ãã
ä¹ ãã¶ãã®ratedã§ãããAåé¡ã1宿©è§£ã17:31ããããåŸãç¶ããªãã£ããB,Cåé¡ãã³ã³ãã¹ãåŸã«æãã€ãããé ãã£ããç¹ã«Cåé¡ã¯å¶çŽãèŠåã£ãŠæ£è§£ãŸã§ããšäžæ©ã ã£ãã®ã«ãéå ·ã«äœ¿ãããŠããŸã£ãã
ã³ãŒãã¯ãã¡ã
ããåã«æ³šç®ãããšãã§ããã ãäž(è¡çªå·ãå°ãã)ã³ãŒã¹ãšãã§ããã ãäž(è¡çªå·ã倧ãã)ã³ãŒã¹ã®éã¯ãä»»æã®å Žæãéãããããã¯äž(è¡ãå¢ãã)æ¹åã®ç§»åãšãå³(åãå¢ãã)æ¹åç§»åãéé ã«ããã°å®çŸã§ããã
D 㯠R 㯠? ããã®ããã«çœ®ãæãããäžã³ãŒã¹ã¯ ? ãåºçŸé ã« R ã«çœ®ãæãã R ãå°œãããæ®ãã® ? ã D ã«çœ®ãæãããäžã³ãŒã¹ã¯ ? ãåºçŸé ã« D ã«çœ®ãæãã D ãå°œãããæ®ãã® ? ããR ã«çœ®ãæããã
äžã³ãŒã¹ãšäžã³ãŒã¹ã®çµè·¯ã¯ã·ãã¥ã¬ãŒã·ã§ã³ããã°åãããå
ã³ãŒãã¯ãã¡ã
ã³ã³ãã¹ãäžã¯å šãææãããã€ããããã³ã³ãã¹ãåŸã«ãªã£ãŠæ¹æ³ãæãã€ããã
std::lower_bound ã§åãã)ã
éã«èšŒæãããå¹³åå€ãäžããã«ã¯ããã®æç¹ã§
å ¬åŒè§£èª¬éããã©ãããŸã çè§£ããŠããªãã
ã³ãŒãã¯ãã¡ã
ã¯ãšãªã®æ°
ã³ã³ãã¹ãäžã¯Policy-Based Data Structuresã䜿ãããšã«ãã ãããããŠãå¹³æ¹åå²ã§äžæãããšèšç®éãæžããããšè©Šã¿ãããçµå±TLEãåããªãã£ããæ£è§£ã¯ã»ã°ã¡ã³ãæšã§ãããè»¢åæ°ãã»ã°ã¡ã³ãæšã§æ°ããã®ã¯å žåãªã®ã«ãäžããnçªç®ãæ¢ãã®ãäºåæ¢çŽ¢ã§ããããšãæãåºããªãã£ããæãåºãããåçºæãããšãã«ã¯ãã§ã«é ãã
atcoder::segtree::max_right ã䜿ã£ãäºåæ¢çŽ¢ã§æ±ãŸããããšã¯ã¯ãšãªããšã«
-
$A > L$ ãªãã$S$ ã®èŠçŽ ã¯å€ãããªãã®ã§äœãããªã -
$A \leq L$ ãã€ã»ã°ã¡ã³ãæšã®å€$T[A] = 0$ ãªãã$A$ ã®åæ°ã¯æ¶ããŠããã®ã§äœãããªã -
$A \leq L$ ãã€ã»ã°ã¡ã³ãæšã®å€$T[A] = 1$ ãªãã$A$ ã®åæ°ãæ¶ããå ·äœçã«ã¯$T[Ai] = 0$ ã«ãã ($i$ ã¯$Ai \leq L$ ãæºããæŽæ°)
Policy-Based Data Structuresãç¥ã£ãŠããããéå ·ã«äœ¿ãããŠããŸã£ããããã§ãããªãã»ã°ã¡ã³ãæšãåãåºããªãã®ã¯å®è£ åãè¶³ããªããABC 392-Fãã»ã°ã¡ã³ãæšã§å®è£ ããªãã£ãããã§ãããçµæãã»ãšãã©è§£ããŠããåé¡ãèœãšããŠããŸã£ãã
ãã®è§£æ³ã¯å ¬åŒè§£èª¬éãã§ããããªãå ¬åŒè§£èª¬ã«ã¯å¹³æ¹åå²ãèŒã£ãŠãããäžæãå¹³æ¹åå²ã䜿ãã°è§£ããã®ã ãç§ã«ã¯ãã®åéãç¡ãã£ãã
飿¥å ãåäžãªé ç¹ãåäžèŠããŠé åãæ±ããããšããæ¹æ³ã¯35 WAsããã諊ããŠå ¬åŒè§£èª¬ãèªãã ãçè§£ããŠããªãã
6:27 1ããã§æ®ã113åäœãã§ããã«çµãã£ããç·diffãèœãšããŠã¬ãŒãã£ã³ã°ç·èœã¡ã確å®ããã
ã³ãŒãã¯ãã¡ã
å¶æ°ã®éåã ãããšããçŽæãçããã®ã§ãã®ãŸãŸæåºãããã
ã³ãŒãã¯ãã¡ã
ã³ã³ãã¹ãäžã¯å šãæ£è§£ã§ãããã³ã³ãã¹ãåŸã«å®è£ ãééãããšæã£ãæåºãACããŠããŸã£ããèªåã§ãäœãèããŠããã®ããå ¬åŒè§£èª¬ãèªããŸã§åãããªãã£ãã
ç¶æ é·ç§»å³ãæžãã
- ç¶æ 0: ããã§ã¯0ã®ç¹°ãè¿ããé·ç§»å ã¯äžçªç®ã®1(ç¶æ 1a)ãŸãã¯2(ç¶æ 2)ãããã¯èªåèªèº«(ç¶æ 0)ã
- ç¶æ 1a: åã®ç¶æ ã0(ç¶æ 0)ãããã¯äžçªç®ã®1ãé·ç§»å ã¯äºçªç®ã®1(ç¶æ 1b)ãŸãã¯2(ç¶æ 2)ã
- ç¶æ 1b: åã®ç¶æ ãäžçªç®ã®1(ç¶æ 1a)ãŸãã¯2(ç¶æ 2)ãããã¯äºçªç®ã®1ãé·ç§»å ã¯0(ç¶æ 0)ã
- ç¶æ 2: åã®ç¶æ ã0(ç¶æ 1)ãŸãã¯äžçªç®ã®1(ç¶æ 1a)ãããã¯2ãé·ç§»å ã¯äºçªç®ã®1(ç¶æ 1b)ã
ããããæ¡ä»¶ãå°åºããããå ¬åŒè§£èª¬ã®æ¹ãã¯ããã«åãããããã
- 0ã¯å€ãåã«ã¯æ§ããªã
- 2ãšåæ°ä»¥äžã®0ãèŠã
$X \geq Z$ -
$Z = 0$ ãªãã$Y$ ã¯å¶æ°ã§ãªããã°ãªããªããç¶æ 0,1a,1bãåãã«ã¯$X \geq Y/2$ ãèŠã -
$Z > 0$ ãªããç¶æ 0,2,1bãéã£ãŠ$Y$ ãå¶æ°ã«ã§ããããã£ãŠå ã®$Y$ ã奿°ãªãã$Y$ ãš$Z$ ã1æžãããæžãããåŸã«ç¶æ 0,1a,1bãåãã«ã¯$X \geq \lfloor Y/2 \rfloor$ ãèŠã - äžèšãæºãããªãã以äžã®ã©ããããã©ãã
- ç¶æ 0,2,0 ã®é
- ç¶æ 0,1a,1b,0 ã®é
- ç¶æ 0,1a,2,1b,0 ã®é ããããèŠæããªãã£ãã
å
¬åŒè§£èª¬ã«ææããããŸã§è²ã
ãšåãããªãã£ããç¶æ
0,2,1b,0 ã®é ã¯ã
ç¶æ é·ç§»å³ããå¶çŽãå°ãæ¹æ³ããçµå±ã³ã³ãã¹ãäžã«åãããä»èãã ã£ããããã«ãARCãããè¯åã§ãããç§ã®æã«ã¯è² ããªãã£ãã
忥ã®ABCã§æ°Žè²ã«æ»ã£ãã®ã§ratedã§åå ããã
ã³ãŒãã¯ãã¡ã
解説ãèŠããŸã§å šãåãããªãã£ããBåé¡ãè§£ããåŸãã«ããã¹ãã±ãŒã¹ãã»ãŒå šæ» ããè§£ç¡ãã®æ¡ä»¶ãèŠæããªããŸãŸã³ã³ãã¹ããçµãã£ãã
è§£ç¡ãã®æ¡ä»¶ã¯
Aåé¡ããBåé¡ã®æ¹ãç°¡åãšèŠåã£ãŠBåé¡ã«æéãå šæ¯ãããããäºæ³å€ã«æããã£ãã15:06ã§åºãããšãã¯åã£ããšæã£ããããã»ã©çãã¯ãªãã77:46ãš7ããã®æºèº«åµçã§ACããã
ã³ãŒãã¯ãã¡ã
èŠãããã«ä¹±æã¢ã«ãŽãªãºã ã ãšæã£ããå ¬åŒè§£èª¬ã¯æ±ºå®çã¢ã«ãŽãªãºã ã ããä¹±æã¢ã«ãŽãªãºã ã§è§£ããã®ã§ä»¥äžç§ã®è§£ãæ¹ãè¿°ã¹ãã倿°ã以äžã®éãå®çŸ©ããã
-
$A_1$ æ¡ã®è§£ã®äžã€ã$A$ ãšãã -
$A_2$ æ¡ã®è§£ã®äžã€ã$B$ ãšãã -
$L = LCM(A,B)$ ãšãã
æãããªç¶æ³ãåŠçããã
-
$max(A_1, A_2) = A_3$ ãªã$L$ ã¯10ã®ã¹ãä¹ã«ãããšé¡æãæºãããçãã¯Yesã§ã$A = 10^{A_1}$ ,$B = 10^{A_2}$ ãšãã -
$max(A_1, A_2) > A_3$ ã¯LCMã®æ¡æ°ãè¶³ããªãã®ã§Noã§ããããªããªã$A,B \leq LCM(A,B)$ ã ããã§ããã -
$A_1 + A_2 < A_3$ ã¯LCMã®æ¡æ°ãå€ãããã®ã§Noã§ããããªããªã$AB \geq LCM(A,B)$ ã ããã§ããã
ãã以å€ã®å Žåã€ãŸã Yes ãšä¿¡ããŠã©ã³ãã ã«æ¢çŽ¢ããã
ãã®ãããªæ°
| æ¡ | U | C | D | å®è¡é床(msec) |
|---|---|---|---|---|
| ç§ã®ã³ã³ãã¹ãã®æåº | çŽ æ°ã®ã¿ | çŽ æ°ã®ã¿ | çŽ æ°ã®ã¿ | 82 |
| ç§ã®ã³ã³ãã¹ãã®æåºæ¹ | çŽ æ°ã®ã¿ | çŽ æ°ã®ã¿ | çŽ æ°ã«éããªã | 45 |
| åŸã§ç¥ã£ãä»ã®æ¹ã®æ¡ | 10ã®(P+1)ä¹ | çŽ æ°ã®ã¿ | çŽ æ°ã®ã¿ | 42 |
| ããã«æ¹è¯ | 10ã®(P+1)ä¹ | çŽ æ°ã«éããªã | çŽ æ°ã«éããªã | 19 |
TLEãè¿ã£ãŠããã®ã¯ãæåã¯åžžã«
ãã¹ãã±ãŒã¹ã¯
ãŸãããŠã0å®ã«çµãã£ããäžéãåé¡ãçºããåŸãAåé¡ã«æéãå šæ¯ãããŠçµå±è§£ããªãã£ãã
ããã©ããããã³ã³ãã¹ãäžã«ã¯è§£ããªããšæã£ãCåé¡ããæçžŸè¡šãåŸ ã£ãŠããéã«è§£ããŠããŸã£ã(2025-06-23 00:12:31)ãã©ãããŠç§ã¯ãè§£ããåé¡ãšè§£ããªãåé¡ã®åºå¥ãã€ããªãã®ã ããã
ã³ãŒãã¯ãã¡ã
äœæ¥èããŠãåããããå ¬åŒè§£èª¬ãèªãã§ãåããããä»ã®æ¹ã®è§£çãèªãã§ãç§ã¯ã©ãããåé¡ã誀èªããŠãããšåãã£ãã
ããå顿ãèªããšãDiv.1ã«ã¯EasyããªããDiv.2ã«ã¯HardããªãããããééããŠãDiv.1ã«writerãåããªãEasyããããDiv.2ã«writerãåããªãHardããããšåéãããŠãããè§£ããããããªãã
åé¡æãæ£ããèªããšãããªããåãwriterããDiv.1ãŸãã¯Div.2ã«åºããå顿°ã®äžéã¯
ã³ãŒãã¯ãã¡ã
å顿ãéåžžã«é£è§£ã ããå¹³ããèšãã°ä»¥äžã®éãã§ããã
äºåæšãèãããæšã®æ ¹ããäžæåç®ã A ãŸã㯠B ãäºæåç®ã A ãŸã㯠B ãšããåå²ãç¹°ãè¿ãã
å
šåãèŠãããšãã§ããªããã°çãã¯0ã§ãããèŠãããšãã§ãããªããèããååž°çã« A ã«å¯Ÿå¿ããéšåæšãå·Šã B ã«å¯Ÿå¿ããéšåæšãå³ãšåŒã¶ã
- èããŒãã«ã€ããŠãçµã¿åããã¯1éãã§ãã
- ããããŒã
$v$ ã«ã€ããŠãå·Šã®éšåæšã®çµã¿åããã$L$ ãå·Šã®éšåæšã®çµã¿åããã$R$ ãšããŠãçãã®çµã¿åããã«$LR$ ãå ãããããã¯$v$ ããã$S_i$ ã«å¯Ÿå¿ããªãã察å¿ããŠãéšåéåã«å ããªãå Žåã«ãå·Šå³äž¡æ¹ããéšåéåãéžãã§çµã¿åãããããšãæå³ããã - ããããŒãããã
$S_i$ ã«å¯Ÿå¿ãããšãã ã以äžãèãããå·Šã®éšåæšã«ãã$S_{1..(i-1)}$ ã®ããŒãæ°ã$A$ ãå³ã®éšåæšã«ãã$S_{1..(i-1)}$ ã®ããŒãæ°ã$B$ ãšããŠã$2^{A+B}$ ãçãã®çµã¿åããã«å ãããããã¯èŠçŽ æ°$A+B$ ã®ä»»æã®éšåéåã«ã€ããŠã$S_i$ ãéšåéåã«å ãããããã°ãä»ã®èŠçŽ ã®æç¡ã¯åããªãããšãæå³ãããç¹ã«$A+B=0$ ãªã$1= 2^0$ éãã§ãããèããŒãã«ã€ããŠçµã¿åããã¯1éãã§ããããšãšæŽåæ§ãããã
- æ ¹ãã
$S_i$ ã«å¯Ÿå¿ããæšã®æãäœããæãšããŒãããªããã°è¿œå ããããã°åå©çšããããã©ã€æšãæ§ç¯ããã®ãšåãæ¹æ³ã§ããã -
$S_i$ ã®æåŸã®æåã«å¯Ÿå¿ããããŒã$v$ ããæ ¹ã«åãããéšåæšã®çµã¿åããæ°$L,R$ ãšãéšåæšã«ãã$S_{1..(i-1)}$ ã®ããŒãæ°$A,B$ ã芪ããŒãã«äŒæ¬ããªããæŽæ°ãããæ ¹ãä¿æããéšåéåã®çµã¿åããæ°ãçããªã®ã§åºåããã
æååé·ã®å std::accumulate ã䜿ã£ãŠãå¥ã«éã㯠ãªããªã ã®ã§çŽ çŽã« left, right ãšæžãæ¹ãç°¡åã§ããã
ã³ãŒãã¯ãã¡ã
boost::multi_index_container ã§ std::set å
Œ std::list ãäœããå°ããæ°ããæã¡äžãããã°ããã®ã¯åãã£ãããããåãæ°ãæ©ãã«å䜵ããã®ãæé©ã ãšããããšãèŠæããªãã£ãã䞡端ã
ã³ã³ãã¹ãã«åå ããåŸæ¥è§£ãããçµæã¯åŸ®åŠã§ãæ¬çªã®æéå¶éãšç·åŒµã®äžã§åãŠãããšèšããšäœãšãèšããªãã
ã³ãŒãã¯ãã¡ã
äžåæ°åãšå€¥ããããã«ãã£ã®æ«ACãããçžå€ããã400ç¹è¶diffãé ãã
ããŒã 1ã«å
šåã®äººã
å
šåã§ç¡ã人ãšã¯ãå
šåã®äººã«å¿
ãè² ãããã以å€ã®äººãšã®åã¡è² ãã¯åããªã人ã§ããããã£ãŠä»¥äžã®ããã«æ§æã§ããããããã¯
- ããŒã 1ã®å
šåã®
$L$ 人ã¯ãããŒã$2..N$ ã®å šåã§ãªã$L$ 人ã«å¿ ãå〠- ããŒã
$2..N$ ã®å šåã®$R$ 人ã¯ãããŒã$1$ ã®å šåã§ãªã$R$ 人ã«å¿ ãå〠- ããŒã
$2..N$ ã®å šåã®$R$ 人ã¯ãããŒã$2..N$ ã®å šåã§ãªã$L$ 人ã«å¿ ãåã€
è² ããåŽããèŠãŠãåãããšãèšãããããããã®è§£ãäžéã§ããããšã蚌æã§ããŠããªãã
ã³ãŒãã¯ãã¡ã
äžæé以äžãšå€¥ããããã«ãã£ã®æ«ACãããè¶diffã¯é ãããæ°ŽdiffããŸããŸãã®é床ã§è§£ããã®ã¯ãªãã ããã
Yes ã No ã No ã§ããã以äž
No ã§ããã
ãã以å€ã®çã㯠Yes ã§ããã
æåã«æµ®ããã ã®ã¯ARC 185-Bã§ãçµç«¯ç¶æ
ãå®çŸ©ããã°ããã«è³ãçµè·¯ãå³å¯ã«åããªãããšã§ãã£ããäŸãã° 0 ãš 1 ãåºååãããã€ãŸã0ã®åã®åŸã«1ã®åãäœãããšã§ããããã¯ãå
¬åŒè§£èª¬ã¯ããã ã£ããæåã®çŽæã倧äºã«ããæäœã¯å¯éã ãšããããšã«æ°ãä»ããŠãšããžã±ãŒã¹ãå°åºããã°ããã£ãšæ©ãè§£ããã¯ãã ã
ä¹ ãã¶ãã®ratedã§ãããä»åãæ£è§£è æ°ãšèªåã®é£æåºŠã¯é£åããªãã ãããšæããA,B,C,Dåé¡ãäžéãã¿ãŠãããDåé¡ã«æéãå šæ¯ããããAåé¡ãäºæ¬¡å 环ç©åãªã®ã¯ããåãã£ãããã®å ãèŠãããAåé¡1å®ã§ã¯æ°Žè²ã«æ®ããªãã®ã¯æãããªã®ã§(ç°diffã ã£ã)ãã£ãšåŸç¹ã®é«ãåé¡ããè§£ãå¿ èŠããã£ãã
Dåé¡ãè§£ããæ®ãæéã§Aåé¡ã¯è§£ããããB,Cåé¡ã¯è§£ããªãã£ããçžå€ããããæ£è§£è æ°ãšèªåã®é£æåºŠã¯é£åããªããæ£è§£è æ°ãç¡èŠããŠèªåã«è§£ããåé¡ããã£ããéžã°ãªããšæ°Žããã©ãåºãªããDåé¡ã¯édiffã§ãã³ã³ãã¹ãäžã«è§£ããã®ã¯ããã2床ç®ã§ãããäžåç®ã«édiffã«çæããã®ã¯åºŠèžãããããããB,Cã®æ°Ždiffx2ãè§£ããªãç§ã«ã¯ããããåæ©ããªãã£ããBåé¡ã¯å šããããããCåé¡ã¯æ©è»¢ãå©ããªãã£ãããããšå®è£ ã«æéãæããããã§ããã
ã³ãŒãã¯ãã¡ã
å¶çŽããæããã«äºæ¬¡å 环ç©åã§ããã
åæãã¹ã
äºæ¬¡å 环ç©åãä¹ ãã¶ããããŠå®è£ ã«æéåã£ããããå°ãæéããæžããŠãããã¯ãã ã
ã³ãŒãã¯ãã¡ã
å®å
šã°ã©ãã®èŸºã®æ°ã¯
å
¬åŒè§£èª¬ã«æžããŠããéãã§ãããçãã¯
ã³ãŒãã¯ãã¡ã
ARC 162-Aã®ãããªåé¡ã ãšæããäœãšãªãè§£æ³ã¯åãã£ãããå®è£ æ¹æ³ãåãããªãã£ããã³ã³ãã¹ãäžã«65åãã£ãã®ã ãããããã¯è§£ãããã£ãã
ãŸã
No ã§ããããããARC 162-Aã®ããã«é£ããèãããããå®ã¯ãã£ãšç°¡åã§ããã
ãã®ãšãã Yes ãæé ã§ç¡ããã°çã㯠No ã§ããããã㯠std::is_sorted(S) ã§ç°¡åã«åããããŸãããã§ã€ãŸã¥ããŠããŸã£ãã
ãã人ããä»ã®äººãå ã«åããäŸåé¢ä¿ãæ±ããŠãããããããžã«ã«ãœãŒããããšçããæ±ãŸããããã¯ã³ã³ãã¹ãäžã«åãã£ãããããäŸåé¢ä¿ãæ£ç¢ºã«æ±ããæ¹æ³ãã³ã³ãã¹ãäžã«åãããªãã£ãã
äŸåé¢ä¿ã¯ä»¥äžã®éãæ±ããã人ã®ç§»åå
ã«å¯Ÿå¿ããã»ã°ã¡ã³ãæš
-
$j = 1$ ã€ãŸãå é ã®äºº$i = T[1]$ ã¯ããããããäŸåé¢ä¿ãªããšããŠããã$U[S_i] = 1$ ,$V[T_i] = 1$ ãšããã - å·Šãã
$j > 1$ çªç®ã®äœçœ®ã«åãããšããŠãã人$p = T[j]$ , ãã®å·Šã®äºº$q = T[j-1]$ ã«æ³šç®ãã-
$S_j < T_j$ ã€ãŸãå³ã«ç§»åãããšããèãããç§»åäžã«ä»ã®äººãå± ããã©ããã¯ã$C = T[S_j.. \infty)$ ã®åºéåã§åããã$C > 0$ ãªã人$p$ ã¯äºº$q$ ããå ã«åãå¿ èŠãããããã®ããã«æåã°ã©ãã®èŸºã匵ãã -
$S_j > T_j$ ã€ãŸãå·Šã«ç§»åãããšããèãããç§»åäžã«ä»ã®äººãå± ããã©ããã¯ã$C = S[T_j.. \infty)$ ã®åºéåã§åããã$C > 0$ ãªã人$q$ ã¯äºº$p$ ããå ã«åãå¿ èŠãããããã®ããã«æåã°ã©ãã®èŸºã匵ãã - ãã以å€ãªããæåã°ã©ãã®èŸºã匵ããªã
-
ãã®ããã«æåã°ã©ããäœããããããžã«ã«ãœãŒããããšã人ãåãé åºãå é ããæ±ãŸãã®ã§åºåãããã»ã°ã¡ã³ãæšãããããžã«ã«ãœãŒããåãããBåé¡ããã¯æéãæãã䟡å€ããããšæã£ãããèãããŸãšãŸããªãã£ãã
ãšæã£ãŠå ¬åŒè§£èª¬ãèªãã ããã£ãš ç°¡åãªè§£ãæ¹ ããã£ãã座æšå§çž®ãã»ã°ã¡ã³ãæšãããããžã«ã«ãœãŒãã®éå®è£ ã¯ãæ³å®è§£ã§ã¯ãªãã£ããããã§ã¯ã³ã³ãã¹ãäžã«éã«åããªããéå»åã«åãããããŠããã®ãããããªãã
ã³ãŒãã¯ãã¡ã
ãã®åé¡ããè§£ãã®ã¯æãåããããããããçµæçã«ãã£ãŠãããã³ã³ãã¹ãäžã«édiffãè§£ããã®ã¯ããã2åç®ãšããããæé«diffãæŽæ°ãã(1853: ãã®åã¯ARC 188-Bã®diff1602)ããã®diffã¯ãé£åãšããããæéåããšããæãã ãã
èã®ãã¡ãé«ããæãé«ã(æ ¹ããè·é¢ãé·ã)é ç¹ãã2ã€ãã€åãã°ããããã¹ãŠã®é ç¹ã«ã€ããŠé«ããšãåé ç¹ããã³åé ç¹ã®æ°ãDFSã§æ±ããŠããã
èã (é«ããé ç¹çªå·) ãããªãéè€ç¡ãéåã«å ãããé«ãã倧ããèãåªå çã«åŠçãããèãåã£ããèã®èŠªé ç¹ã«ã€ããŠåã£ãåé ç¹ãæžããã芪é ç¹ã®åé ç¹ãç¡ããªã£ãããèãšããŠç»é²ãããåã芪é ç¹ãäºåºŠåããªãããã«æ°ãä»ããã
éè€ç¡ãéåããåªå
床ãã¥ãŒãäœ¿ãæ¹ãå®è£
ããããã éããªã ãã if (p0 != p1) ãå
¥ããªããšåã芪é ç¹ãäºåºŠåã£ãŠå
¥åäŸãåããªãã£ããã³ã³ãã¹ãäžã¯çããåãããåé¿çãšããŠéè€ç¡ãéåã«åãæ¿ããããã®åå®è£
ã«æéãæãã£ãã
æ ¹ã¯åããªãã2ããã€ããé ç¹ã¯æžããªãã®ã§æ ¹ã ãæ®ã£ãŠãåããªããæ ¹ãšä»ã®é ç¹ãçµã«ããŠåãããšãã§ããªãã
å顿ãäžèªããŠã»ãŒãã®è§£æ³ãèŠãããå ¬åŒè§£èª¬ãšåããã©ããã¯ãŸã çè§£ããŠããªãã
äºé±ã¶ãã®ratedã§ãããä»åã¯çŽ çŽã«ãA,Båé¡ã®é ã«ãããA 1å® 21:11ã§ã¯é ãããŠç·èœã¡ãããRated 1å®å¢ã®äžãã10äœãšãã倧æã§ãA,B 2å®ãªãæ°Žã³ãŒããŒã«æ®ãããBåé¡ãéã«åããªãã£ãã
ã³ãŒãã¯ãã¡ã
æåã«ããããã®æ°
- æ°åã¯å°ãªããšãå ã ã®1çš®é¡ãã
-
$C[A_i]$ ã1æžãã -
$i = 1$ ã«ã€ããŠã$N-1$ ãã$A_{2..N}$ ã«å«ãŸãã$a$ ã®æ°ã€ãŸã$C[A_1]$ åŒãããã®çš®é¡ã ãæ°åã¯å¢ããã -
$i > 1$ ã«ã€ããŠèããã$b = A_{i-1}$ ,$a = A_{i}$ ãšãã-
$a \ne b$ ãªãã$A_{i+1..N}$ ã«å«ãŸãã$a$ ã®æ°ã ãæ°åã®çš®é¡ãå¢ããã -
$a = b$ ãªããæ°åã¯å¢ããªãããªããªã$A_{i-1}$ ã§æ¢ã«æ°ããŠããããã ã
-
ããããŠæ±ããçš®é¡æ°ãçããã
ã³ãŒãã¯ãã¡ã
ã³ã³ãã¹ãäžã¯98åæããŠè§£ãããšãã§ãããåžå£ã®äžã§æ£è§£ãæãã€ããã
ã³ã³ãã¹ãäžã¯è»¢åæ°ã ãšæã£ãŠããããæ£è§£ã¯LISã§ãããè²ããšã«åé¡ãç¬ç«ã«è§£ããŠããã
ããè²
ã³ãŒãã¯ãã¡ã
ã³ã³ãã¹ãäžã¯é¡æãçè§£ã§ããã«è«ŠããåŸæ¥èªåACãããæŒžååŒã¯åãã£ããå®è£ ããªããªãåãããå®è£ ã«2æéæãã£ããå®è£ ã®æ£ç¢ºããè¶³ããªããªããARCã§ã¯åè² ã«ãªããªãã
-
$(i, B_{i}) = (i, i+1)$ ã®ãšãã$(i,i+1)$ ãé£çµã«ã§ããããã£ãŠ$(i+1, B_{i+1})$ ã¯äœã§ãããã -
$(i+1, B_{i+1}) = (i+1, i)$ ã®ãšãã$(i,i+1)$ ãé£çµã«ã§ããããã£ãŠ$(i, B_{i})$ ã¯äœã§ãããã
ãããåºã«æŒžååŒãèããããããããããããŠå®è£
ã«æéåã£ãã
-
$B_i = -1$ ãªã$DP[1] = (1,0,N-1)$ ã§ãããããããããããã -
$B_i = 2$ ãªã$DP[1] = (1,0,0)$ -
$B_i \ne -1, 2$ ãªã$DP[1] = (0,0,1)$
-
$B_i = -1$ $DP[i+1][0] = DP[i][0]$ $DP[i+1][1] = DP[i][0] + DP[i][1] + DP[i][2]$ $DP[i+1][2] = DP[i][0] \times (N-2)$
-
$B_i = i+1$ $DP[i+1][0] = DP[i][0]$
-
$B_i = i-1$ $DP[i+1][1] = DP[i][0] + DP[i][1] + DP[i][2]$
- ãã以å€
$DP[i+1][2] = DP[i][0]$
-
$B_i = -1$ ãªãçãã¯$DP[N-1][0] \times N + DP[N-1][1] + DP[N-1][2]$ -
$B_i = i-1$ ãªãçãã¯$DP[N-1][0] + DP[N-1][1] + DP[N-1][2]$ - ãã以å€ãªãçãã¯
$DP[N-1][0]$
æ³å®è§£æ³ã¯å šãç°ãªãã
0å®ã§å€§æããratingã1159ãŸã§èœã¡ããäžå¹ŽéABCã§ã¯ãªãARCã«ratedã§åºãã®ã¯æ¥œããã£ãããARC ratedã¯ãããæåŸãããããªãã
ããã©ãããã120åããã°è§£ããAåé¡ãæšãŠãŠãBåé¡ã«å šæ¯ãããŠããŸã£ããBåé¡ãWAããåŸã«Aåé¡ã10åèããŠåãããªãã®ã§Båé¡ã«æ»ã£ãããç¿æã«Aåé¡ãè§£ããŠããŸã£ããçžå€ããããè§£ããåé¡ãšè§£ããªãåé¡ã®åºå¥ãã€ããªãã
ã³ãŒãã¯ãã¡ã
åºæ¬çãªnimåé¡ã®è§£æ³ã¯ããã¹ãŠã®å±±ã®ç³ã®æ°ã«ã€ããŠãxorã0ãªãåŸæå¿ åãããã§ãªããã°å æå¿ åã§ãããå³å¯ãªèšŒæã¯æç§æžãèªããšããŠãçŽæçãªçè§£ã¯å±±ãåãé«ããããªãäºã€ã®æåã«åè§£ããåŸæãåžžã«å¯Ÿæ¶æ» ãããããšãã§ããã°åŸæå¿ åã§ããã
以äžã®èŠç¹ãããã®åé¡ãæãããã²ãŒã ã®èŠåãã
Aåé¡ãªã®ã ããå®è£ ã¯ç°¡åãšããã¡ã¿èªã¿ã¯ãã£ãããã³ã³ãã¹ãäžã¯ç«ã£ãŠãããããæ°ãXORãããšãèŠåœéãã®æ¹éããç«ããªãã£ãã
ãããšAåé¡1å®ã§ã¯ç·ããã©ã ãããšæããD,C,Båé¡ã®é ã«ã¿ãŠãæå³çã«Aåé¡ãç¡èŠãããå®éæ°Žããã©ã®ããŒããŒã¯Båé¡1å® 73åãªã®ã§ãAåé¡1å®ã¯æéã§ãç·èœã¡ã§ãããAåé¡ãè§£ãã°ã¬ãŒãã£ã³ã°ã®äžãããå°ãªãã£ãã®ã§ã¯ããšããçºæ³ã¯ç¡ãã£ãã
ã³ãŒãã¯ãã¡ã
å ¬åŒè§£èª¬2ã®æ¹éã§èšãã ããçµå±è§£ããªãã£ãã
ãã£ãŠ
å
¬åŒè§£èª¬ã® if n < 50 ãå€ããŠã
ã³ã³ãã¹ãäžã¯ã
å
¬åŒè§£èª¬ã®1ã®éããäºåæ¢çŽ¢ã§ è§£ãã ã
ã³ãŒãã¯ãã¡ã
ã³ã³ãã¹ãäžã¯ã¡ãã£ãšèŠãã ãã§éãéããåŸæ¥è§£ãããè²ã äŸã詊ãããæ³åæ§ãèŠããã®ã§æåºãããèªåACã§ããŠããŸã£ããäžå¿120åã¯åã£ãããè§£ããåé¡ããã£ããæšãŠãŠããŸã£ããšãããããæªèšŒæã®å®éšããã£ããéããšã¯ã³ã³ãã¹ãäžã«ã¯æ³åããªãã£ãã
è§£ã®åè£ãå®éã«è§£ãæºããã確èªãã颿° -1 ãåºåããã
ãã以å€ã«è§£ã¯ãªããšç¥ã£ããACãããRã§è²ã
ãšè©Šãã
f <- function(c,x,n) { bitwXor(n,c) %% n }
which(f(c=31, x=19, n=1:110) == 19)
# [1] 38 70 102
which(f(c=31, x=21, n=1:110) == 21)
# [1] 37 69 101
which(f(c=31, x=23, n=1:110) == 23)
# [1] 36 68 100æ°Žã³ãŒããŒã«æ»ãã®ã¯éã«åããªãã£ãã
ã³ãŒãã¯ãã¡ã
ãããèããŠãåãããã解説ãèŠãŠãæ£åœæ§ãåãããªããå ¬åŒè§£èª¬ãã»ãŒäžžåãããã®ãäžèšã§ããã
ã³ãŒãã¯ãã¡ã
Aåé¡ã¯è§£ããªãããBåé¡ã¯æéç¡å¶éã§è§£ãããæ¹éã¯ããç«ã£ãããå®è£ æ¹æ³ãåãããªãã£ãã
æåã«ã¯ãšãªãå
èªã¿ããŠã Node ã®ããã«åè§£éããã
struct Node {
Num value {0};
Num serial {0};
bool operator<(const Node& other) const {
return ((value < other.value) ||
((value == other.value) && (serial < other.serial)));
}
};
次ã«ã»ã°ã¡ã³ãæšã6æ¬çšæããã Node ã®éå
-
$SA$ ã¯ã$A$ ã®å€ãä¹ããã»ã°ã¡ã³ãæšã§ãåºéåãåãã$value$ ã®åãåãã$serial$ ã®åã¯ç¡æå³ã ã$serial$ ã®æå€§å€ãšããŠããã -
$CA$ ã¯ã$A$ ã®åºçŸåæ°ãä¹ããã»ã°ã¡ã³ãæšã§ãåºéåãåã -
$SB$ ã¯ã$B$ ã®å€ãä¹ããã»ã°ã¡ã³ãæšã$CB$ ã¯ã$B$ ã®åºçŸåæ°ãä¹ããã»ã°ã¡ã³ãæšãšããã -
$SU$ ã¯ã$A \cup B$ ã®å€ãä¹ããã»ã°ã¡ã³ãæšã$CU$ ã¯ã$A \cup B$ ã®åºçŸåæ°ãä¹ããã»ã°ã¡ã³ãæšãšããã - å€ããã»ã°ã¡ã³ãæšäžã®æ·»ãåãæ±ããããŒãã«
$T[node]$ ãäœãã
æåã«
åæ§ã«
åé¡æã®æäœã®æå³ãèããã
-
$B_i \leq p$ ãªãã$U$ ã®$p$ 以äžã®å€ã®ãã¡æå€§ã®å€ãäžå€®å€ãªã®ã§é€ã -
$B_i \geq q$ ãªãã$U$ ã®$q$ 以äžã®å€ã®ãã¡æå°ã®å€ãäžå€®å€ãªã®ã§é€ã - ãã以å€ãªã
$B_i$ èªèº«ãäžå€®å€ãªã®ã§ã$A$ ã¯å€ãããªã
æäœåŸã®å€ãèããã
åæ§ã«ã
æåŸã«ã¯ãšãªã®æŽæ°æ¹æ³ã«ã€ããŠè¿°ã¹ããã¯ãšãª
- ã¯ãšãªåã®
$A_i$ ã$prev$ ãšãã - ã¯ãšãªåã®
$prev$ ã®ãã»ã°ã¡ã³ãæšäžã®äœçœ®ã¯$T[prev]$ ã§ããã - ã¯ãšãªåŸã®
$A_i$ ã®ãã»ã°ã¡ã³ãæšäžã®äœçœ®ã¯$T[next]$ ã§ããã -
$SA[T[prev]] = (0,0)$ ã«ãã -
$CA[T[prev]] = 0$ ã«ãã -
$SA[T[next]] = next$ ã«ãã -
$CA[T[next]] = 1$ ã«ãã -
$UA[T[prev]] = (0,0)$ ã«ãã -
$UA[T[prev]] = 0$ ã«ãã -
$UA[T[next]] = next$ ã«ãã -
$UA[T[next]] = 1$ ã«ãã
ã¯ãšãª
å ¬åŒè§£èª¬ãèªããšåããããããããäžå€®å€ãæ±ããå¿ èŠã¯ãªãã£ãã
忥ã®max-flowãèœãšããŠãæ°Žã³ãŒããŒã«æ»ãã®ã¯éã«åããªãã£ãã
ã³ãŒãã¯ãã¡ã
ãããã40å匱ãš1ããã§è§£ããã
5以å€ã®è¶³ããŠ10ã«ãªãæ°ã®çµãèãããäŸãã° 19 ããããªãã 1..19..9 ãšããã°ãè¶³ããŠ10ã«ãªãå Žæã¯1ãæã®ã¿ã§ããã
-
$C[i] > 0$ ãšãªã$i$ ã0çš®é¡ãªããè¶³ããŠ10ã«ãªãå Žæããªãã®ã§çãã¯0ã§ããã -
$C[i] > 0$ ãšãªã$i$ ã1çš®é¡ãªããäŸãã°1..19..9ãšããããšã§çãã¯1ã§ããã -
$C[i] > 0$ ãšãªã$i$ ã2çš®é¡ä»¥äžãªããè¶³ããŠ10ã«ãªãå Žæãäºãéãã«ããŠã1..12..212989..98..8ãšããããšã§çãã¯0ã§ããã
-
$A_r = 0$ ã€ãŸã5ãããªããã°ãçãã¯$A_5 - 1$ ã§ãã -
$A_r > 0$ ãªã5以å€ã®ååŸã«5ãæãã°ãããçãã¯$max(0, A_5 - A_r - 1)$ ã§ãããååŸã§ã¯ãªãéã«ããŠ1ããããã
ã³ãŒãã¯ãã¡ã
çãã®äžéã1ã ãšããåãã£ãããçãã
åä»ãªã®ã¯
-
$X=Y=Z$ ãªãã$|S_1| = |S_2| = |S_3| = X$ - ããã§ãªããŠ
$X=Y$ ãªãã$|S_1| = X, |S_2| = |S_3| = Z$
以äžã
-
$S_1$ ã¯ãå é ã0ã§ããã®åŸã«$Y$ åã®1 -
$S_2$ ã¯ã$Z$ åã®1 -
$S_3$ ã¯ã$Z$ åã®1ã®åŸã«ã$Y$ åã®0
å顿ãèŠãŠãUTF-8笊å·åã ãšæã£ããã€ãŸã1sã®åŸã«0ã眮ãã°ãä»ã®é£ç¶éšååãšã¯éãªããªãããããå©çšããŠããã®ä»ã®å Žåãæ§æããã
-
$Z - 1$ åã®1ã®åŸã«0 -
$Y - 1$ åã®0ã®åŸã«1ããã ãå é ã®0ã¯ãäžèšã®æ«å°Ÿãšéãªãã -
$(X - 1)/2$ åã®10ããã ãå é ã®1ã¯ãäžèšã®æ«å°Ÿãšéãªãã
ã³ãŒãã¯ãã¡ã
Båé¡ãããã£ãšæ©ãè§£ããã
äžåæäœãããšãé£ç¶ããæšã®åºéãæ¬¡ã®æäœã§éžã¹ãããã«ãªãããªã®ã§ ..###... ãšããå Žåãé£ç¶ããæšãæããæšã®çããŠãªãåºéããåºç»ãäžã€ãã€éžã¶ã®ãæé©ã§ããã .#.#. ã®äž¡ç«¯(1,5)ãéžã¶ããã«é£ç¶ããæšã2åºéä»¥äžæäœãããšãããããæäœåæ°ãæžããã®ã§å ±é
¬ãæå€§åãæããã
æšãé£ç¶ããŠçããŠããããŸãã¯é£ç¶ããŠçããŠããªãåºéãã©ã³ã¬ã³ã°ã¹å§çž®ããŠ
å é åºéã«æšãçããŠããŠããã®æšã¯åããªãã®ã§ç¡ãã£ãããšã«ããŠããããããããšå é ã1ãšããŠãå é ãã奿°çªç®ã¯æšãé£ç¶ããŠçããŠããªãåºéãå¶æ°çªç®ã¯æšãé£ç¶ããŠçããŠããåºéã§ããã
é£ç¶åºé
ããé£ç¶åºé
å
¬åŒè§£èª¬ã¯