题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5593

题意:

http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=654&pid=1004

题解:

先自底向上跑一遍,求出以u为根的子树中与u距离小于等于k的节点数(不同的距离要分开存,否则无法递推上去,dp[u][i]存距离为i的节点数)

求好之后,再dfs一遍,这次换做自顶向下,目的是求u的兄弟(和兄弟的后代)以及u的祖先(和祖先的后代,不包括以u为根的子树)中与u距离小于等于k的节点数(也是分开存)

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6.  
  7. const int maxn=5e5+;
  8. typedef long long LL;
  9.  
  10. int dp[maxn][];
  11. int fa[maxn];
  12. int N,K,A,B;
  13.  
  14. struct Edge{
  15. int v,ne;
  16. Edge(int v,int ne):v(v),ne(ne){}
  17. Edge(){}
  18. }egs[maxn*];
  19.  
  20. int head[maxn],tot;
  21.  
  22. void addEdge(int u,int v){
  23. egs[tot]=Edge(v,head[u]);
  24. head[u]=tot++;
  25. }
  26. //从下往上跑一遍
  27. void dfs1(int u){
  28. int p=head[u];
  29. while(p!=-){
  30. Edge& e=egs[p];
  31. dfs1(e.v);
  32. for(int i=;i<=K;i++){
  33. //转移方程1:
  34. dp[u][i]+=dp[e.v][i-];
  35. }
  36. p=e.ne;
  37. }
  38. dp[u][]=;
  39. }
  40. //从上往下跑一遍
  41. void dfs2(int u){
  42. if(fa[u]){
  43. for(int i=K;i>=;i--){
  44. //转移方程2:
  45. dp[u][i]+=dp[fa[u]][i-]-dp[u][i-];//dp[fa[u]][i-1]有包括u本身,所以要扣掉u的那部分对fa[u]的贡献
  46. }
  47. dp[u][]++;
  48. }
  49. int p=head[u];
  50. while(p!=-){
  51. Edge& e=egs[p];
  52. dfs2(e.v);
  53. p=e.ne;
  54. }
  55. }
  56.  
  57. void init(){
  58. fa[]=;
  59. memset(dp,,sizeof(dp));
  60. memset(head,-,sizeof(head));
  61. tot=;
  62. }
  63.  
  64. int main(){
  65. int tc;
  66. scanf("%d",&tc);
  67. while(tc--){
  68. scanf("%d%d%d%d",&N,&K,&A,&B);
  69. init();
  70. for(int i=;i<=N;i++){
  71. int x=((LL)A*i+B)%(i-)+;
  72. addEdge(x,i);
  73. fa[i]=x;
  74. }
  75. dfs1();
  76. dfs2();
  77. LL ans=;
  78. for(int i=;i<=N;i++){
  79. int cnt=;
  80. for(int j=;j<=K;j++) cnt+=dp[i][j];
  81. ans^=cnt;
  82. }
  83. printf("%lld\n",ans);
  84. }
  85. return ;
  86. }

HDU 5593 ZYB's Tree 树形dp的更多相关文章

  1. 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 ...

  2. HDU5593 ZYB's Tree 树形DP +分治

    感觉其实就是树分治,一次BC的题,感觉这次题目质量比较高,仅代表蒟蒻的看法 一次DFS获取每个点到子树的距离不大于K的点的个数, 然后一遍BFS获取从每个点父亲不大于K的的个数,层层扩展,还是想说 其 ...

  3. hdu5593/ZYB's Tree 树形dp

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

  4. hdu 4514 并查集+树形dp

    湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

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

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

  6. HUD 5593——ZYB's Tree——————【树形dp】

    ZYB's Tree Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tota ...

  7. hdu 4003 Find Metal Mineral 树形DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4003 Humans have discovered a kind of new metal miner ...

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

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

  9. 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: ...

随机推荐

  1. Everyday is an Opportunity

    Quote Of The Day: “Everyday is an Opportunity to Learn and Grow, Don’t Waste Your Opportunity.” – Al ...

  2. 第一部分 CLR基础:第1章 CLR的执行模型

    1.1将源代码编译成托管模块

  3. MongoDB查询语法

    mongoDb是非关系型数据库,用习惯了mssql,mysql等数据库的需要转换一下思维 mongoDb存的是与js的json结构一样的文档,表中的每一条记录都可以结构不同 1,大于,小于,大于等于, ...

  4. iOS中使用子线程的完整方法

    http://www.cnblogs.com/ygm900/archive/2013/06/23/3151691.html 第一步:开启子线程 //开启子线程到网络上获取数据 myFirstThrea ...

  5. OXPattern

    10000的随机数组由ox组成,查找数组中oox...x(任意x)oox....x(任意x)o的个数 enum { DATA_SIZE = , }; enum enum_status { STATUS ...

  6. 安装wampserver出现“The Program can't start because MSVCR110.dll is missing from your computer. Try reinstalling the program to fix this problem”

    问题描述: 今天安装wampserver的时候出现"The Program can't start because MSVCR110.dll is missing from your com ...

  7. sqlserver,sqlite,access数据库链接字符串

    SqlServer:string connection = "server=32.1.1.48;database=数据库名;user=sa;password=sa2008"; ac ...

  8. Spring组件扫描<context:component-scan/>使用详解

    1.如果不想在xml文件中配置bean,我们可以给我们的类加上spring组件注解,只需再配置下spring的扫描器就可以实现bean的自动载入. <!-- 注解注入 --> <co ...

  9. HTTP上传文件探究

    通常情况下,我们想在网页上上传一个文件的时候,会采用<input type="file">标签,但是你有没有想过,为什么通过这样一个标签,服务器端就能获取到文件数据呢? ...

  10. windows phone 8.1 HttpWebRequest 请求服务器

    public string SendGetRequest(string baseurl, string parameters) { string parassb = parameters; ) { b ...