<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<oembed>
  <author_name>hamayanhamayan</author_name>
  <author_url>https://blog.hatena.ne.jp/hamayanhamayan/</author_url>
  <blog_title>はまやんはまやんはまやん</blog_title>
  <blog_url>https://blog.hamayanhamayan.com/</blog_url>
  <categories>
    <anon>競技プログラミング</anon>
  </categories>
  <description>包除原理 包除原理についての偉大なスライド 数え上げをする時の定理 ここが詳しい ここの包除原理の欄も詳しい 基本は状態系包除原理 状態系包除原理を個数に注目して個数系包除原理にするテクがある（抽象化による状態圧縮） 例 n(AorBorC) = n(A) + n(B) + n(C) - n(A&amp;B) - n(B&amp;C) - n(C&amp;A) + n(A&amp;B&amp;C) もし、「dp[i] := i個の&amp;で表現できる組み合わせ数」が高速に計算できれば、 n(AorBorC) = dp[1] - dp[2] + dp[3] 事前計算が高速にできれば包除原理計算部分をO(2^N)からO(N)に削減できる 問題…</description>
  <height>190</height>
  <html>&lt;iframe src=&quot;https://hatenablog-parts.com/embed?url=https%3A%2F%2Fblog.hamayanhamayan.com%2Fentry%2F2017%2F04%2F17%2F161345&quot; title=&quot;競技プログラミングにおける包除原理問題まとめ - はまやんはまやんはまやん&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></image_url>
  <provider_name>Hatena Blog</provider_name>
  <provider_url>https://hatena.blog</provider_url>
  <published>2017-04-17 16:13:45</published>
  <title>競技プログラミングにおける包除原理問題まとめ</title>
  <type>rich</type>
  <url>https://blog.hamayanhamayan.com/entry/2017/04/17/161345</url>
  <version>1.0</version>
  <width>100%</width>
</oembed>
