å°å ¥
é å $a = (a_0, a_1, \dots, a_{n-1})$ ã«å¯¾ãã¦é©å½ãªåºé $[l\lldot r)$ ãä¸ãããã¦ãããã§ã®å¹³åå¤ $f_a(l, r) = \tfrac1{r-l}\sum_{i=l}^{r-1} a_i$ ãèãã¾ãã
ãã¨ãã° $[l\lldot r)$ ãããããä¸ãããã¦å¹³åå¤ãæ±ããã ããªããç´¯ç©åãç¨ããã ãã§ããã§ãã ããã㯠$a_i$ ã $x$ ã«æ´æ°ãããããªã¯ã¨ãªãããããä¸ããããå ´åããã»ã°æ¨ãç¨ããã ãã§ããã§ãã
ã§ã¯ã左端 $l$ ãåºå®ããå ´åã«å¹³åå¤ãæ大ãããããå³ç«¯ $\argmax_{r\gt l} f_a(l, r)$ ãæ±ãããå ´åã¯ã©ããã¾ããããå¤ã®æ´æ°ã¯ãªããã®ã¨ãã¾ãã
æ¬é¡
å¹³åå¤ã®åå $\sum_{i=l}^{r-1} a_i$ ã®æ¹ãç´¯ç©åã¨ãã¦æ±ãã®ã¯æ¯è¼çèªç¶ã«è¦ããã§ãããã åæ¯ã® $r-l$ ãåä»ãªæ°ããã¾ãã
ä¸æ¦ç´¯ç©åã®å½¢ã§æ¸ãã¦ã¿ã¾ãã $$s_i = \sum_{j=0}^{i-1} s_j = a_0 + a_1 + \dots + a_{i-1}$$ ã¨ããã¨ã該å½ã®å¹³åå¤ã¯ $\tfrac{s_r-s_l}{r-l}$ ã¨æ¸ãã¾ãã
ãã®å¼ã¯ã$(x_i, y_i) = (i, s_i)$ ãªãç¹ãã¡ ($i \in [0\lldot n]$) ãèããã¨ãã®ãç¹ $l$ ã¨ç¹ $r$ ãçµã¶ç´ç·ã®å¾ãã¨è¦ããã¨ãã§ãã¾ã*1ã
ããã§ãããããç¹ãã¡ãèãã¾ãã ãã以éã«ããã¦ã¯ãããå ã® $a_i$ ã®ãã¨ã¯ä¸æ¦å¿ã㦠$s_i$ ã ããæ°ã«ããã ãã§æ¸ã¿ã¾ãã
å ã æ±ãããã£ããã®ã¯ãç¹ $l$ ããå³ã«ããç¹ã®ãã¡ãç¹ $l$ ã¨çµãã ã¨ãã«å¾ããæ大ã¨ãªãç¹ã®çªå·ã§ããã¨ãããã¾ãã ããã¯ãå¹³é¢èµ°æ»ãªã©ãè¡ããã¨ã§å $l$ ã«å¯¾ãã¦æ±ãããã¨ãã§ãã¾ãã å¸å ã ã¨æãæ¹ãè¦éããããã¨æãã人ãããããããã¾ããï¼ ãããããªè¦æ¹ã身ã«ã¤ãã¦ããæ¹ãããããã§ãã
ä¾é¡
- ABC 341 G
- ãã®ã¾ã¾ã§ãã
- Codeforces Round 618 (Div. 1)
- ã¡ãã£ã¨å¿ç¨çãã
ä»ã«ãããããèããããããã
ææ
geometry ã«å¸°çããããã¯ããã¯å¤©æãã¡ã CHT ã§é«éåãã DP ã¨ããããã ç©å½¢ã¯ã¨ãªã¨ãã«å¸°çããã¦ã»ã°æ¨ã§å¹³é¢èµ°æ»ãããã wavelet matrix ã使ã£ããããã®ãä¼¼ãã¸ã£ã³ã«ã§ã¯ããããã ã¨ã¯ããã»ã°æ¨ãã»ã°æ¨ä»¥å¤å ¨é¨ããå ¸åæããæ°ãããã
geometry ã®ãããããªãã¨ãã¡ããã¨ããåæã ã¨ãå½ç¶ã®ããã«æ°¸ç¶èµ¤é»æ¨ã¨ããåºã¦ãã¦å¤§å¤ãããªã®ã§ AtCoder ã§ã¯åºãªããã (cf. CS166.1226/18)*2ã
åºéã®é·ãã»è¦ç´ æ°ãæ±ãããã¨ãã« $1$ ãã©ããããã«ç»å ´ããããã¯ããããã ABC 146 E ãããããæ°é ãæããã
åæ°ã $0$ ä¹åã¨è¦ãã®ã¯ $k$ ä¹åãæ±ãã DP ã§åºã¦ããã¡ã é 延ã»ã°æ¨ã§åºéå ç®ã»åºéåãæ±ããã¨ãã«ã $0$ ä¹å㨠$1$ ä¹åã®ãã¢ãæã£ã¦ããã¨ãã解éãèªç¶*3ã
ãã¡ããããåºéå¹³åå¤ã¨ããã°çµ¶å¯¾ãããã§æèåæ¢ããã®ã¯ãããªããããå¦çãããã¯ã¨ãªã«å¿ãã¦é©åãªèå¯ãããå¿ è¦ãããã®ã§ã
è¿æ³
æè¿ã¯ãããã merge/split ã®ã§ãã B-tree ãæ¸ããã¨ãã¦ãã¾ããmerge ãããªã㦠concat ã¨ã append ã¨ãå¼ã³ããæ°æã¡ã¯ããã¾ããmerge ã¯ä¸è¬çãªå称ããã¦ãã£ã¤ãæ¹ã®æ å ±ãèãã®ã§ã
ã ãã ã unsafe Rust ã Stacked/Tree Borrows ã¨ã仲ããã«ãªã£ã¦ããæããããã¾ãã unsafe ç±æ¥ã® UB ã§ã¯ãªãã·ã³ãã«ã«æ·»åã® off-by-one ãªã©ã§æ¨ãã°ãã£ã°ãã£ã«ãªã£ã¦ã®ã£ã°ã¿ããã«ãªã£ã¦ãããããã°åºåãçºããããã¦ãã¾ãã
ããã¯ããã¨ãã¦ã平衡æ¨ã®ããæãã®åºåãå¾ãããã®ã§ã¡ãã£ã¨æºè¶³ãã¦ãã¾ãããããã°ãæãã¾ãã
ï¼ç»åã§è²¼ãã«ã¯ç¸¦é·ãããããé©å½ãªè¡æ°ã§åºåã£ã¦æ¨ªã«ä¸¦ã¹ã¦ããã©ãï¼ãªããªãæªããªãæãããã pic.twitter.com/EueCf4LOla
— ãã³ã¡ããððð¦ (@rsk0315_h4x) April 8, 2024
ãã¨é¢¨éªãå¼ãããæ²»ããããããã¾ãããä¹ ã ã«ããã¤ãåºãã¦æãããæ°æã¡ã«ãªãã¾ããã
ããã
ãããã§ãã
*1:ããæ½è±¡çã«ã¯ã$\frac{f(r)-f(l)}{g(r)-g(l)}$ ã®å½¢ãè¦ãã¨ãã«ãåæ¯ã»ååããããã $x$, $y$ 座æ¨ã®å·®åã ãªãã¨è¦ããã¨ããã®ããããã¾ããï¼
*2:ãããªã®ã¯æ°ã«ããã平衡æ¨ããéãããªã¨ããå¼·ãæå¿ã§åå¼·ããå¿ è¦ãããã
*3:ã ã¨ãã³ã¡ããã¯æã£ã¦ãã¾ãã