HDU5593 ZYB's Tree 树形DP +分治
感觉其实就是树分治,一次BC的题,感觉这次题目质量比较高,仅代表蒟蒻的看法
一次DFS获取每个点到子树的距离不大于K的点的个数,
然后一遍BFS获取从每个点父亲不大于K的的个数,层层扩展,还是想说 其实就是树分治。。。。。并没有什么DP
![](/assets/blank.gif)
![](/assets/blank.gif)
/* 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=500005; int head[maxn],fa[maxn],p; int dp[maxn][11],n,k,a,b; struct Edge {int v,next; }edge[maxn*2]; void addedge(int u,int v) {edge[p].v=v;edge[p].next=head[u];head[u]=p++; } void dfs(int u) {dp[u][0]=1;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=1;j<=k;j++)dp[u][j]+=dp[v][j-1];} } queue<int>q; void bfs() {while(!q.empty())q.pop();for(int i=head[1];~i;i=edge[i].next)q.push(edge[i].v);while(!q.empty()){int u=q.front();q.pop();for(int i=k;i>1;--i)dp[u][i]+=dp[fa[u]][i-1]-dp[u][i-2];++dp[u][1];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,-1,sizeof(head));memset(dp,0,sizeof(dp));p=0;fa[1]=0;long long aa=a;for(int i=2;i<=n;i++){aa+=a;int u=(aa+b)%(i-1)+1;int v=i;fa[v]=u;addedge(u,v);addedge(v,u);}dfs(1);bfs();int ans;for(int i=1;i<=n;i++){int sum=0;for(int j=0;j<=k;j++)sum+=dp[i][j];if(i==1)ans=sum;else ans^=sum;}printf("%d\n",ans);}return 0; }
View Code
转载于:https://www.cnblogs.com/shuguangzw/p/5023310.html
HDU5593 ZYB's Tree 树形DP +分治相关推荐
- 2021牛客多校4 - Rebuild Tree(树形dp)
题目链接:点击查看 题目大意:给出一棵 nnn 个节点的树,现在可以删掉 kkk 条边,然后加上 kkk 条边,问有多少种方案使得操作后 nnn 个点仍然是一棵树 题目分析:原树删掉 kkk 条边后会 ...
- 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: ...
- HDU 5834 Magic boy Bi Luo with his excited tree 树形DP
Magic boy Bi Luo with his excited tree 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5834 Descript ...
- BZOJ.3227.[SDOI2008]红黑树tree(树形DP 思路)
BZOJ orz MilkyWay天天做sxt! 首先可以树形DP:\(f[i][j][0/1]\)表示\(i\)个点的子树中,黑高度为\(j\),根节点为红/黑节点的最小红节点数(最大同理). 转移 ...
- LiberOJ #6210. 「美团 CodeM 决赛」tree 树形DP
题目链接:点这里 题解: 需要证明,所求的路径一定是全部权值都为1或者,路径上权值至多有一个为2其余为1且权值2在路径中央. 然后树形DP 设定dp[i][0/1] 以1为根的情况下,以i 节点下子树 ...
- Codeforces Round #263 (Div. 2) D. Appleman and Tree 树形dp
链接: http://codeforces.com/contest/462/problem/D 题意: 给定n个点的树, 0为根,下面n-1行表示每个点的父节点 最后一行n个数 表示每个点的颜色,0为 ...
- VK Cup 2012 Round 1 D. Distance in Tree (树形dp)
题目:http://codeforces.com/problemset/problem/161/D 题意:给你一棵树,问你两点之间的距离正好等于k的有多少个 思路:这个题目的内存限制首先大一倍,他有5 ...
- ARC101E Ribbons on Tree 树形dp 容斥
题目链接 题意: 给你一棵nnn个点的树,nnn是偶数,把这些点分成n2\frac{n}{2}2n个点对,每个点对会把路径上的所有边覆盖,问你每条边至少覆盖一次有多少种配对方式.n<=5000 ...
- A. Parsa‘s Humongous Tree(树形DP + 贪心)
Problem - 1528A - Codeforces 两个玩家正在玩一个游戏.他们有一个整数1,2,...,n的排列组合(排列组合是一个数组,其中从1到n的每个元素正好出现一次).这个排列组合没有 ...
最新文章
- monocross 环境搭建:MonoTouch Mono for Android
- 《研磨设计模式》chap25 访问者模式Visitor(3)联合组合模式+总结
- HDFC的完整形式是什么?
- 【.Net】C# 将Access中时间段条件查询的数据添加到ListView中
- 【CodeForces - 245H 】Queries for Number of Palindromes (带容斥的区间dp)
- [testNG]Cannot find class in classpath解决方法
- iOS开发之UITextField(输入框)限制只能输入整数和小数
- mac 电脑安装 svn和brew
- 对于三极管饱和状态的理解
- 【JVM】JVM基础
- 【故障处理】ORA-12162 错误的处理
- 【SEO实验室】使用百度SEO排名点击软件快速提升排名
- 千古兴亡多少事,一江春水向东流--转任总文章
- 第1章 微处理器、微型计算机、微型计算机系统的区别
- 索引的数据结构--MySQL
- An unexpected error has been detected by Java Runtime Environment
- npm ERR! code EINVAL npm ERR! EINVAL: invalid argument, read
- java中字节数组转换为字符串
- 学计算机基础word题,计算机操作基础Word练习题
- 更改路由表,让windows同时启用双网卡,令需要访问的IP随心所欲
热门文章
- git checkout 命令详解—— Git 学习笔记 16
- 记录每次更新到仓库 —— Git 学习笔记 10
- 更灵活的定位内存地址的方法---汇编学习笔记
- javascript 【小数转百分数 保留两位小数】
- Linux 文件查找命令
- Android7.0 PowerManagerService亮灭屏分析(一)
- 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
- Binder学习指南
- JZOJ 5476. 【NOIP2017提高组正式赛】奶酪
- ros轮式小车学习链接