感觉其实就是树分治,一次BC的题,感觉这次题目质量比较高,仅代表蒟蒻的看法

一次DFS获取每个点到子树的距离不大于K的点的个数,

然后一遍BFS获取从每个点父亲不大于K的的个数,层层扩展,还是想说 其实就是树分治。。。。。并没有什么DP

/*
Problem : 5593 ( ZYB's Tree ) Judge Status : Accepted
RunId : 15764784 Language : G++ Author : qianbi08
*/
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<iostream>
#include<cstdlib>
#include<queue>
using namespace std;
const int maxn=;
int head[maxn],fa[maxn],p;
int dp[maxn][],n,k,a,b;
struct Edge
{
int v,next;
}edge[maxn*];
void addedge(int u,int v)
{
edge[p].v=v;
edge[p].next=head[u];
head[u]=p++;
}
void dfs(int u)
{
dp[u][]=;
for(int i=head[u];~i;i=edge[i].next)
{
int v=edge[i].v;
if(v==fa[u])continue;
dfs(v);
for(int j=;j<=k;j++)
dp[u][j]+=dp[v][j-];
}
}
queue<int>q;
void bfs()
{
while(!q.empty())q.pop();
for(int i=head[];~i;i=edge[i].next)
q.push(edge[i].v);
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=k;i>;--i)
dp[u][i]+=dp[fa[u]][i-]-dp[u][i-];
++dp[u][];
for(int i=head[u];~i;i=edge[i].next)
if(edge[i].v!=fa[u])q.push(edge[i].v);
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d%d",&n,&k,&a,&b);
memset(head,-,sizeof(head));
memset(dp,,sizeof(dp));
p=;
fa[]=;
long long aa=a;
for(int i=;i<=n;i++)
{
aa+=a;
int u=(aa+b)%(i-)+;
int v=i;
fa[v]=u;
addedge(u,v);
addedge(v,u);
}
dfs();
bfs();
int ans;
for(int i=;i<=n;i++)
{
int sum=;
for(int j=;j<=k;j++)
sum+=dp[i][j];
if(i==)ans=sum;
else ans^=sum;
}
printf("%d\n",ans);
}
return ;
}

HDU5593 ZYB's Tree 树形DP +分治的更多相关文章

  1. hdu5593/ZYB's Tree 树形dp

    ZYB's Tree    Memory Limit: 131072/131072 K (Java/Others) 问题描述 ZYBZYB有一颗NN个节点的树,现在他希望你对于每一个点,求出离每个点距 ...

  2. Bestcoder round #65 && hdu 5593 ZYB's Tree 树形dp

    Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...

  3. HDU 5593 ZYB's Tree 树形dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5593 题意: http://bestcoder.hdu.edu.cn/contests/contes ...

  4. 熟练剖分(tree) 树形DP

    熟练剖分(tree) 树形DP 题目描述 题目传送门 分析 我们设\(f[i][j]\)为以\(i\)为根节点的子树中最坏时间复杂度小于等于\(j\)的概率 设\(g[i][j]\)为当前扫到的以\( ...

  5. hdu-5834 Magic boy Bi Luo with his excited tree(树形dp)

    题目链接: Magic boy Bi Luo with his excited tree Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: ...

  6. CF 461B Appleman and Tree 树形DP

    Appleman has a tree with n vertices. Some of the vertices (at least one) are colored black and other ...

  7. codeforces 161D Distance in Tree 树形dp

    题目链接: http://codeforces.com/contest/161/problem/D D. Distance in Tree time limit per test 3 secondsm ...

  8. hdu6035 Colorful Tree 树形dp 给定一棵树,每个节点有一个颜色值。定义每条路径的值为经过的节点的不同颜色数。求所有路径的值和。

    /** 题目:hdu6035 Colorful Tree 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6035 题意:给定一棵树,每个节点有一个颜色值.定 ...

  9. 5.10 省选模拟赛 tree 树形dp 逆元

    LINK:tree 整场比赛看起来最不可做 确是最简单的题目. 感觉很难写 不过单独考虑某个点 容易想到树形dp的状态. 设f[x]表示以x为根的子树内有黑边的方案数. 白边方案只有一种所以不用记录. ...

随机推荐

  1. 远程登陆MS azure Linux 虚拟机

    http://blogs.technet.com/b/uktechnet/archive/2013/11/12/running-a-remote-desktop-on-a-windows-azure- ...

  2. 1047: [HAOI2007]理想的正方形 - BZOJ

    Description 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小.Input 第一行为3个整数,分别表示a,b,n的值第二行至第a ...

  3. 团体程序设计天梯赛-练习集L1-009. *N个数求和

    L1-009. N个数求和 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题的要求很简单,就是求N个数字的和.麻烦的是,这些 ...

  4. 基于Oracle OCI的数据访问C语言接口ORADBI .

    基于Oracle OCI的数据访问C语言接口ORADBI cheungmine@gmail.com Mar. 22, 2008   ORADBI是我在Oracle OCI(Oracle 调用接口)基础 ...

  5. FZU-1926+KMP

    题意:给定一篇文章和一些句子.询问句子是否在文章中出现. kmp模板题 /* kmp */ #include<stdio.h> #include<string.h> #incl ...

  6. POJ3207+tarjan+2-sat

    /* 2-sat 题意:给定一个圆,圆上一些点.两点一线.现给出一些线,这些线可以在圆内连起来,也可以在圆外. 问有没有可能所有的线画完 且 不出现相交. 思路:把线画在圆内或圆外 看成一个组合.其它 ...

  7. hdu 2516 取石子游戏 博弈论

    很显然的nim游戏的变形,很好找规律 先手败:2,3,5,8,13…… 其他先手胜.即满足菲波拉数列. 代码如下: #include<iostream> #include<stdio ...

  8. Google-Gson使用

    转自:http://my.oschina.net/itblog/blog/204120 这几天,因为项目的需要,接触了Google的Gson库,发现这个东西很好用,遂记下简单的笔记,供以后参考.至于G ...

  9. HandlerThread 类的学习(转载)

    HandlerThread继承于Thread,所以它本质就是个Thread.HandlerThread类用于方便的创建一个含有looper的线程类,looper用来创建handler类.我们一般不创建 ...

  10. HeadFirst设计模式之单例模式

    一. 1.The Singleton Pattern ensures a class has only one instance, and provides a global point of acc ...