首页 > 其他分享 >bzoj #2863. 愤怒的元首

bzoj #2863. 愤怒的元首

时间:2023-10-28 20:22:49浏览次数:58  
标签:出度 2863 limits sum 容斥 binom 元首 dp bzoj

bzoj #2863

  • 设 \(dp_i\) 表示 \(i\) 个点的 DAG 个数。发现一个 DAG 删去出度为 \(0\) 的点后显然还是一个 DAG ,因此不妨枚举出度为 \(0\) 的点的个数: \(dp_i = \sum\limits_{j=1}^i dp_{i-j}\binom{i}{j}2^{j(i-j)}\)
  • 这么干显然不太对,因为我们不能保证每次删除时都能把图中的所有出度为 \(0\) 的点删完,换言之,我们后面这个式子求的是至少有 \(j\) 个出度为 \(0\) 的点的方案数,而我们想要求恰好,显然容斥原理
  • 我们设 \(f_j\) 表示恰好有 \(j\) 个出度为 \(0\) 的点方案数, \(g_i\) 表示至少有 \(j\) 个出度为 \(0\) 的点方案数,根据广义容斥,可以知道:

\[g_i = \sum\limits_{j=i}^{n} \binom{j}{i} f_j \Leftrightarrow f_i = \sum\limits_{j=i}^{n} (-1)^{j-i} \binom{j}{i} g_j \]

  • 而 \(dp_i = \sum\limits_{j=1}^{i} f_i\) ,因此:

\[\begin{align} dp_i &= \sum_{j=1}^{i} f_j \\ &= \sum_{j=1}^{i} \sum_{k=j}^{i} (-1)^{k-j} \binom{k}{j} g_k \\ &= \sum_{j=1}^{i} \sum_{k=j}^{i} (-1)^{k-j} \binom{k}{j} dp_{i-k}\binom{i}{k}2^{k(i-k)} \\ &= \sum_{k=1}^{i} \sum_{j=1}^{k} (-1)^{k-j} \binom{k}{j} dp_{i-k}\binom{i}{k}2^{k(i-k)} \\ &= \sum_{k=1}^{i} \binom{i}{k} 2^{k(i-k)} dp_{i-k} \sum_{j=1}^{k} (-1)^{k-j} \binom{k}{j} \\ &= \sum_{k=1}^{i} \binom{i}{k} 2^{k(i-k)} dp_{i-k} (0-(-1)^j) \\ &= \sum_{k=1}^{i} (-1)^{j+1} \binom{i}{k} 2^{k(i-k)} dp_{i-k} \\ \end{align} \]

  • 还有一种理解思路:根据容斥原理, \(|\cup_{i=1}^n A_i|=\sum_{i=1}^{n} (-1)^{i+1} \sum_S |\cap_{x \in S} A_x|\) ,因此直接容斥就可以
  • 最终复杂度 \(O(n)\)

标签:出度,2863,limits,sum,容斥,binom,元首,dp,bzoj
From: https://www.cnblogs.com/fox-konata/p/17794552.html

相关文章

  • 「BZOJ2505」tickets 题解
    preface网上目前还没看到我的方法,就大概讲一下做法solution首先想到贪心,考虑\([l,r]\)的最大次数,一定是找到最小的\(x\)满足\(l\simx\)的位数的和大于等于\(k\),然后递归的求解\([x+1,r]\),易证。还是考虑将\(Query(l,r)\)拆分成\(Query(1,r)\)和\(Query......
  • BZOJ 生日礼物
    题目背景翰翰18岁生日的时候,达达给她看了一个神奇的序列$A_1,A_2,\dots,A_n$。她被允许从中选择不超过$M$个连续的部分作为自己的生日礼物。翰翰想要知道选择元素之和的最大值。你能帮助她吗?解题思路可以先合并序列中连续的同为正或负的值,使原序列变为一个一正一......
  • BZOJ 3509
    题目链接description给定一个长度为\(n\)的数组\(a\),求有多少对\(i,j,k(1\leqi<j<k\leqn)\)满足\(a_k-a_j=a_j-a_i\)\(n\leq10^5\)值域大小3e4.solution三个数,看起来就不好用数据结构维护。\(2a_j=a_i+a_k\)可以当做多项式两项的指数相加得到指数为\(2a_j\)的......
  • BZOJ 3451
    题目链接description厉害题。给定一棵树,按照题面要求求一个错误点分治的期望执行次数。(不想描述题面了qwq)solution考虑拆开计算每个点期望几层点分治后被删除。这个期望值显然就是它对答案的贡献。我们不妨以这个点为根,那么相当于要求每次删除一个未被删除的点的子树,求删完......
  • BZOJ3309 DZY Loves Math
    题目大意对于正整数\(n\),定义\(f(n)\)为\(n\)所包含质因子的最大幂指数。例如\(f(1960)=f(2^3\times5^1\times7^2)=3\),\(f(10007)=1\),\(f(1)=0\)。给定正整数\(a,b\),求下式的值:\[\sum^{a}_{i=1}\sum^{b}_{j=1}f(\gcd(i,j))\]推导首先记\(n=\min(a,b),m=\max(a,b)......
  • [BZOJ 4361] isn
    简述题意给出一个长度为\(n\)的序列\(A(A_1,A_2,\dots,A_n)\)。如果序列\(A\)不是非降的,你必须从中删去一个数,并重复这一操作,直到\(A\)非降为止。求有多少种不同的操作方案,答案模\(10^9+7\)。题面转换......
  • 【BZOJ 3364】Distance Queries 距离咨询 题解
    原题简化题意:有一棵\(n\)个点的树,\(q\)组询问,每次询问回答两点间的距离。令\(dis[i][j]\)表示\(i\)到\(j\)的距离,根节点为\(rt\),则有\(dis[i][j]=dis[rt][i]+dis[rt][j]-2×dis[rt][lca(i,j)]\),按照题意打即可。#include<bits/stdc++.h>usingnamespacestd;#d......
  • BZOJ3337 ORZJRY I 题解
    https://vjudge.net/problem/黑暗爆炸-3337题意试维护一个序列,支持以下\(11\)种操作:输入格式说明1xw在\(a_x\)后插入\(w\)2x删除\(a_x\)3xy翻转\((a_x,a_{x+1},\dots,a_y)\)4xyk将\((a_x,a_{x+1},\dots,a_y)\)右移\(k\)次......
  • BZOJ 4321 queue2 题解
    在硬盘里翻到了当时没推完的这个题,今天补完了最后几步。题目链接:https://hydro.ac/d/bzoj/p/4321对任意相邻两个元素差的绝对值不为\(1\)的\(n\)阶排列计数。\(\mathcal{O}(n^2)\)做法是考虑按照值域由小到大逐步插入,记录\(f_{i,j}\)为长度为\(i\)的排列,一共有\(j\)......
  • 题解 BZOJ4543【[POI2014] HOT-Hotels】
    长链剖分优化DP板子题了,但是虽然是板子这个转移方程也很难想。problem树。求\(\sum_{1\leqi<j<k\leqn}[dist(i,j)=dist(i,k)=dist(j,k)].\)。\(n\leq10^5\)。solution与重链剖分相似,长链剖分是将树剖成很多条长链。我们定义长儿子,为一个点的儿子中子树深度最大的一个儿......