洛谷 1351 聯合權值

2022-07-23 17:18:21 字數 903 閱讀 8770

【題解】

每個點維護各個兒子的前字尾最大值、權值和,這樣就可以統計兒子之間相乘的答案。然後每個節點再乘它的祖父的權值去更新答案即可。

1 #include2 #include3 #include4

#define ll long long

5#define rg register

6#define n 200010

7#define mod (10007)

8using

namespace

std;

9int

n,tot,last[n],fa[n],w[n],son[n];

10ll sum,mx;

11struct edgee[n<<1

];12 inline int

read()

18void dfs(int

x)26 premx=-2e9;

27for(rg int i=top,to;i;i--)

31for(rg int i=last[x],to;i;i=e[i].pre)if((to=e[i].to)!=fa[x]) dfs(to);32}

33int

main(); last[v]=tot;

38 e[++tot]=(edge); last[u]=tot;39}

40for(rg int i=1;i<=n;i++) w[i]=read();

41 dfs(1

);42 printf("

%lld %lld\n

",mx,sum%mod);

43 }

洛谷 1351 聯合權值

一棵樹上距離為2的兩個節點的權值相乘,問max和sum70分 列舉每個節點,它的兩個兒子必定距離為2,相加 取max即可 會t 100分 注意到,乙個節點的兒子中,互相都要乘 根據乘法分配律,我先預處理它兒子的權值和,每個節點x對聯合權值的貢獻為key x sum key x 這樣可以把o n3 的...

洛谷 1351 聯合權值

題目描述 無向連通圖 g 有 n 個點,n 1 條邊。點從 1 到 n 依次編號,編號為 iii 的點的權值為 wi,每條邊的長度均為 1。圖上兩點 u,v 的距離定義為 u 點到 v 點的最短距離。對於圖 g 上的點對 u,v 若它們的距離為 2,則它們之間會產生wv wu 的聯合權值。請問圖 g...

洛谷 1351 聯合權值

無向連通圖 gg 有 nn 個點,n 1n 1 條邊。點從 11 到 nn 依次編號,編號為 ii 的點的權值為 w iwi 每條邊的長度均為 11。圖上兩點 u,v u,v 的距離定義為 uu 點到 vv 點的最短距離。對於圖 gg 上的點對 u,v u,v 若它們的距離為 22,則它們之間會產生...