<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>记录（OI与数学） on Meze's Blog</title><link>https://meze0.top/categories/%E8%AE%B0%E5%BD%95oi%E4%B8%8E%E6%95%B0%E5%AD%A6/</link><description>Recent content from Meze's Blog</description><generator>Hugo</generator><language>zh-cn</language><managingEditor>zysmeze@gmail.com (Meze)</managingEditor><webMaster>zysmeze@gmail.com (Meze)</webMaster><copyright>本博客所有文章除特别声明外，均采用 BY-NC-SA 许可协议。转载请注明出处！</copyright><lastBuildDate>Wed, 11 Mar 2026 20:31:13 +0800</lastBuildDate><atom:link href="https://meze0.top/categories/%E8%AE%B0%E5%BD%95oi%E4%B8%8E%E6%95%B0%E5%AD%A6/index.xml" rel="self" type="application/rss+xml"/><item><title>关于省选和以后</title><link>https://meze0.top/post/%E5%85%B3%E4%BA%8E%E7%9C%81%E9%80%89%E5%92%8C%E6%9C%AA%E6%9D%A5/</link><pubDate>Wed, 11 Mar 2026 20:31:13 +0800</pubDate><author>zysmeze@gmail.com (Meze)</author><guid>https://meze0.top/post/%E5%85%B3%E4%BA%8E%E7%9C%81%E9%80%89%E5%92%8C%E6%9C%AA%E6%9D%A5/</guid><description>
<![CDATA[<h1>关于省选和以后</h1><p>作者：Meze（zysmeze@gmail.com）</p>
        
          <p><img src="cover.jpeg" alt=""></p>
<h2 id="关于省选">
<a class="header-anchor" href="#%e5%85%b3%e4%ba%8e%e7%9c%81%e9%80%89"></a>
关于省选
</h2><ul>
<li>day1T1 不会</li>
<li>day1T2 不会</li>
<li>day1T3 不会</li>
<li>day2T1 场上想到稳定 $2n-4$ 做法，询问每一段前缀和后缀，可以确定一些位置上的数字，如果不能确定该位置的具体数字，就必然能确定这个位置上的数大于等于几，把剩下的数字合法地填到相应位置上即可。</li>
<li>day2T2 不会</li>
<li>day2T3 不会</li>
</ul>
<p>我的 OI 结束了（可能还会参加 NOIP2026）。</p>
<h2 id="其他">
<a class="header-anchor" href="#%e5%85%b6%e4%bb%96"></a>
其他
</h2><p>这段文字我在 2026.6.25 进行了修改，之前写的文字太过文艺了，也不像我。   <br>
我大概内耗了半年，我也没有想到我会内耗这么长时间。  <br>
我对很多事情都很感兴趣，我却又被很多事情迁就和耽误。我也希望我自己能继续坚持下去。    <br>
希望我们都有光明的未来。</p>
<blockquote>
<p>星图铺就的，未必是归途。 <br>
但有人循着它，便不算迷路。   <br>
—— [省选联考 2026] starmap</p>
</blockquote>
        
        <hr><p>本文2026-03-11首发于<a href='https://meze0.top/'>Meze's Blog</a>，最后修改于2026-03-11</p>]]></description><category>记录（OI与数学）</category></item><item><title>模板复习</title><link>https://meze0.top/post/%E6%A8%A1%E6%9D%BF%E5%A4%8D%E4%B9%A0/</link><pubDate>Tue, 03 Mar 2026 17:06:21 +0800</pubDate><author>zysmeze@gmail.com (Meze)</author><guid>https://meze0.top/post/%E6%A8%A1%E6%9D%BF%E5%A4%8D%E4%B9%A0/</guid><description>
<![CDATA[<h1>模板复习</h1><p>作者：Meze（zysmeze@gmail.com）</p>
        
          <h2 id="图论">
<a class="header-anchor" href="#%e5%9b%be%e8%ae%ba"></a>
图论
</h2><h3 id="单源最短路">
<a class="header-anchor" href="#%e5%8d%95%e6%ba%90%e6%9c%80%e7%9f%ad%e8%b7%af"></a>
单源最短路
</h3><h4 id="dijkstra">
<a class="header-anchor" href="#dijkstra"></a>
dijkstra
</h4><p><a href="https://www.luogu.com.cn/problem/P4779">P4779 【模板】单源最短路径（标准版）</a></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="cp">#include&lt;bits/stdc++.h&gt;
</span></span></span><span class="line"><span class="cl"><span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">typedef</span> <span class="kt">long</span> <span class="kt">long</span> <span class="n">ll</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="k">const</span> <span class="kt">int</span> <span class="n">N</span><span class="o">=</span><span class="mf">1e5</span><span class="o">+</span><span class="mi">5</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="n">ll</span> <span class="n">n</span><span class="p">,</span><span class="n">m</span><span class="p">,</span><span class="n">s</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="n">ll</span> <span class="n">dis</span><span class="p">[</span><span class="n">N</span><span class="p">],</span><span class="n">vis</span><span class="p">[</span><span class="n">N</span><span class="p">];</span>
</span></span><span class="line"><span class="cl"><span class="k">struct</span> <span class="nc">edge</span><span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="n">ll</span> <span class="n">v</span><span class="p">,</span><span class="n">w</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span><span class="line"><span class="cl"><span class="n">vector</span><span class="o">&lt;</span><span class="n">edge</span><span class="o">&gt;</span> <span class="n">g</span><span class="p">[</span><span class="n">N</span><span class="p">];</span>
</span></span><span class="line"><span class="cl"><span class="k">struct</span> <span class="nc">node</span><span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="n">ll</span> <span class="n">dis</span><span class="p">,</span><span class="n">u</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kt">bool</span> <span class="k">operator</span><span class="o">&gt;</span><span class="p">(</span><span class="k">const</span> <span class="n">node</span> <span class="o">&amp;</span><span class="n">b</span><span class="p">)</span> <span class="k">const</span><span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="n">b</span><span class="p">.</span><span class="n">dis</span><span class="o">&lt;</span><span class="n">dis</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span><span class="line"><span class="cl"><span class="n">priority_queue</span><span class="o">&lt;</span><span class="n">node</span><span class="p">,</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">node</span><span class="o">&gt;</span><span class="p">,</span><span class="n">greater</span><span class="o">&lt;</span><span class="n">node</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">q</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">dijkstra</span><span class="p">(){</span>
</span></span><span class="line"><span class="cl">    <span class="n">memset</span><span class="p">(</span><span class="n">dis</span><span class="p">,</span><span class="mh">0x3f</span><span class="p">,</span><span class="k">sizeof</span> <span class="n">dis</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="n">memset</span><span class="p">(</span><span class="n">vis</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="k">sizeof</span> <span class="n">vis</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="n">dis</span><span class="p">[</span><span class="n">s</span><span class="p">]</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="n">q</span><span class="p">.</span><span class="n">push</span><span class="p">((</span><span class="n">node</span><span class="p">){</span><span class="mi">0</span><span class="p">,</span><span class="n">s</span><span class="p">});</span>
</span></span><span class="line"><span class="cl">    <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">q</span><span class="p">.</span><span class="n">empty</span><span class="p">()){</span>
</span></span><span class="line"><span class="cl">        <span class="n">ll</span> <span class="n">u</span><span class="o">=</span><span class="n">q</span><span class="p">.</span><span class="n">top</span><span class="p">().</span><span class="n">u</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="n">q</span><span class="p">.</span><span class="n">pop</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="n">vis</span><span class="p">[</span><span class="n">u</span><span class="p">])</span> <span class="k">continue</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="n">vis</span><span class="p">[</span><span class="n">u</span><span class="p">]</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="n">edge</span> <span class="nl">ed</span><span class="p">:</span><span class="n">g</span><span class="p">[</span><span class="n">u</span><span class="p">]){</span>
</span></span><span class="line"><span class="cl">            <span class="n">ll</span> <span class="n">v</span><span class="o">=</span><span class="n">ed</span><span class="p">.</span><span class="n">v</span><span class="p">,</span><span class="n">w</span><span class="o">=</span><span class="n">ed</span><span class="p">.</span><span class="n">w</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="n">dis</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">&gt;</span><span class="n">dis</span><span class="p">[</span><span class="n">u</span><span class="p">]</span><span class="o">+</span><span class="n">w</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">                <span class="n">dis</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">=</span><span class="n">dis</span><span class="p">[</span><span class="n">u</span><span class="p">]</span><span class="o">+</span><span class="n">w</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">                <span class="n">q</span><span class="p">.</span><span class="n">push</span><span class="p">((</span><span class="n">node</span><span class="p">){</span><span class="n">dis</span><span class="p">[</span><span class="n">v</span><span class="p">],</span><span class="n">v</span><span class="p">});</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="nf">main</span><span class="p">(){</span>
</span></span><span class="line"><span class="cl">    <span class="n">scanf</span><span class="p">(</span><span class="s">&#34;%lld%lld%lld&#34;</span><span class="p">,</span><span class="o">&amp;</span><span class="n">n</span><span class="p">,</span><span class="o">&amp;</span><span class="n">m</span><span class="p">,</span><span class="o">&amp;</span><span class="n">s</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span><span class="n">i</span><span class="o">&lt;=</span><span class="n">m</span><span class="p">;</span><span class="n">i</span><span class="o">++</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">        <span class="n">ll</span> <span class="n">u</span><span class="p">,</span><span class="n">v</span><span class="p">,</span><span class="n">w</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="n">scanf</span><span class="p">(</span><span class="s">&#34;%lld%lld%lld&#34;</span><span class="p">,</span><span class="o">&amp;</span><span class="n">u</span><span class="p">,</span><span class="o">&amp;</span><span class="n">v</span><span class="p">,</span><span class="o">&amp;</span><span class="n">w</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="n">g</span><span class="p">[</span><span class="n">u</span><span class="p">].</span><span class="n">push_back</span><span class="p">((</span><span class="n">edge</span><span class="p">){</span><span class="n">v</span><span class="p">,</span><span class="n">w</span><span class="p">});</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="n">dijkstra</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span><span class="n">i</span><span class="o">&lt;=</span><span class="n">n</span><span class="p">;</span><span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&#34;%lld &#34;</span><span class="p">,</span><span class="n">dis</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><h4 id="spfa">
<a class="header-anchor" href="#spfa"></a>
spfa
</h4><p><a href="https://www.luogu.com.cn/problem/P3371">P3371 【模板】单源最短路径（弱化版）</a></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="cp">#include&lt;bits/stdc++.h&gt;
</span></span></span><span class="line"><span class="cl"><span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">typedef</span> <span class="kt">long</span> <span class="kt">long</span> <span class="n">ll</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="k">const</span> <span class="kt">int</span> <span class="n">N</span><span class="o">=</span><span class="mf">1e4</span><span class="o">+</span><span class="mi">5</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="n">ll</span> <span class="n">n</span><span class="p">,</span><span class="n">m</span><span class="p">,</span><span class="n">s</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="n">ll</span> <span class="n">inq</span><span class="p">[</span><span class="n">N</span><span class="p">],</span><span class="n">dis</span><span class="p">[</span><span class="n">N</span><span class="p">];</span>
</span></span><span class="line"><span class="cl"><span class="k">struct</span> <span class="nc">edge</span><span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="n">ll</span> <span class="n">v</span><span class="p">,</span><span class="n">w</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span><span class="line"><span class="cl"><span class="n">vector</span><span class="o">&lt;</span><span class="n">edge</span><span class="o">&gt;</span> <span class="n">g</span><span class="p">[</span><span class="n">N</span><span class="p">];</span>
</span></span><span class="line"><span class="cl"><span class="n">queue</span><span class="o">&lt;</span><span class="n">ll</span><span class="o">&gt;</span> <span class="n">q</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">spfa</span><span class="p">(){</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span><span class="n">i</span><span class="o">&lt;=</span><span class="n">n</span><span class="p">;</span><span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="n">dis</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">=</span><span class="n">INT_MAX</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="n">memset</span><span class="p">(</span><span class="n">inq</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="k">sizeof</span> <span class="n">inq</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="n">q</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="n">dis</span><span class="p">[</span><span class="n">s</span><span class="p">]</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="n">inq</span><span class="p">[</span><span class="n">s</span><span class="p">]</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">q</span><span class="p">.</span><span class="n">empty</span><span class="p">()){</span>
</span></span><span class="line"><span class="cl">        <span class="n">ll</span> <span class="n">u</span><span class="o">=</span><span class="n">q</span><span class="p">.</span><span class="n">front</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">        <span class="n">q</span><span class="p">.</span><span class="n">pop</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">        <span class="n">inq</span><span class="p">[</span><span class="n">u</span><span class="p">]</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="p">(</span><span class="n">edge</span> <span class="nl">ed</span><span class="p">:</span><span class="n">g</span><span class="p">[</span><span class="n">u</span><span class="p">]){</span>
</span></span><span class="line"><span class="cl">            <span class="n">ll</span> <span class="n">v</span><span class="o">=</span><span class="n">ed</span><span class="p">.</span><span class="n">v</span><span class="p">,</span><span class="n">w</span><span class="o">=</span><span class="n">ed</span><span class="p">.</span><span class="n">w</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="n">dis</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">&gt;</span><span class="n">dis</span><span class="p">[</span><span class="n">u</span><span class="p">]</span><span class="o">+</span><span class="n">w</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">                <span class="n">dis</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">=</span><span class="n">dis</span><span class="p">[</span><span class="n">u</span><span class="p">]</span><span class="o">+</span><span class="n">w</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">                <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">inq</span><span class="p">[</span><span class="n">v</span><span class="p">])</span> <span class="n">inq</span><span class="p">[</span><span class="n">v</span><span class="p">]</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">q</span><span class="p">.</span><span class="n">push</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="nf">main</span><span class="p">(){</span>
</span></span><span class="line"><span class="cl">    <span class="n">scanf</span><span class="p">(</span><span class="s">&#34;%lld%lld%lld&#34;</span><span class="p">,</span><span class="o">&amp;</span><span class="n">n</span><span class="p">,</span><span class="o">&amp;</span><span class="n">m</span><span class="p">,</span><span class="o">&amp;</span><span class="n">s</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span><span class="n">i</span><span class="o">&lt;=</span><span class="n">m</span><span class="p">;</span><span class="n">i</span><span class="o">++</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">        <span class="n">ll</span> <span class="n">u</span><span class="p">,</span><span class="n">v</span><span class="p">,</span><span class="n">w</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="n">scanf</span><span class="p">(</span><span class="s">&#34;%lld%lld%lld&#34;</span><span class="p">,</span><span class="o">&amp;</span><span class="n">u</span><span class="p">,</span><span class="o">&amp;</span><span class="n">v</span><span class="p">,</span><span class="o">&amp;</span><span class="n">w</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">        <span class="n">g</span><span class="p">[</span><span class="n">u</span><span class="p">].</span><span class="n">push_back</span><span class="p">((</span><span class="n">edge</span><span class="p">){</span><span class="n">v</span><span class="p">,</span><span class="n">w</span><span class="p">});</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="n">spfa</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span><span class="n">i</span><span class="o">&lt;=</span><span class="n">n</span><span class="p">;</span><span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&#34;%lld &#34;</span><span class="p">,</span><span class="n">dis</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><h3 id="最小生成树">
<a class="header-anchor" href="#%e6%9c%80%e5%b0%8f%e7%94%9f%e6%88%90%e6%a0%91"></a>
最小生成树
</h3><p><a href="https://www.luogu.com.cn/problem/P3366">P3366 【模板】最小生成树</a></p>
        
        <hr><p>本文2026-03-03首发于<a href='https://meze0.top/'>Meze's Blog</a>，最后修改于2026-03-03</p>]]></description><category>记录（OI与数学）</category></item><item><title>洛谷 3 月月赛 I</title><link>https://meze0.top/post/%E6%B4%9B%E8%B0%B7-3-%E6%9C%88%E6%9C%88%E8%B5%9B-i/</link><pubDate>Sun, 01 Mar 2026 17:51:34 +0800</pubDate><author>zysmeze@gmail.com (Meze)</author><guid>https://meze0.top/post/%E6%B4%9B%E8%B0%B7-3-%E6%9C%88%E6%9C%88%E8%B5%9B-i/</guid><description>
<![CDATA[<h1>洛谷 3 月月赛 I</h1><p>作者：Meze（zysmeze@gmail.com）</p>
        
          <p>比赛链接：</p>
<ul>
<li>div1：<a href="https://www.luogu.com.cn/contest/309087">https://www.luogu.com.cn/contest/309087</a></li>
<li>div2：<a href="https://www.luogu.com.cn/contest/309086">https://www.luogu.com.cn/contest/309086</a></li>
</ul>
<p>100+100+100+0+0+0</p>
<h2 id="astoi2037晴天">
<a class="header-anchor" href="#astoi2037%e6%99%b4%e5%a4%a9"></a>
A.<a href="https://www.luogu.com.cn/problem/P15545">「Stoi2037」晴天</a>
</h2><p>没什么好说的</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="cp">#include&lt;bits/stdc++.h&gt;
</span></span></span><span class="line"><span class="cl"><span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">typedef</span> <span class="kt">long</span> <span class="kt">long</span> <span class="n">ll</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="k">const</span> <span class="kt">int</span> <span class="n">N</span><span class="o">=</span><span class="mf">1e6</span><span class="o">+</span><span class="mi">5</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="n">ll</span> <span class="n">n</span><span class="p">,</span><span class="n">s</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="n">p</span><span class="p">,</span><span class="n">ans</span><span class="o">=-</span><span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="n">ll</span> <span class="n">a</span><span class="p">[</span><span class="n">N</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="nf">main</span><span class="p">(){</span>
</span></span><span class="line"><span class="cl">    <span class="n">scanf</span><span class="p">(</span><span class="s">&#34;%lld%lld%lld&#34;</span><span class="p">,</span><span class="o">&amp;</span><span class="n">n</span><span class="p">,</span><span class="o">&amp;</span><span class="n">s</span><span class="p">,</span><span class="o">&amp;</span><span class="n">x</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span><span class="n">i</span><span class="o">&lt;=</span><span class="n">n</span><span class="p">;</span><span class="n">i</span><span class="o">++</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">        <span class="n">scanf</span><span class="p">(</span><span class="s">&#34;%lld&#34;</span><span class="p">,</span><span class="o">&amp;</span><span class="n">a</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">!=-</span><span class="mi">1</span><span class="p">)</span> <span class="n">p</span><span class="o">+=</span><span class="n">x</span><span class="o">-</span><span class="n">a</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="n">p</span><span class="o">&gt;=</span><span class="n">s</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="n">ans</span><span class="o">=</span><span class="n">i</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="k">break</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="n">printf</span><span class="p">(</span><span class="s">&#34;%lld</span><span class="se">\n</span><span class="s">&#34;</span><span class="p">,</span><span class="n">ans</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><h2 id="bstoi2037七里香">
<a class="header-anchor" href="#bstoi2037%e4%b8%83%e9%87%8c%e9%a6%99"></a>
B.<a href="https://www.luogu.com.cn/problem/P15546">「Stoi2037」七里香</a>
</h2><p>数学题和简单贪心，下文我们统一把 $a'_i$ 写作 $a_i$，观察原式子：
</p>
$$
((j-1)k+a_j)-((i-1)k+a_i)
$$<p>
</p>
$$
=(j-i)k+(a_j-a_i)
$$<p>注意到对于每一对 $(i,j)$ 会出现 $i(n-j+1)$ 次，总的计算得到：
</p>
$$
Ans=\sum_{i=1}^{n-1}\sum_{j=i+1}^{n} i(n-j+1)[(j-i)k+(a_j-a_i)]
$$<p>
</p>
$$
=\sum_{i=1}^{n-1}\sum_{j=i+1}^{n} i(n-j+1)(j-i)k+\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}i(n-j+1)(a_j-a_i)
$$<p>
第一部分是一个定值，因此只需最大化第二部分。我们考虑计算求和完之后 $a_i$ 的系数 $c_i$，不难计算得到：
</p>
$$
c_i=\sum_{m=1}^{i-1}m(n-i+1)-\sum_{m=i+1}^{n}i(n-m+1)
$$<p>
</p>
$$
=\frac{i(n-i+1)(2i-n-1)}{2}
$$<p>
因此答案转化为：
</p>
$$
Ans=k \sum_{i=1}^{n} i \cdot c_i+\sum_{i=1}^{n}c_i \cdot a_i
$$<p>
考虑怎么重排 $a_i$，只看第二部分，如果把 $c_i$ 从小到大排序，要想最大化此值，就让 $a_i$ 也从小到大排序去逐个相乘。最后的答案要使用 <code>__int128</code>。</p>
        
        <hr><p>本文2026-03-01首发于<a href='https://meze0.top/'>Meze's Blog</a>，最后修改于2026-03-01</p>]]></description><category>记录（OI与数学）</category></item><item><title>计数题</title><link>https://meze0.top/post/%E8%AE%A1%E6%95%B0%E9%A2%98/</link><pubDate>Fri, 27 Feb 2026 14:18:15 +0800</pubDate><author>zysmeze@gmail.com (Meze)</author><guid>https://meze0.top/post/%E8%AE%A1%E6%95%B0%E9%A2%98/</guid><description>
<![CDATA[<h1>计数题</h1><p>作者：Meze（zysmeze@gmail.com）</p>
        
          <p>这几天琢磨其他东西，差点忘了自己还有省选没有参加（虽然参不参加都进不了队），但还是想认真对待一下这次省选</p>
<h2 id="p14636-">
<a class="header-anchor" href="#p14636-"></a>
<a href="https://www.luogu.com.cn/problem/P14636">P14636 [NOIP2025] 清仓甩卖</a>
</h2><p><strong>性质转化+计数</strong> <br>
<strong>考虑什么时候不合法</strong>，我们可以把 $w_i=2$ 的物品看作两个定价为 $1$，原价为 $\frac{a_i}{2}$ 的物品，只不过这两个物品必须捆绑购买，这样我们所有的物品的定价就是 $1$ 元，我们只需要买原价前 $m$ 大的物品即可（注意到 $\frac{a_i}{2}$ 就是这个原物品的性价比，因此小 R 的排序方式与此等同），问题就在如果第 $m$ 个物品与第 $m+1$ 个物品是必须捆绑购买的，小 R 会放弃第 $m$ 个物品，向后寻找一个不被捆绑的物品（不妨设其为第 $k$ 个物品，$k$ 可能不存在）进行购买，如果此时第 $m-1$ 个物品是不被捆绑的，且 $v_{m-1}+v_{k} < v_m+v_{m+1}$（这里用 $v_i$ 表示按如上情景下第 $i$ 件物品的原价），小 R 的选法就不是最优的，形式化的如下：</p>
<blockquote>
<p>小 R 在剩余最后 $2$ 元的时候，此时有 $a_i>\frac{a_j}{2}>a_k$ 且 $a_j>a_i+a_k$，小 R 的选择不是最优的</p>
</blockquote>
<p><strong>我们可以计算不合法的方案数</strong>，我们不妨枚举每一对 $(i,j)$，使得 $a_i>\frac{a_j}{2}$ 且 $a_j>a_i$，再去寻找「第一个」符合条件的 $k$（第一个满足 $a_k < a_j-a_i$ 的 $k$），找 $k$ 的过程使用双指针可以做到 $O(n^2)$，容易发现其位置满足</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">.....j....i...k...
</span></span></code></pre></div><p>我们需要计算一对 $(i,j)$ 能够造出多上个不合法的方案</p>
<ul>
<li>$[1,j-1]$ 中的物品一定会被买。</li>
<li>$[j+1,i-1]$ 中定价为 $1$ 的物品一定会被买到，定价为 $2$ 的则不会。</li>
</ul>
<p>在这两段，我们必须花掉 $m-2$ 元。</p>
        
        <hr><p>本文2026-02-27首发于<a href='https://meze0.top/'>Meze's Blog</a>，最后修改于2026-02-27</p>]]></description><category>记录（OI与数学）</category></item></channel></rss>