[CF1292C] Xenon's Attack on the Gangs

Posted darthvictor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CF1292C] Xenon's Attack on the Gangs相关的知识,希望对你有一定的参考价值。

前言

我水一次题解。我是真的真的真的没有时间了,昨晚高考课任务太多了,完全完成一道题就十点半了。这个看懂题意就贼费劲,在晚新闻之前真的没有时间写题了。水一次,真的就这一次,讲完之后一定补上。我谢罪!

题目

原题链接

解说

解说地址(晚自习一定补上自己的思路,谢罪!)

代码

技术图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int maxn=3000+5;
 5 int n,rt,p[maxn][maxn],s[maxn][maxn];
 6 ll f[maxn][maxn],ans;
 7 vector<int> G[maxn];
 8 void Build(int u){
 9     s[rt][u]=1;
10     for(int v: G[u]) if(v^p[rt][u]){
11         p[rt][v]=u;
12         Build(v);
13         s[rt][u]+=s[rt][v];
14     }
15 }
16 ll dp(int u,int v){
17     if(u==v) return 0;
18     if(f[u][v]) return f[u][v];
19     return f[u][v]=max(dp(u,p[u][v]),dp(v,p[v][u]))+s[u][v]*s[v][u];
20 }
21 int main(){
22     scanf("%d",&n);
23     for(int i=1;i<n;i++){
24         int x,y;
25         scanf("%d%d",&x,&y);
26         G[x].push_back(y);
27         G[y].push_back(x);
28     }
29     for(int i=1;i<=n;i++){
30         rt=i;
31         Build(i);
32     }
33     for(int i=1;i<=n;i++){
34         for(int j=1;j<=n;j++){
35             ans=max(ans,dp(i,j));
36         }
37     }
38     printf("%lld",ans);
39     return 0;
40 }
View Code

(C++ 11运行)

 

幸甚至哉,歌以咏志。

以上是关于[CF1292C] Xenon's Attack on the Gangs的主要内容,如果未能解决你的问题,请参考以下文章

CodeForces 1292C Xenon's Attack on the Gangs

cf1293EE.Xenon's Attack on the Gangs(dp)

CF1293E-Xenon's Attack on the Gangs 树状DP

换根dp+暴力+预处理+记忆化搜索——cf1292C好题!

Codeforces Round #614 (Div. 2) E. Xenon's Attack on the Gangs

Codeforces Round #614 (Div. 2) E. Xenon's Attack on the Gangs