Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit cb6d458

Browse files
Create Readme.md
1 parent 517a04e commit cb6d458

File tree

1 file changed

+10
-0
lines changed
  • Binary_Search/3559.Number-of-Ways-to-Assign-Edge-Weights-II

1 file changed

+10
-0
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
### 3559.Number-of-Ways-to-Assign-Edge-Weights-II
2+
3+
我们很容易看出,可以用binary lifting高效地求出任意两点之间的edge的个数d。显然,每段edge可以赋值1或者2,因此总共会有2^d种组合。其中有多少种方法能使得总路径长度恰好是奇数呢?结论很简单,就是它们的一半,即2^(d-1)种。
4+
5+
我们可以用动态规划来推论一下。dp1[i]表示i条边组成的总长度为奇数的组合数,dp2[i]表示i条边组成的总长度为偶数的组合数。我们的转移方程是
6+
```
7+
dp1[i] = dp2[i-1];
8+
dp2[i] = dp1[i-1];
9+
```
10+
初始条件是`dp1[1]=dp2[1]=1`,显然会有对任意的i,都有`dp1[i]=dp2[i]`。故i条边组成的总长度为偶数和奇数的组合数一定相等。

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /