ã‚ã—ã¯ãƒã‚¤ãƒŠãƒªå¤§å¥½ãBonald.Brvin.Bnuthã˜ã‚ƒï¼ オフトゥンフォード大å¦ã§ãƒã‚¤ãƒŠãƒªåˆ—ã®æ€§è³ªã‚’ç ”ç©¶ã—ã¦ãŠã£ã¦ã®ãŠã€BnuthãŠã˜ã•ã‚“ã¨å‘¼ã°ã‚Œã¦ã€è¦ªã—ã¾ã‚Œã¦ãŠã‚‹ãžã„ï¼ ã¡ãªã¿ã«ã€ã‚ã—ã®åå‰ã€ŒBonald.Brvin.Bnuthã€ã‚’ASCIIコードã‹ã‚‰ãƒã‚¤ãƒŠãƒªåŒ–ã™ã‚‹ã¨ã€Œ1000010 1101111 1101110 1100001 1101100 1100100 101110 1000010 1110010 1110110 1101001 1101110 101110 1000010 1101110 1110101 1110100 1101000ã€ã«ãªã‚‹ãžã„ï¼ æ¥½ã—ã„ã®ãŠï¼
今日ã¯ã€å¼ŸåãŒä½•ã‚„らé¢ç™½ãã†ãªå®Ÿé¨“ã‚’ã™ã‚‹ã¨è¨€ã†ã‹ã‚‰ã®ãŠã€æœã‹ã‚‰æ¥½ã—ã¿ãªã‚“ã˜ã‚ƒï¼ ã©ã‚Œã©ã‚Œã€ã©ã‚“ãªã“ã¨ã‚’ã™ã‚‹ã‚“ã˜ã‚ƒã®ï¼Ÿ
ãªã‚“ã¨ï¼ãƒã‚¤ãƒŠãƒªåˆ—を書ãæ›ãˆç¶šã‘ã‚‹ã“ã¨ã§ã€ä½•ã‚‰ã‹ã®æ€§è³ªã‚’見出ã—ãŸã„ã¨ãªï¼ ãµã‚€ï¼ã“ã‚Œã¯ã€é‡è¦ãªç™ºè¦‹ã®åŒ‚ã„ãŒã·ã‚“ã·ã‚“ã™ã‚‹ãžã„ï¼ ã•ã‚ã€ã•ã‚ã€å®Ÿé¨“を始ã‚よã†ã§ã¯ãªã„ã‹ï¼ より詳細ãªè¨å®šã‚’æ–‡ç« ã¨ã—ã¦ã¾ã¨ã‚ã¦ãŠããžã„ï¼
é•·ã•nã®ãƒã‚¤ãƒŠãƒªåˆ—x = (x_1, ..., x_n) (x_i \in \{0,1\}, i = 1,...,n) ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚ãƒã‚¤ãƒŠãƒªåˆ—xã«å¯¾ã—ã¦2ã¤ã®é–¢æ•°f(x)ã¨g(x)を以下ã®ã‚ˆã†ã«å®šç¾©ã™ã‚‹ã€‚
f(x) = Σ_{i=1}^{n} x_i = x_1 + x_2 + ... + x_n g(x) = Σ_{i=1}^{n-1} x_i x_{i+1} = x_1 x_2 + x_2 x_3 + ... x_{n-1} x_n
今ã€ãƒã‚¤ãƒŠãƒªåˆ—xã«å¯¾ã—ã¦ä»¥ä¸‹ã®ã‚ˆã†ãªå¤‰æ›´æ“作をq回行ã†ã€‚j回目ã®å¤‰æ›´æ“作ã¯l_j, r_j, b_j (1 \leq l_j \leq r_j \leq n, b_j \in \{0,1\}, j = 1,...,q) ã§ä¸Žãˆã‚‰ã‚Œã€ã“ã‚Œã¯ãƒã‚¤ãƒŠãƒªåˆ—xã®l_j番目ã‹ã‚‰r_j番目をb_jã«ç½®ãæ›ãˆã‚‹æ“作ã«å¯¾å¿œã™ã‚‹ã€‚å„変更æ“作ã®å¾Œã§f(x) - g(x)を求ã‚よ。
n x q l_1 r_1 b_1 ... l_q r_q b_q
1行目ã«ã¯ãƒã‚¤ãƒŠãƒªåˆ—ã®é•·ã•ã‚’表ã™æ•´æ•°nãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚ 2行目ã«ã¯ãƒã‚¤ãƒŠãƒªåˆ—xを表ã›ã™æ–‡å—列ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚ 3行目ã«ã¯ã‚¯ã‚¨ãƒªã®å›žæ•°ã‚’表ã™æ•´æ•°qãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚ 続ãqè¡Œã®ã†ã¡i行目ã«ã¯ã€i回目ã®ã‚¯ã‚¨ãƒªã«é–¢ã™ã‚‹æƒ…å ±l_i, r_i, b_iãŒã“ã®é †ã§ç©ºç™½åŒºåˆ‡ã‚Šã§ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚
å„i=1,...,qã«ã¤ã„ã¦ã€i行目ã«i回目ã®ã‚¯ã‚¨ãƒªã‚’処ç†ã—ãŸå¾Œã®f(x) - g(x)ã®å€¤ã‚’出力ã›ã‚ˆã€‚
10 0101100110 3 3 3 1 1 6 0 2 5 1
2 1 2
8 00111100 3 8 8 1 4 5 0 7 8 1
2 3 2