抄来的尝试一下LLJ大佬的理论AC大法
Posted Achen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抄来的尝试一下LLJ大佬的理论AC大法相关的知识,希望对你有一定的参考价值。
给定一棵树,求有多少无序三元组(x,y,z)满足x,y,z互不相等且Dis(x,y)=Dis(y,z)=Dis(x,z)
枚举中心点,分别dfs,计算答案
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 5050
using namespace std;
struct abcd{
int to,next;
}table[M<<1];
int head[M],tot;
int n;
long long ans;
int temp[M],f[M],g[M];
void Add(int x,int y)
{
table[++tot].to=y;
table[tot].next=head[x];
head[x]=tot;
}
void DFS(int x,int from,int dpt)
{
int i;
temp[dpt]++;
for(i=head[x];i;i=table[i].next)
if(table[i].to!=from)
DFS(table[i].to,x,dpt+1);
}
int main()
{
int i,j,x,y;
cin>>n;
for(i=1;i<n;i++)
{
scanf("%d%d",&x,&y);
Add(x,y);Add(y,x);
}
for(x=1;x<=n;x++)
{
memset(f,0,sizeof f);
memset(g,0,sizeof g);
for(i=head[x];i;i=table[i].next)
{
memset(temp,0,sizeof temp);
DFS(table[i].to,x,1);
for(j=1;j<=n;j++)
{
ans+=(long long)g[j]*temp[j];
g[j]+=f[j]*temp[j];
f[j]+=temp[j];
}
}
}
cout<<ans<<endl;
return 0;
}
3.小奇的仓库
神奇的树形dp,听昕怡讲了一下,听着就蛋疼。
4.3626: [LNOI2014]LCA
不应该嘲笑LNOI.....
很神奇的题,很有 的风格(?)。
5 1018: [SHOI2008]堵塞的交通traffic
线段树维护区间信息
6【BZOJ】3319: 黑白树
以上是关于抄来的尝试一下LLJ大佬的理论AC大法的主要内容,如果未能解决你的问题,请参考以下文章
Python表白代码“情话都是我抄来的,想说给你听是真的。”情人节快乐~