算有幾個簡單路徑對

2021-07-02 20:41:51 字數 1101 閱讀 5995

題目描述:

一棵樹n~1e5,求出有多少個無序對(a,b,c),使得沒有乙個簡單路徑能夠一筆畫過abc.

題解:沒有簡單路徑,不好弄.我們更熟悉的是簡單路徑.一筆帶過,那麼就是求出有幾個簡單路徑的對數.簡單路徑3個點,一定要想到中間的那個點,列舉中間的那個點是誰,那麼剩下的兩個分別分布在岔路上,就是正常的橫著dp.

重點:乙個轉化,把非簡單路徑轉化為簡單路徑,之後3個點列舉強制是中間的那個點.之後樹形dp

**:

#pragma comment(linker, "/stack:1024000000,1024000000")

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define clr(a) memset(a, 0, sizeof(a))

#define rep(i, a, b) for(ll i = a;i < b;i++)

#define rep_d(i, a, b) for(ll i = a;i <= b;i++)

typedef

long

long ll;

using

namespace

std;

const ll maxn = 1e5 + 100;

vector

g[maxn];

ll n, dp[maxn];

ll ans;

ll o;

void dfs(ll u, ll fa)//dp[u]指的u為根的點的個數

}dp[u] = sum;

ans += (n - sum)*(tmp);

}void solve()

int main()

rep_d(i, 1, n - 1)

solve();

}return

0;}

python有幾個版本 python有幾個版本

python的3.0版本,常被稱為python 3000,或簡稱py3k。相對於python的早期版本,這是乙個較大的公升級。為了不帶入過多的累贅,python 3.0在設計的時候沒有考慮向下相容。許多針對早期python版本設計的程式都無法在python 3.0上正常執行。為了照顧現有程式,pyt...

細胞有幾個

一矩形陣列由數字0到9組成,數字1到9代表細胞,細胞的定義為沿細胞數字上下左右還是細胞數字則為同一細胞,求給定矩形陣列的細胞個數。如 陣列 4 10 有4個細胞。輸入有多行,第一行表示矩陣陣列的行數m和列數n m 70,n 70 接下來的m行n列為0 9等10個數字構成的矩陣。輸出細胞個數。4 10...

Spark Streaming簡介 有狀態運算元

spark streaming是微批次處理方式,批處理間隔是spark streaming是的核心概念和關鍵引數。spark streaming需要單獨乙個節點來接收資料,所以spark windowlength 視窗長度 視窗的持久時間 執行一次持續多少個時間單位 slideinterval 滑動...