點對最大值

2021-10-07 01:26:21 字數 811 閱讀 3941

顯然可以樹dp。

dp[x]為從子樹到點x的最大權值。

然後我們每次對乙個點記錄,從子樹來的最大值和次大值。

每次轉移即可,或者是直接到根。

要注意初始值為-1e9而不是0

ac**:

#pragma gcc optimize("-ofast","-funroll-all-loops")

#include

//#define int long long

using namespace std;

const

int n=

1e6+

10,m=n<<1;

int dp[n]

,res,c[n]

,n;int head[n]

,to[m]

,w[m]

,nex[m]

,tot;

inline

void

add(

int a,

int b,

int c)

void

dfs(

int x,

int fa)

res=

max(res,dp[x]

+c[x]);

res=

max(res,mx1+mx2)

; dp[x]

=max

(dp[x]

,c[x]);

}inline

void

solve()

signed

main()

數對之差的最大值

題目 在陣列中,數字減去它右邊的數字得到乙個數對之差。求所有數對之差的最大值。例如在陣列中,數對之差的最大值是11,是16減去5的結果。static int maxdiff int arr if arr.length 2 arr null return 0 int max arr 0 intmaxd...

數對之差的最大值

題目 在陣列中,數字減去它右邊的數字得到乙個數對之差。求所有數對之差的最大值。例如在陣列中,數對之差的最大值是11,是16減去5的結果。分析 看到這個題目,很多人的第一反應是找到這個陣列的最大值和最小值,然後覺得最大值減去最小值就是最終的結果。這種思路忽略了題目中很重要的一點 數對之差是乙個數字減去...

int 最大值 239 滑動視窗最大值

給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗內的 k 個數字。滑動視窗每次只向右移動一位。返回滑動視窗中的最大值。示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3 輸出 3,3,5,5,6,7 解釋 滑動視窗的位置 最大...