{
    "version": "https://jsonfeed.org/version/1",
    "title": "",
    "description": "一個喜歡寫演算法題目的人",
    "home_page_url": "https://flashing.tw",
    "items": [
        {
            "id": "https://flashing.tw/2026/06/01/APCS%20%E4%B8%AD%E7%B4%9A%E5%85%A5%E9%96%80-%20Flashingtw/",
            "url": "https://flashing.tw/2026/06/01/APCS%20%E4%B8%AD%E7%B4%9A%E5%85%A5%E9%96%80-%20Flashingtw/",
            "title": "APCS 中級入門- Flashingtw",
            "date_published": "2026-05-31T16:00:00.000Z",
            "content_html": "<h1 id=\"apcs-中級-基本教學-by-flashingtw\"><a class=\"anchor\" href=\"#apcs-中級-基本教學-by-flashingtw\">#</a> APCS 中級 基本教學 - by Flashingtw</h1>\n<p>預備知識: C++基本語法,<s>中文閱讀能力</s></p>\n<h1 id=\"前言\"><a class=\"anchor\" href=\"#前言\">#</a> 前言</h1>\n<p>我是閃光&gt;:D</p>\n<p>目前APCS只考了 識讀4/實作3(300滿分) <s>所以寫中級入門</s><br />\nAT coder Rating: 1105小綠人<br />\nCodeForces Rating: 1538小青人</p>\n<p>由於筆者只會C++,所以以下的示範皆為C++,如果有Python使用者 <s>請自行翻譯</s><br />\n我自己是因為要考TOI TOI只給用C<ins>所以也沒去學Python競程寫法<br />\n而且C</ins>簡單多了</p>\n<p>文字大多是口語化的,沒有很正式 有問題可以私訊我uwu</p>\n<h1 id=\"第一次寫題\"><a class=\"anchor\" href=\"#第一次寫題\">#</a> 第一次寫題</h1>\n<h2 id=\"1-如何輸入輸出\"><a class=\"anchor\" href=\"#1-如何輸入輸出\">#</a> 1. 如何輸入輸出?</h2>\n<h3 id=\"基本輸入\"><a class=\"anchor\" href=\"#基本輸入\">#</a> 基本輸入</h3>\n<p>要解題,肯定會有些&quot;需求&quot;的麻 , 根據題意先選擇怎麼輸入<br />\n最簡單且一般的題目,可能只有幾個變數,跟幾個ifelse<br />\n把一個輸入變成變數的方式是這樣:</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-cpp\"><span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">#</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">include</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> &#x3C;</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">bits/stdc++.h</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">></span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">using</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> namespace</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> std</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> main</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> n</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    cin</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">n</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    </span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    cout </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> n</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#125;</span></span></code></pre>\n<p>這段代碼 n是變數名稱, cin把數值輸入進n後 再把n輸出出來</p>\n<h3 id=\"一維陣列字串輸入\"><a class=\"anchor\" href=\"#一維陣列字串輸入\">#</a> 一維陣列/字串輸入</h3>\n<p>但如果是一段數列或字串呢?<br />\n一段數列的話:</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-cpp\"><span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">#</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">include</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> &#x3C;</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">iostream</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">></span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">using</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> namespace</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> std</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> v</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1005</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> main</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> n</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    cin</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">n</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    for</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> i</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> i</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">n</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> i</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">++</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        cin</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">v</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#125;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    </span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    for</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> i</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> i</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">n</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> i</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">++</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        cout </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> v</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> \"</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#125;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    return</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 0</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#125;</span></span></code></pre>\n<p>這樣子是把一段長度為ｎ的數列　輸入到ｖ這個陣列裡面,且n&lt;=1000</p>\n<p>字串有兩種方式可以輸入,一種是輸入到傳統字元陣列裡,一種是輸入到STL string<br />\n個人比較喜歡輸入到STL string,字元陣列不太習慣用:</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-cpp\"><span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">#</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">include</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> &#x3C;</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">bits/stdc++.h</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">></span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">using</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> namespace</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> std</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> main</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    string s</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    cin</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">s</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    </span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    cout </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> s</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#125;</span></span></code></pre>\n<p>cstring跟一般的陣列一樣支援中括弧[i]取第i個元素(字元)</p>\n<h3 id=\"二維陣列輸入\"><a class=\"anchor\" href=\"#二維陣列輸入\">#</a> 二維陣列輸入</h3>\n<p>除了一維陣列跟字串外 中級也很愛考二維陣列的使用<br />\n二維陣列也是可以輸入的<br />\n這段是一個最高長1000,最寬長1000的二維陣列輸入</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-cpp\"><span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">#</span><span style=\"color:#1E754F;--shiki-dark:#4D9375\">include</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> &#x3C;</span><span style=\"color:#B56959;--shiki-dark:#C98A7D\">bits/stdc++.h</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">></span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">using</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> namespace</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> std</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> grid</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1005</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1005</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> main</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> h</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">w</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    cin</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">h</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">w</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    for</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> i</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">h</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">++</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        for</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> j</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">j</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">w</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">j</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">++</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">            cin</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">grid</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">]</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">j</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">&#125;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#125;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    </span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    for</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> i</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">h</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">++</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">        for</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> j</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">j</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">w</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">j</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">++</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">            cout </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> grid</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">]</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">j</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">        </span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">&#125;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">        cout </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\"> '</span><span style=\"color:#A65E2B;--shiki-dark:#C99076\">\\n</span><span style=\"color:#B5695977;--shiki-dark:#C98A7D77\">'</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#125;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#125;</span></span></code></pre>\n<p>1005是習慣開稍微大一點,但其實真的要避免的話開到1001就夠了<br />\ni的上限是h（高度）,代表垂直方向的座標；j 的上限是w（寬度）,代表水平方向的座標<br />\n二維陣列習慣表示grid[i][j]為第i列第j行的元素<br />\n畫出來的話 [0][0] 會在最左上角 <strong>要記得陣列是從0開始的,不要寫成i&lt;=h,j&lt;=w了</strong><br />\ni越大會是越下面的元素 j越大會是越右邊的元素<br />\n所以在一個高h,寬w 的陣列 最右下角的元素會是grid[h-1][w-1]</p>\n<p>如果習慣陣列是從1開始的話也可以把陣列開大一點後從1開始<br />\n0開始或1開始在不同題目上也會有差別</p>\n<h1 id=\"第一次ac\"><a class=\"anchor\" href=\"#第一次ac\">#</a> 第一次AC</h1>\n<p>如果考過初級或有在寫題目的話應該是已經會解題了<br />\n中級就只是解的範圍變大一點而已</p>\n<p>在解題的時候,先把題目一個字一個字讀完後再分成 輸入,處理,輸出 三段實作<br />\n但有些題目會要你在處理時輸出, 就看題目如何說明了</p>\n<p>中級的題目大多只要按照題目意思直接做就可以了,不像是中高級,高級還需要去想時間複雜度來優化演算法來解題<br />\n這邊先都拿歷屆當作範例題目uwu 然後都是用Zerojudge 比較簡單使用w</p>\n",
            "tags": [
                "C++",
                "教學"
            ]
        },
        {
            "id": "https://flashing.tw/2026/03/01/%E7%AB%B6%E7%A8%8B%E9%A1%8C%E8%A7%A3%E7%AD%86%E8%A8%98/",
            "url": "https://flashing.tw/2026/03/01/%E7%AB%B6%E7%A8%8B%E9%A1%8C%E8%A7%A3%E7%AD%86%E8%A8%98/",
            "title": "競程題解筆記",
            "date_published": "2026-02-28T16:00:00.000Z",
            "content_html": "<h1 id=\"競程題解筆記\"><a class=\"anchor\" href=\"#競程題解筆記\">#</a> 競程題解筆記</h1>\n<p>拿來做些小筆記,題解用的</p>\n<h1 id=\"atcoder-abc\"><a class=\"anchor\" href=\"#atcoder-abc\">#</a> ATCoder ABC</h1>\n<h2 id=\"abc-450-pe\"><a class=\"anchor\" href=\"#abc-450-pe\">#</a> ABC-450 pE</h2>\n<p>雖然題目要求<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><msub><mi>S</mi><mn>10</mn></msub></mrow><annotation encoding=\"application/x-tex\">S_{10}</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\"></span><span class=\"mord\"><span class=\"mord mathnormal\" style=\"margin-right:0.05764em;\">S</span><span class=\"msupsub\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.3011em;\"><span style=\"top:-2.55em;margin-left:-0.0576em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">10</span></span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.15em;\"><span></span></span></span></span></span></span></span></span></span><span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><msup><mrow></mrow><mn>18</mn></msup></mrow><annotation encoding=\"application/x-tex\">^{18}</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8141em;\"></span><span class=\"mord\"><span></span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8141em;\"><span style=\"top:-3.063em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">18</span></span></span></span></span></span></span></span></span></span></span></span> 的l,r<br />\n但其實算到總長度超過<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><msup><mn>10</mn><mn>18</mn></msup></mrow><annotation encoding=\"application/x-tex\">10^{18}</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8141em;\"></span><span class=\"mord\">1</span><span class=\"mord\"><span class=\"mord\">0</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8141em;\"><span style=\"top:-3.063em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">18</span></span></span></span></span></span></span></span></span></span></span></span>的就夠了,因為l,r最多就到<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><msup><mn>10</mn><mn>18</mn></msup></mrow><annotation encoding=\"application/x-tex\">10^{18}</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8141em;\"></span><span class=\"mord\">1</span><span class=\"mord\"><span class=\"mord\">0</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8141em;\"><span style=\"top:-3.063em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">18</span></span></span></span></span></span></span></span></span></span></span></span></p>\n<p>因為全部字串都是1,2組成 所以我們可以先做些預處理</p>\n<p>預處理:<br />\n<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><msub><mi>S</mi><mn>1</mn></msub></mrow><annotation encoding=\"application/x-tex\">S_1</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\"></span><span class=\"mord\"><span class=\"mord mathnormal\" style=\"margin-right:0.05764em;\">S</span><span class=\"msupsub\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.3011em;\"><span style=\"top:-2.55em;margin-left:-0.0576em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">1</span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.15em;\"><span></span></span></span></span></span></span></span></span></span>,<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><msub><mi>S</mi><mn>2</mn></msub></mrow><annotation encoding=\"application/x-tex\">S_2</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\"></span><span class=\"mord\"><span class=\"mord mathnormal\" style=\"margin-right:0.05764em;\">S</span><span class=\"msupsub\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.3011em;\"><span style=\"top:-2.55em;margin-left:-0.0576em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">2</span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.15em;\"><span></span></span></span></span></span></span></span></span></span>的長度,包含的每個字母數量,包含的字母數量的前綴和<br />\n<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><msub><mi>S</mi><mn>3</mn></msub></mrow><annotation encoding=\"application/x-tex\">S_3</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\"></span><span class=\"mord\"><span class=\"mord mathnormal\" style=\"margin-right:0.05764em;\">S</span><span class=\"msupsub\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.3011em;\"><span style=\"top:-2.55em;margin-left:-0.0576em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">3</span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.15em;\"><span></span></span></span></span></span></span></span></span></span>~<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><msub><mi>S</mi><mn>88</mn></msub></mrow><annotation encoding=\"application/x-tex\">S_{88}</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8333em;vertical-align:-0.15em;\"></span><span class=\"mord\"><span class=\"mord mathnormal\" style=\"margin-right:0.05764em;\">S</span><span class=\"msupsub\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.3011em;\"><span style=\"top:-2.55em;margin-left:-0.0576em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">88</span></span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.15em;\"><span></span></span></span></span></span></span></span></span></span> 的長度及包含字母數量</p>\n<p>分治:<br />\n由於當前字串k 由k-1,k-2組成<br />\n如果所需長度&lt;=k-1那k-2的地方不會用到直接遞迴就好<br />\n如果&gt; 就加上預處理的表+去k-2遞迴 cur減掉k-1的長度</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-cpp\"><span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">if</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">len</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">k</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    return</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> solve</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">k</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">tar</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#125;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">if</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">len</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">k</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    return</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> cnt</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">k</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">tar</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+</span><span style=\"color:#59873A;--shiki-dark:#80A665\">solve</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">k</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">2</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">len</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">k</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">tar</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#125;</span></span></code></pre>\n<p>終止條件:<br />\nk=0時 回傳0<br />\nk=1時 回傳字串1要求字母的前綴 2同理</p>\n<p>能求一個點的包含,就能求一個區間的包含<br />\n我們只要找R點的答案減掉L-1的答案 就可以了</p>\n<h2 id=\"abc-451-pe\"><a class=\"anchor\" href=\"#abc-451-pe\">#</a> ABC-451 - pE</h2>\n<p>給一張矩陣圖 判斷是不是一顆樹<br />\n因為是樹,兩點權最小的就會是樹邊,直接跑MST,<br />\n之後再用每個點跑一次BFS/DFS 一個一個核對是不是正確的距離<br />\n總複雜度 <span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mi>O</mi><mo stretchy=\"false\">(</mo><msup><mi>N</mi><mn>2</mn></msup><mi>l</mi><mi>o</mi><mi>g</mi><mi>N</mi><mo stretchy=\"false\">)</mo></mrow><annotation encoding=\"application/x-tex\">O(N^2 logN)</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:1.0641em;vertical-align:-0.25em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.02778em;\">O</span><span class=\"mopen\">(</span><span class=\"mord\"><span class=\"mord mathnormal\" style=\"margin-right:0.10903em;\">N</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8141em;\"><span style=\"top:-3.063em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">2</span></span></span></span></span></span></span></span><span class=\"mord mathnormal\" style=\"margin-right:0.01968em;\">l</span><span class=\"mord mathnormal\">o</span><span class=\"mord mathnormal\" style=\"margin-right:0.03588em;\">g</span><span class=\"mord mathnormal\" style=\"margin-right:0.10903em;\">N</span><span class=\"mclose\">)</span></span></span></span></p>\n<h2 id=\"abc-451-pf\"><a class=\"anchor\" href=\"#abc-451-pf\">#</a> ABC-451 - pF</h2>\n<p>邊兩端點必定異色,為二分圖<br />\n只要確定一個點 其他點也確定,最小數量為 min(同色,異色)<br />\n帶權DSU d[u]為u與root的相對顏色 如果兩個根一樣,下次加邊d[u]==d[v] 那二分圖就炸了 之後可以瘋狂輸出-1</p>\n<p>如果沒炸就看<br />\n兩個root都是同個顏色的話就可以直接兩個相加<br />\n如果兩個不同顏色代表原本v的異色就會是u的同色 所以v的異色加給u的同色 反之亦然</p>\n<h2 id=\"abc-452-pd\"><a class=\"anchor\" href=\"#abc-452-pd\">#</a> ABC-452 - pD</h2>\n<p>找&quot;不包含&quot;的 = 全部-包含的 正難則反</p>\n<p>預處理一個nextpos陣列,在第i格最近的字母j位置</p>\n<p>枚舉每個L 去找到他的極限R,這樣[L,R]必定包含T字串<br />\n[L,R+1]也必定包含<br />\n將這些值用n-R 可以算出以L為邊界 R從R到n這些字串都是包含T字串的S子字串<br />\n全部加起來之後用S的全部子字串減掉剛剛算出來的包含字串即可</p>\n<h2 id=\"abc-453-pg\"><a class=\"anchor\" href=\"#abc-453-pg\">#</a> ABC-453 - pG</h2>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-cpp\"><span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> node_cnt </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\"> 0</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"> //版本數量</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">vector</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">Edge</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> adj</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">M</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"> //版本連接版本的樹</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">vector</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">Q</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">></span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> queries</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">M</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//每個版本裡面的詢問</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">ll </span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">ans</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">M</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"> //q詢問</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> cur_ver</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">N</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"> // 第i個陣列在版本樹裡面的版本</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> actval</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">200005</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"> //當前陣列</span></span></code></pre>\n<p>把詢問離線處理+版本樹後直接用一顆BIT處理掉<br />\ntype 1的詢問 把y陣列複製到x陣列<br />\n-&gt; x陣列的版本改成y陣列的版本<br />\ntype 2的詢問 把x陣列的第i格改成v<br />\n-&gt; 延伸x當前版本 創造新節點(node_cnt++) 並將資訊放在邊上 接在x當前版本後面<br />\ntype 3的詢問 queries[x的當前版本] pushback一個詢問</p>\n<p>dfs運作:</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-cpp\"><span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">void</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> dfs</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> u</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    for</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">auto</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> q</span><span style=\"color:#999999;--shiki-dark:#666666\">:</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">queries</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">u</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">        ans</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">q</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">id</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#999999;--shiki-dark:#666666\"> =</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> bit</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">query</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">q</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">l</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">q</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">r</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#125;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    for</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">auto</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> e</span><span style=\"color:#999999;--shiki-dark:#666666\">:</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">adj</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">u</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">        int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> old_val </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> actval</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">e</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">idx</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">        actval</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">e</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">idx</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#999999;--shiki-dark:#666666\"> =</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> e</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">        bit</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">add</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">e</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">idx</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> e</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">old_val</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#59873A;--shiki-dark:#80A665\">        dfs</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">e</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">to</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">        bit</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#59873A;--shiki-dark:#80A665\">add</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">e</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">idx</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> old_val</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">e</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">val</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">        actval</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">e</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">idx</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#999999;--shiki-dark:#666666\"> =</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> old_val</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#125;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#125;</span></span></code></pre>\n<p>進入當前版本時 先回答所有詢問<br />\n之後再利用當前版本的邊上的資訊 修改 點,值<br />\n回朔完後再把 點,值 改回去</p>\n<h1 id=\"atcoder-awc\"><a class=\"anchor\" href=\"#atcoder-awc\">#</a> ATCoder AWC</h1>\n<h2 id=\"awc-0029-pe\"><a class=\"anchor\" href=\"#awc-0029-pe\">#</a> AWC-0029 - pE</h2>\n<p><strong>題目敘述:</strong></p>\n<blockquote>\n<p>給定一張圖n點m邊 n&lt;=300,m&lt;=n(n-1)<br />\n再給s,k k為目的地點<br />\n求從s開始走全部k個地點再走回s的最小距離</p>\n</blockquote>\n<p>N&lt;=300 , k&lt;=15<br />\n反射動作TSP ,n&lt;=300距離就用floyd-warshall找最小</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-cpp\"><span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">dp</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mask</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\"> //定義為 走過mask的點最後停在i上的最小距離</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">轉移式:</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">從u走到v</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">枚舉u</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">dp</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">new_mask</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">v</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#999999;--shiki-dark:#666666\"> =</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> min</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">dp</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">new_mask</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">v</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">dp</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mask</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">u</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">dist</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">u</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">v</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span></span></code></pre>\n<p>ans求法:<br />\n把每個u,fullmask枚舉出來</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-cpp\"><span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> full </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">k</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">ll ans </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> INF</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">for</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> i</span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">k</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">++</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">    ans </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> min</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">ans</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">dp</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">full</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">dist</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">ver</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">i</span><span style=\"color:#a13865;--shiki-dark:#d9739f\">]</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">s</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#999999;--shiki-dark:#666666\">    </span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#125;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">if</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">ans</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">==</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">INF</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> cout </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\"> -</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">else</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> cout </span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">&#x3C;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> ans</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span></code></pre>\n<p>要先枚舉u再枚舉v 而且要判斷u有沒有在mask裡</p>\n<h2 id=\"awc-0034-pe\"><a class=\"anchor\" href=\"#awc-0034-pe\">#</a> AWC-0034 pE</h2>\n<p>N&lt;=16還是反射TSP (雖然想了有點久<br />\n定義dp[mask][u] 為放mask最後停在u的最大值</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-cpp\"><span class=\"line\"><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">轉移式:</span></span>\n<span class=\"line\"><span style=\"color:#B07D48;--shiki-dark:#BD976A\">dp</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">new_mask</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">v</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">]</span><span style=\"color:#999999;--shiki-dark:#666666\"> =</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> max</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">dp</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">new_mask</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">v</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">dp</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">mask</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">u</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+</span><span style=\"color:#59873A;--shiki-dark:#80A665\">abs</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">p</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">u</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">p</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">v</span><span style=\"color:#a65e2b;--shiki-dark:#d4976c\">]</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">w</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">[</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">cur</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">]</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span></code></pre>\n<p>其中 cur為mask所包含的1個數<br />\n每次轉移時 從每個mask裡面原有的1(u) 轉移至mask裡面有的0(v)</p>\n<h2 id=\"awc-0038-pd\"><a class=\"anchor\" href=\"#awc-0038-pd\">#</a> AWC-0038 pD</h2>\n<p>總共答案為 <span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mi>C</mi><msubsup><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></msubsup><msub><mi>w</mi><mi>i</mi></msub></mrow><annotation encoding=\"application/x-tex\">C \\sum _{i=1} ^n w_i</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:1.104em;vertical-align:-0.2997em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.07153em;\">C</span><span class=\"mspace\" style=\"margin-right:0.1667em;\"></span><span class=\"mop\"><span class=\"mop op-symbol small-op\" style=\"position:relative;top:0em;\">∑</span><span class=\"msupsub\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8043em;\"><span style=\"top:-2.4003em;margin-left:0em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mathnormal mtight\">i</span><span class=\"mrel mtight\">=</span><span class=\"mord mtight\">1</span></span></span></span><span style=\"top:-3.2029em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mathnormal mtight\">n</span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.2997em;\"><span></span></span></span></span></span></span><span class=\"mspace\" style=\"margin-right:0.1667em;\"></span><span class=\"mord\"><span class=\"mord mathnormal\" style=\"margin-right:0.02691em;\">w</span><span class=\"msupsub\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.3117em;\"><span style=\"top:-2.55em;margin-left:-0.0269em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mathnormal mtight\">i</span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.15em;\"><span></span></span></span></span></span></span></span></span></span><br />\nC 就是從挑 ⌊N/2⌋ 人開始，一路加到挑滿 N−1 人的所有組合數總和：<br />\nC =\\sum _{k=\\lfloor N/2 \\rfloor} ^{N-1} \\pmatrix{N-1\\\\k}</p>\n<p>優化:<br />\nN為偶數時<br />\n剩下的人為N-1 是奇數<br />\n總共選擇的方法數為 <span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mi>C</mi><mo>=</mo><mfrac><msup><mn>2</mn><mrow><mi>N</mi><mo>−</mo><mn>1</mn></mrow></msup><mn>2</mn></mfrac></mrow><annotation encoding=\"application/x-tex\">C = {2^{N-1} \\over 2}</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.6833em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.07153em;\">C</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:1.3824em;vertical-align:-0.345em;\"></span><span class=\"mord\"><span class=\"mord\"><span class=\"mopen nulldelimiter\"></span><span class=\"mfrac\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:1.0374em;\"><span style=\"top:-2.655em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">2</span></span></span></span><span style=\"top:-3.23em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"frac-line\" style=\"border-bottom-width:0.04em;\"></span></span><span style=\"top:-3.394em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">2</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.9191em;\"><span style=\"top:-2.931em;margin-right:0.0714em;\"><span class=\"pstrut\" style=\"height:2.5em;\"></span><span class=\"sizing reset-size3 size1 mtight\"><span class=\"mord mtight\"><span class=\"mord mathnormal mtight\" style=\"margin-right:0.10903em;\">N</span><span class=\"mbin mtight\">−</span><span class=\"mord mtight\">1</span></span></span></span></span></span></span></span></span></span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.345em;\"><span></span></span></span></span></span><span class=\"mclose nulldelimiter\"></span></span></span></span></span></span> = <span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><msup><mn>2</mn><mrow><mi>N</mi><mo>−</mo><mn>2</mn></mrow></msup></mrow><annotation encoding=\"application/x-tex\">2^{N-2}</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8413em;\"></span><span class=\"mord\"><span class=\"mord\">2</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8413em;\"><span style=\"top:-3.063em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mathnormal mtight\" style=\"margin-right:0.10903em;\">N</span><span class=\"mbin mtight\">−</span><span class=\"mord mtight\">2</span></span></span></span></span></span></span></span></span></span></span></span></p>\n<p>當N為奇數：</p>\n<p>剩下的N-1人是偶數。<br />\n除了對稱的右半邊，我們要加總的範圍還剛好跨過了最中間的那一項 <span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mo fence=\"true\">(</mo><mfrac linethickness=\"0px\"><mrow><mi>N</mi><mo>−</mo><mn>1</mn></mrow><mrow><mo stretchy=\"false\">(</mo><mi>N</mi><mo>−</mo><mn>1</mn><mo stretchy=\"false\">)</mo><mi mathvariant=\"normal\">/</mi><mn>2</mn></mrow></mfrac><mo fence=\"true\">)</mo></mrow><annotation encoding=\"application/x-tex\">\\binom{N-1}{(N-1)/2}</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:1.4423em;vertical-align:-0.52em;\"></span><span class=\"mord\"><span class=\"mopen delimcenter\" style=\"top:0em;\"><span class=\"delimsizing size1\">(</span></span><span class=\"mfrac\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.9223em;\"><span style=\"top:-2.355em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mopen mtight\">(</span><span class=\"mord mathnormal mtight\" style=\"margin-right:0.10903em;\">N</span><span class=\"mbin mtight\">−</span><span class=\"mord mtight\">1</span><span class=\"mclose mtight\">)</span><span class=\"mord mtight\">/2</span></span></span></span><span style=\"top:-3.144em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mathnormal mtight\" style=\"margin-right:0.10903em;\">N</span><span class=\"mbin mtight\">−</span><span class=\"mord mtight\">1</span></span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.52em;\"><span></span></span></span></span></span><span class=\"mclose delimcenter\" style=\"top:0em;\"><span class=\"delimsizing size1\">)</span></span></span></span></span></span>。<br />\n包含了一半的總和，再補上中間項的一半。</p>\n<p><span class=\"katex-display\"><span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><semantics><mrow><mi>C</mi><mo>=</mo><msup><mn>2</mn><mrow><mi>N</mi><mo>−</mo><mn>2</mn></mrow></msup><mo>+</mo><mfrac><mrow><mo fence=\"true\">(</mo><mfrac linethickness=\"0px\"><mrow><mi>N</mi><mo>−</mo><mn>1</mn></mrow><mrow><mo stretchy=\"false\">(</mo><mi>N</mi><mo>−</mo><mn>1</mn><mo stretchy=\"false\">)</mo><mi mathvariant=\"normal\">/</mi><mn>2</mn></mrow></mfrac><mo fence=\"true\">)</mo></mrow><mn>2</mn></mfrac></mrow><annotation encoding=\"application/x-tex\">C = 2^{N-2} + \\frac{\\binom{N-1}{(N-1)/2}}{2}\n</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.6833em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.07153em;\">C</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:0.9747em;vertical-align:-0.0833em;\"></span><span class=\"mord\"><span class=\"mord\">2</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8913em;\"><span style=\"top:-3.113em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mathnormal mtight\" style=\"margin-right:0.10903em;\">N</span><span class=\"mbin mtight\">−</span><span class=\"mord mtight\">2</span></span></span></span></span></span></span></span></span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span><span class=\"mbin\">+</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:2.5183em;vertical-align:-0.686em;\"></span><span class=\"mord\"><span class=\"mopen nulldelimiter\"></span><span class=\"mfrac\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:1.8323em;\"><span style=\"top:-2.314em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord\"><span class=\"mord\">2</span></span></span><span style=\"top:-3.23em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"frac-line\" style=\"border-bottom-width:0.04em;\"></span></span><span style=\"top:-3.91em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord\"><span class=\"mord\"><span class=\"mopen delimcenter\" style=\"top:0em;\"><span class=\"delimsizing size1\">(</span></span><span class=\"mfrac\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.9223em;\"><span style=\"top:-2.355em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mopen mtight\">(</span><span class=\"mord mathnormal mtight\" style=\"margin-right:0.10903em;\">N</span><span class=\"mbin mtight\">−</span><span class=\"mord mtight\">1</span><span class=\"mclose mtight\">)</span><span class=\"mord mtight\">/2</span></span></span></span><span style=\"top:-3.144em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mathnormal mtight\" style=\"margin-right:0.10903em;\">N</span><span class=\"mbin mtight\">−</span><span class=\"mord mtight\">1</span></span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.52em;\"><span></span></span></span></span></span><span class=\"mclose delimcenter\" style=\"top:0em;\"><span class=\"delimsizing size1\">)</span></span></span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.686em;\"><span></span></span></span></span></span><span class=\"mclose nulldelimiter\"></span></span></span></span></span></span></p>\n<h2 id=\"awc-0038-pe\"><a class=\"anchor\" href=\"#awc-0038-pe\">#</a> AWC-0038 pE</h2>\n<p>因為N&lt;=40 選擇用折半枚舉<br />\n先枚舉左邊每個子集的容量(如果會衝突直接跳過)</p>\n<p>之後做SOS DP<br />\n對於每個i 如果mask有i 則把i取消跟原本的取max<br />\n因為i從小往上跑,大集合裡的小集合已經會是最佳答案了<br />\n<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mi>O</mi><mo stretchy=\"false\">(</mo><mi>N</mi><mo>⋅</mo><msup><mn>2</mn><mrow><mi>N</mi><mi mathvariant=\"normal\">/</mi><mn>2</mn></mrow></msup><mo stretchy=\"false\">)</mo></mrow><annotation encoding=\"application/x-tex\">O(N⋅2^{N/2})</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:1em;vertical-align:-0.25em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.02778em;\">O</span><span class=\"mopen\">(</span><span class=\"mord mathnormal\" style=\"margin-right:0.10903em;\">N</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span><span class=\"mbin\">⋅</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:1.138em;vertical-align:-0.25em;\"></span><span class=\"mord\"><span class=\"mord\">2</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.888em;\"><span style=\"top:-3.063em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mathnormal mtight\" style=\"margin-right:0.10903em;\">N</span><span class=\"mord mtight\">/2</span></span></span></span></span></span></span></span></span><span class=\"mclose\">)</span></span></span></span><br />\n之後再枚舉右半<br />\n只要枚舉的集合是合法的,則把會與裡面點衝突的左半點關掉,直接去拿剛剛dp完的數值,相加與答案取max</p>\n<p>最後輸出答案要再對M取min</p>\n<h2 id=\"awc-0042-pe\"><a class=\"anchor\" href=\"#awc-0042-pe\">#</a> AWC-0042 pE</h2>\n<p>定義R[i]為第i天選擇休息的最大金額<br />\nW[i] 為第i天選擇工作的最大金額<br />\n每次轉移時 思考&quot;上次做不同的選擇是甚麼&quot;</p>\n<p>算工作就找 上次最大的選擇休息休息金額<br />\n算休息就找 上次最大的選擇工作金額</p>\n<p>滑窗找極值-&gt;單調對列優化</p>\n<p>計算上次工作到今天休息的金額:<br />\n連續陣列相加-&gt;前綴和</p>\n<h1 id=\"sprout-2026\"><a class=\"anchor\" href=\"#sprout-2026\">#</a> Sprout-2026</h1>\n<h2 id=\"w3-染色遊戲\"><a class=\"anchor\" href=\"#w3-染色遊戲\">#</a> w3 - 染色遊戲</h2>\n<p>O(N) 的解:<br />\n枚舉t 0~n<br />\n計算每個矩形的面積,兩兩矩形的交集</p>\n<pre class=\"shiki shiki-themes vitesse-light vitesse-dark\" style=\"background-color:#ffffff;--shiki-dark-bg:#121212;color:#393a34;--shiki-dark:#dbd7caee\" tabindex=\"0\"><code class=\"language-cpp\"><span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//面積計算:</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">int</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> area</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">rect</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> x</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> wid </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> max</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">x</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">r</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">x</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">l</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> hei </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> max</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">0</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">x</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">-</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">x</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">b</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">+</span><span style=\"color:#2F798A;--shiki-dark:#4C9A91\">1</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    return</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> wid</span><span style=\"color:#AB5959;--shiki-dark:#CB7676\">*</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">hei</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#125;</span></span>\n<span class=\"line\"><span style=\"color:#A0ADA0;--shiki-dark:#758575DD\">//交集計算:</span></span>\n<span class=\"line\"><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">rect</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> a</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">(</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">rect</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> x</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#2E8F82;--shiki-dark:#5DA994\">rect</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\"> y</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">)</span><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#123;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> l </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> max</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">x</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">l</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">y</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">l</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> r </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> min</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">x</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">r</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">y</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">r</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> t </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> min</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">x</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">y</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">t</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#AB5959;--shiki-dark:#CB7676\">    int</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\"> b </span><span style=\"color:#999999;--shiki-dark:#666666\">=</span><span style=\"color:#59873A;--shiki-dark:#80A665\"> max</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">(</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">x</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">b</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">y</span><span style=\"color:#999999;--shiki-dark:#666666\">.</span><span style=\"color:#B07D48;--shiki-dark:#BD976A\">b</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">)</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#1E754F;--shiki-dark:#4D9375\">    return</span><span style=\"color:#999999;--shiki-dark:#666666\"> </span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#123;</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">l</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">r</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">b</span><span style=\"color:#999999;--shiki-dark:#666666\">,</span><span style=\"color:#393A34;--shiki-dark:#DBD7CAEE\">t</span><span style=\"color:#1e754f;--shiki-dark:#4d9375\">&#125;</span><span style=\"color:#999999;--shiki-dark:#666666\">;</span></span>\n<span class=\"line\"><span style=\"color:#2993a3;--shiki-dark:#5eaab5\">&#125;</span></span></code></pre>\n<p>然後去排容排一下就有答案了</p>\n<h2 id=\"w3-樹重心\"><a class=\"anchor\" href=\"#w3-樹重心\">#</a> w3 - 樹重心</h2>\n<p>寫這題的時候忘記怎麼求了(x<br />\n總之就是對於每個點 找子樹最大值(函向上子樹)不超過n/2的點<br />\n都是樹重心</p>\n<h1 id=\"codeforces\"><a class=\"anchor\" href=\"#codeforces\">#</a> CodeForces</h1>\n<h2 id=\"ecr-118-pe\"><a class=\"anchor\" href=\"#ecr-118-pe\">#</a> ECR 118 - pE</h2>\n<p>觀察到 S(x) 會是 頭+尾<br />\nhead 為x 尾是u由x的數位和(sum of digit)所遞迴形成的</p>\n<p>不變量: 字串的總和不變<br />\n假設x的數位和是Y 知道Y就可以知道後面的&quot;尾巴&quot;部分是甚麼了<br />\nY+ digitsum(尾) = total</p>\n<p>接下來就是模擬 尾巴的形成<br />\n再計算總共的sum是不是跟total一樣<br />\n如果sum=total 再檢查字數有沒有一樣<br />\n都一樣的話就可以輸出答案了</p>\n<h2 id=\"cr-1093-pd\"><a class=\"anchor\" href=\"#cr-1093-pd\">#</a> CR 1093 - pD</h2>\n",
            "tags": [
                "C++",
                "題解"
            ]
        }
    ]
}