尝试一下LLJ大佬的理论AC大法

1.BZOJ 3522 Poi2014 Hotel DFS

给定一棵树,求有多少无序三元组(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;
}
View Code

 

2.bzoj1912 巡逻

传送门

 

3.小奇的仓库

神奇的树形dp,听昕怡讲了一下,听着就蛋疼。

 

4.3626: [LNOI2014]LCA

不应该嘲笑LNOI.....

很神奇的题,很有 的风格(?)。

题面

题解

 

5 1018: [SHOI2008]堵塞的交通traffic

 线段树维护区间信息

题面

题解

 

6【BZOJ】3319: 黑白树

题解

 

posted @ 2017-09-29 08:03  啊宸  阅读(527)  评论(0编辑  收藏  举报