Luogu P1351 聯合權值 字首和

2022-04-29 02:54:09 字數 1008 閱讀 9784

求樹上距離為二的點對權積之最值、和。

70pts:列舉每個點,bfs兩層求和求最值和和。

100pts:列舉每個點,先統計所有可達節點的權值和,再列舉可達點求權值和

第二種做法較第一種的優化:

a1*a2+a1*a3+a1*a4+..a2*a1+a2*a3+...

=>a1*(sum-a1)+a2*(sum-a2)+...

好巧妙啊

要注意的一點:小心過程量爆int!

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;78

intread()

1415

const

int maxn = 2e6+10;16

17struct

edgeedges[maxn<<1

];20

21int

first[maxn];

22int

w[maxn];

23int

n,m,ans,tot,top,cnte,x;

2425

void add_edge(int fr,int

to);

27 first[fr] =cnte;28}

2930

intmain()

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

41for(int i = 1;i <= n;i++)

50 ans = max(ans,m1*m2);

51for(int j = first[i];j;j =edges[j].ne)

52 x = w[edges[j].to],tot = (tot+x*(s-x))%10007;53

}54 cout << ans << '

'<55return0;

56 }

Luogu P1351 聯合權值

無向連通圖g有n個點,n 1條邊,點從1到n依次編號,編號為i的點的權值為wi每條邊的長度均為1圖上兩點 u,v 的距離定義為u點到v點的最短距離。對於圖g上的點對 u,v 若它們的距離為2,則它們之間會產生wu wv 的聯合權值。請問圖g 上所有可產生聯合權值的有序點對中,聯合權值最大的是多少?所...

Luogu P1351 聯合權值

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

luoguP1351 聯合權值

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