noip2014 d1t2 聯合權值

2022-05-20 04:23:47 字數 1134 閱讀 5385

感覺自己越來越弱了...

題目鏈結

對於60%的資料,樸素列舉即可

對於100%的資料,考慮優化

我們注意到每條邊的長度均為1,而要求點對距離為2,可見和同乙個點有連邊的兩點之間就會產生權值

對於第一問,顯然可以貪心儲存最大和次大值從而避免n³的查詢;

對於第二問,乙個講的清楚的-->鏈結

記sum為與乙個結點相連的所有點的權值之和,則對於與之相連的每個點i,由結合律,它對答案的貢獻就是w[i]*(sum-w[i])

抓住題目的特殊條件,從分析資料間的關係入手,便可有效地避免冗雜的運算,將時間複雜度降在o(k*n),k為較小的常數

1 #include2 #include3 #include4

#define maxn 200200

5#define mod 10007

6using

namespace

std;

7intn;8

intweight[maxn];

9 vectorcon[maxn];

10int

read()

17while (ch>='

0'&&ch<='9'

)21return x*f;22}

23int

main()

31 memset(weight,0,sizeof

(weight));

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

33 weight[i]=read();

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

40else

if (weight[con[i][j]]>m2)

43 sum+=weight[con[i][j]];44}

45 sum%=mod;

46 ans1=max(ans1,m1*m2);

47for (int j=0;j)51}

52 printf("

%d %d\n

",ans1,ans2);

53return0;

54 }

view code

黃學長樹規的做法也值得借鑑

NOIP2014 D1T2 聯合權值

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

NOIP2014 Day1 T2 聯合權值

noip2014 day1 t2 聯合權值 time limit 10000ms memory limit 131072k total submit 57 accepted 30 case time limit 1000ms description input output sample input...

NOIP 2014 day 1 T2 聯合權值

第一眼看起來很複雜。所以我想了個對鏈 和樹不同情況都分別處理的演算法。orz。複雜度太高最後4組t了。所以。轉換思路。聯合權值 w i w j i,j距離為2.也就是i,j中間間隔了乙個節點,所以我們在遍歷這個中間節點的時候處理。題目求最大和總和,先考慮最大,我們只需要對節點u維護乙個 max1,m...