<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<oembed>
  <author_name>drken1215</author_name>
  <author_url>https://blog.hatena.ne.jp/drken1215/</author_url>
  <blog_title>けんちょんの競プロ精進記録</blog_title>
  <blog_url>https://drken1215.hatenablog.com/</blog_url>
  <categories>
    <anon>AtCoder</anon>
    <anon>AtCoder600点</anon>
    <anon>ARC-C</anon>
    <anon>黄色diff</anon>
    <anon>二乗の木DP</anon>
    <anon>木DP</anon>
    <anon>DP</anon>
    <anon>操作</anon>
    <anon>数え上げ問題</anon>
    <anon>操作後の結果の数え上げ</anon>
    <anon>木</anon>
    <anon>グラフ</anon>
    <anon>操作:swap</anon>
    <anon>操作:削除</anon>
  </categories>
  <description>備忘録として。解説よりもおそらく面倒な DP をした。 問題へのリンク 問題概要 考えたこと 基本的に木 DP のノリで考えることにした。 根を 1 つとったとき、異なる部分木間で交換される頂点はただだか 1 個以内である。そこで次の DP をした。 dp[v][k] ← 頂点 を根とする部分木について、ある時点において根の部分に来ている頂点の個数が 種類であるような操作列によって、出来上がる数列の個数 種類という部分を指定しないと、異なる部分木間の頂点のやりとりの部分で上手く遷移を作れなかった。 計算量は、解法全体を通して二乗の木 DP をすることで となった。 コード #include &lt;…</description>
  <height>190</height>
  <html>&lt;iframe src=&quot;https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdrken1215.hatenablog.com%2Fentry%2F2024%2F02%2F05%2F021046&quot; title=&quot;AtCoder ARC 171 C - Swap on Tree (黄色, 600 点) - けんちょんの競プロ精進記録&quot; class=&quot;embed-card embed-blogcard&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;&quot;&gt;&lt;/iframe&gt;</html>
  <image_url>https://cdn.user.blog.st-hatena.com/default_entry_og_image/80936665/1687765056723440</image_url>
  <provider_name>Hatena Blog</provider_name>
  <provider_url>https://hatena.blog</provider_url>
  <published>2024-02-05 02:10:46</published>
  <title>AtCoder ARC 171 C - Swap on Tree (黄色, 600 点)</title>
  <type>rich</type>
  <url>https://drken1215.hatenablog.com/entry/2024/02/05/021046</url>
  <version>1.0</version>
  <width>100%</width>
</oembed>
