給出n≤2
e5
n\leq2e5
n≤2e
5個點,每個點都有乙個權值,每條邊的距離為1
11。求所有點對的權值最大值和權值和。
只有兩種情況,1:父親的父親;2:同乙個結點的兩個兒子。第一種情形多帶乙個引數即可維護。第二種情形對於最大值只要維護兒子權值的最大和次大值,對於求和只要維護權值和和權值平方和。
最大值是不用取模的。
#includeusing namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int n=2e5+7;
const int mod=1e4+7;
int w[n];
vectorgo[n];
int ans=0,sum=0;
void dfs(int u,int f,int gf)
if(mxf!=-1&&mxs!=-1) ans=max(ans,mxf*mxs);
if(gf!=-1) ans=max(ans,w[u]*w[gf]),sum=(sum+2*w[u]*w[gf])%mod;
sum=(sum+(s*s-sq)%mod)%mod;
}int main()
for(int i=1;i<=n;i++)
scanf("%d",&w[i]);
dfs(1,-1,-1);
printf("%d %d\n",ans,sum);
return 0;
}
洛谷P1351 聯合權值 樹形dp
題目鏈結 一道很簡單的樹形dp,然而被我寫的這麼長 分別記錄下距離為 1 2 的點數,權值和,最大值。以及相鄰兒子之間的貢獻。樹形dp一波。include define fin x define int long long using namespace std const int maxn 2e5...
洛谷P1351 聯合權值
無向連通圖g 有n 個點,n 1 條邊。點從1 到n 依次編號,編號為 i 的點的權值為w i 每條邊的長度均為1 圖上兩點 u v 的距離定義為u 點到v 點的最短距離。對於圖g 上的點對 u,v 若它們的距離為2 則它們之間會產生wu wv 的聯合權值。請問圖g 上所有可產生聯合權值的有序點對中...
P1351 聯合權值 樹形結構
評測記錄 一棵樹,每個點有權值,求兩個距離為2的點使權值之積最大和所以這種點對的權值之積的和。分為兩種情況 1.乙個點是另乙個點的爺節點,這時候在遍歷時儲存爺節點就好了。2.乙個點是另乙個點的兄弟,這時候在乙個點跑兒子的時候計算就好。include include define n 200010 d...