Atcoder ARC101 E 樹dp

?

https://arc101.contest.atcoder.jp/tasks/arc101_c

?

題解是也是dp,好像是容斥做的,但是看不懂,而且也好像沒講怎么變n^2,看了寫大佬的代碼,自己理解了一下

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
#define X           first
#define Y           second
#define pb          push_back
#define mp          make_pair
#define SZ(X)       (X.size())
#define mst(a,b)    memset((a),(b),sizeof(a))
#define lowbit(a)   ((a)&(-a))
using namespace std;
typedef unsigned long long ull;
typedef long long LL;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<LL, LL> pll;
const int mod=1e9+7;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const int maxn=5500;
inline int add(int x,int y){if((x+=y)>=mod)x-=mod;return x;
}
inline int mul(int x,int y){return (ll)x*y%mod;
}
inline int sub(int x,int y){if((x-=y)<0)x+=mod;return x;
}
int ci[maxn];
vector<int>to[maxn];
int dp[maxn][maxn];//dp[pos][i] 子樹,有i個點未匹配的合法方案//除了根之外的子樹自匹配完是不合法的,所以-dp[pos][0]表示以pos為根的子樹匹配完,但pos之下子樹各自之間未匹配完
int sz[maxn],uu[maxn];
void dfs(int pos,int fa){sz[pos]=1;dp[pos][1]=1;for(int d:to[pos])if(d!=fa){dfs(d,pos);for(int i=0;i<=sz[pos]+sz[d];++i)uu[i]=0;for(int i=0;i<=sz[pos];++i)for(int j=0;j<=sz[d];++j)uu[i+j]=add(uu[i+j],mul(dp[pos][i],dp[d][j]));sz[pos]+=sz[d];for(int i=0;i<=sz[pos];++i)dp[pos][i]=uu[i];}for(int i=2;i<=sz[pos];i+=2)dp[pos][0]=sub(dp[pos][0],mul(dp[pos][i],ci[i]));
}
int main() {
#ifdef localfreopen("in.txt", "r", stdin);
#endif // localios::sync_with_stdio(0);cin.tie(0);cout.tie(0);ci[0]=1;for(int i=2;i<maxn;i+=2)ci[i]=mul(ci[i-2],i-1);int n;cin>>n;for(int i=1;i<n;++i){int a,b;cin>>a>>b;to[a].push_back(b);to[b].push_back(a);}dfs(1,0);cout<<(mod-dp[1][0]);return 0;
}

?

轉載于:https://www.cnblogs.com/bibibi/p/9542644.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397094.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397094.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397094.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

compress命令--Linux命令應用大詞典729個命令解讀

內容來源于人民郵電出版社《Linux命令應用大詞典》講述729個命令&#xff0c;1935個例子學習Linux系統的參考書、案頭書&#xff0c;遇到不懂的命令或命令選項一查即可爭取每天都發布內容本文出自 “airfish2000” 博客&#xff0c;更多命令查看博客&#xff1a;http://airfish…

javaweb學習總結(三十九)——數據庫連接池

javaweb學習總結(三十九)——數據庫連接池 數據庫連接池的實現及原理 JNDI 在 J2EE 中的角色轉載于:https://www.cnblogs.com/daishuguang/p/5041845.html

python getopterror_python3 getopt用法

python channel_builder.py -s /Users/graypn/ -d /Users/graypn/Documents -m 7 --outreport/xx.html參數也分長格式和短格式短格式&#xff1a;-s長格式&#xff1a;--sourceopts, args getopt.getopt(sys.argv[1:], "hs:d:m:v:p:c:",["help", "sr…

excel刪除空行_Excel里99.9%的人都踩過的坑,早看早避開!

本文作者丨可可&#xff08;小 E 背后的小仙女&#xff09;本文由「秋葉 Excel」原創發布如需轉載&#xff0c;請在公眾號發送關鍵詞「轉載」查看說明2019 年上班第一天感覺怎么樣呢&#xff1f;望著滿屏幕鋪天蓋地的表格&#xff0c;我只能摸摸自己還沒下去的小肚子&#xff0…

CentOS 6.5 Zabbix-agent3.2 安裝 1.0版

1.關閉防火墻service iptables stop2.更換源、安裝zabbix-agentrpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/zabbix-release-3.2-1.el6.noarch.rpmyum install -y zabbix-agent3.修改配置文件vim /etc/zabbix/zabbix_agentd.confServer192.168.8.228 ser…

centos下利用httpd搭建http服務器方法

centos下利用httpd搭建http服務器方法 1. 解決的問題 在開發測試過程中&#xff0c;分析圖片任務需要將圖片保存在服務器端&#xff0c;通過url來訪問和下載該圖片&#xff0c;這就需要使用一臺圖片服務器&#xff0c;但常常遇到圖片服務器匱乏的情況&#xff0c;為了解決該問題…

[轉]Java7中的ForkJoin并發框架初探(上)——需求背景和設計原理

詳見&#xff1a; http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp83 這篇我們來簡要了解一下JavaSE7中提供的一個新特性 —— Fork Join 框架。 0. 處理器發展和需求背景 回想一下并發開發的初衷&#xff0c;其實可以說是有兩點&#xff0c;或者說可以從兩個方面…

安裝oculus運行時出現問題_U盤安裝windows10出現的問題解決方法

安裝windows10 出現的問題之前安裝windows10都沒什么問題&#xff0c;今天安裝windows10出現了好多問題&#xff0c;記錄一下。我這個教程我覺得是最好的安裝教程安裝windows10教程問題1. 我們無法創建新的分區&#xff0c;找不到現有分區&#xff08;或者因為MBR分區表問題&am…

JavaFx導出文件

導出文件格式可選 protected void handExportDateAction(ActionEvent event) {// ShowDialog.showConfirmDialog(FXRobotHelper.getStages().get(0),// "是否導出數據到txt&#xff1f;", "信息");FileChooser fileChooser new FileChooser();FileChooser…

python選擇排序從大到小_Python實現選擇排序

一、選擇排序簡介選擇排序(Selection sort)是一種簡單直觀的排序算法。選擇排序首先從待排序列表中找到最小(大)的元素&#xff0c;存放到元素列表的起始位置(與起始位置進行交換)&#xff0c;作為已排序序列&#xff0c;第一輪排序完成。然后&#xff0c;繼續從未排序序列中找…

【Ubuntu14】Nginx+PHP5+Mysql記錄

這次因為工作原因&#xff0c;需要在Linux下進行開發。推薦的環境是Ubuntu14NginxPHPMysql。環境搭建好之后&#xff0c;裝上GIT&#xff0c;裝上IDE&#xff0c;覺得Mysql命令界面麻煩又裝了個Navicat。總體用下來感覺很帶感。 【虛擬機與鏡像文件】 這里我采用的虛擬機是VMwa…

java句柄數過高怎么解決_主播個人及企業利潤高,個稅或企業所得稅怎么解決...

網絡直播在2020年尤為火熱&#xff0c;男女老少都紛紛投入其中&#xff0c;究其原因還是其行業表現出來的“利潤高”等。也確實有部分人取得了一定的成效&#xff0c;也催生了不少的直播平臺、經紀公司的出現。 那么這些主播個人或者企業利潤高&#xff0c;個稅或企業所得…

雜項-Java:JBoss

ylbtech-雜項-Java&#xff1a;JBoss是一個基于J2EE的開放源代碼的應用服務器。 JBoss代碼遵循LGPL許可&#xff0c;可以在任何商業應用中免費使用。JBoss是一個管理EJB的容器和服務器&#xff0c;支持EJB 1.1、EJB 2.0和EJB3的規范。但JBoss核心服務不包括支持servlet/JSP的WE…

任務調度及遠端管理(基于Quartz.net)

這篇文章我們來了解一些項目中的一個很重要的功能&#xff1a;任務調度 可能有些同學還不了解這個&#xff0c;其實簡單點說任務調度與數據庫中的Job是很相似的東西 只不過是運行的物理位置與管理方式有點不一樣&#xff0c;從功能上來說我覺得還是差不多的&#xff0c; 存儲過…

2015/12/15--Document對象

<html> <head> <script type "text/javascript"> //使用document.write()輸出流寫文本 document.write("hello,world!"); //使用document.write()輸出流寫HTML document.write("<h1>welcome to my world!</h1>")…

C# 子類實例化基類 基類使用不了子類的方法_C#高級編程面試考題

一、簡答題1.簡述C#中的所有訪問修飾符及訪問權限private(私有的)給類&#xff0c;及所有類成員使用所有類成員的默認訪問修飾符可訪問范圍當前類自身public(公開的)給類&#xff0c;及所有類成員使用可訪問范圍當前類自身所有的子類同一程序集其他類通過實例化也可以訪問其他程…

協程(Coroutine)與多線程,多進程

執行多個任務可以使用多線程或多進程。 多進程中&#xff0c;同一個變量&#xff0c;各自有一份拷貝存在于每個進程中&#xff0c;互不影響 多線程中&#xff0c;所有變量都由所有線程共享。而線程間的切換是系統進行調度&#xff0c;無法控制&#xff0c;所以可能 一個進程中的…

關于img 403 forbidden的一些思考

網頁中經常需要顯示圖片給用戶看&#xff0c;對網站本身來說有的圖片是從本地圖片服務器來的&#xff0c;但是一旦數量多了以后&#xff0c;磁盤空間又是一個問題。 所以有時就希望顯示其他網站的Image&#xff0c;直接把其他網站的圖片顯示在我的網站上。但并不是所有的外網Im…

Leetcode: Kth Largest Element in an Array

Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.For example, Given [3,2,1,5,6,4] and k 2, return 5.Note: You may assume k is always valid, 1 ≤ k ≤ arrays lengt…

python 循環賦值_Python打牢基礎,從19個語法開始!

Python簡單易學&#xff0c;但又博大精深。許多人號稱精通Python&#xff0c;卻不會寫Pythonic的代碼&#xff0c;對很多常用包的使用也并不熟悉。學海無涯&#xff0c;我們先來了解一些Python中最基本的內容。Python的特點解釋型語言&#xff0c;無需編譯即可運行提供了交互式…