題解:本題主要考查dp/貪心。
簡要題意:一棵樹,編號為i
ii的點的權值為w
iw_i
wi,每條邊的長度均為1
11。對於圖g
gg上的點對(u,
v)
(u,v)
(u,v
),若它們的距離為2
22,則它們之間會產生wv×
wu
w_v \times w_u
wv×wu
的聯合權值。求最大的聯合權值和聯合權值總和。
1.dp/貪心:其實本題換一種思想就很簡單,因為距離為2
22的點一定有乙個中間點,所以列舉每乙個中間點,取任意兩個聯通的點,找到最大值和次大值,相乘就可以得到最大聯合權值。將所有的值加一下,注意因為兩點可以顛倒位置,所以再乘2,輸出就可以了。注意聯合權值和要取模,最大的聯合權值不能取!!!
!!!!!
!**如下:
#include#includeusing namespace std;
int mod=10007;
struct e
e[666666];
int h[666666],a[666666];
int n,p,max1,max2,maxn,ans,sum;
void add(int start,int to)
int main()
for(int i=1;i<=n;i++)cin>>a[i];
for(int j=1;j<=n;j++)
else if(a[k]>max2)max2=a[k];
ans=(ans+sum*a[k])%mod;
sum=(sum+a[k])%mod;
} maxn=max(maxn,max1*max2);
} ans=(ans*2)%mod;
cout
}
NOIP2014提高組 聯合權值
傳送門 無向連通圖 g 有 n 個點,n 1 條邊。點從 1 到 n 依次編號,編號為 i 的點的權值為 wi,每條邊的長度均為 1。圖上兩點 u,v 的距離定義為 u 點到 v 點的最短距離。對於圖 g 上的點對 u,v 若它們的距離為 2,則它們之間會產生wu wv的聯合權值。請問圖 g 上所有...
NOIP提高組2014 聯合權值 解題報告
lgoj p1351 聯合權值 一看到我們就要反應出來 g是一顆樹。兩個點的距離為2,就能產生聯合權值?那我列舉中間點不就好了2333 乙個中間點的最大聯合權值就是它所連的點中權值最大的兩個點 如果它所連只有乙個點,自然不產生權值 考慮它的所有的聯合權值之和怎麼算 第k kk個點為中間點的所有聯合權...
NOIP2014 聯合權值
鄰接表儲存樹。列舉每個節點,使之作為中點,先計算出與其相連的所有節點的權值總和l,與其相連的所有節點在該節點處形成的權值 l w w。如果沒有l,直接列舉以此節點為中點的節點對則只能過60 的資料。include include include include include include inc...