bzoj3696
3696: 化合物
Time Limit: 10 Sec Memory Limit: 512 MB
Submit: 245 Solved: 131
[Submit][Status][Discuss]
Description
首长NOI惨跪,于是去念文化课了。现在,他面对一道化学题。
这题的来源是因为在一个奇怪的学校两个化竞党在玩一个奇怪的博弈论游戏。这个游戏很蛋疼,我相信你们也没有兴趣听。
由于这个游戏涉及博弈论,因此化竞的同学就要求首长求一个类似SG函数的值。
他们手中有一种非常神奇的化合物,它的分子由N个原子组成(不要在意一个原子可能和及其多个原子成键这个细节)。这个分子构成一个树结构,1号分子为根。 若两个原子i、j到它们的最近公共祖先的距离分别是Li和Lj,定义它们的Aij值为:
Aij=Li xor Lj
题目要求对于每一个k(k∈N),求出两两A值为k的原子对个数。
Input
第一行一个整数N。
接下来N-1行,每行一个整数p,第新亍的整数表示第i个原子的父亲为p。
Output
从K=0开始,第k+1行输出两两A值为K的原子对个数,输出到第一个不为零的数为止。
Sample Input
1
1
Sample Output
2
HINT
【数据规模与约定】
用h表示树结构分子的最大深度。
N<=10^5,H<=500
Source
想了半天,怎么感觉只能做到O(n*H^2) 结果一看题解,居然能跑过去。。。 O(跑得快)
#include<bits/stdc++.h>
using namespace std;
#define N 100010
struct edge
{
int nxt,to;
}e[N<<];
int n,cnt=;
int head[N],ans[N],deep[N];
int dp[N][];
void link(int u,int v)
{
e[++cnt].nxt=head[u];
head[u]=cnt;
e[cnt].to=v;
}
void dfs(int u)
{
dp[u][]=;
for(int i=head[u];i;i=e[i].nxt)
{
dfs(e[i].to);
deep[u]=max(deep[u],deep[e[i].to]+);
for(int j=;j<=deep[u];++j)
for(int k=;k<=deep[e[i].to];++k)
ans[j^(k+)]+=dp[u][j]*dp[e[i].to][k];
for(int j=;j<=deep[e[i].to];++j) dp[u][j+]+=dp[e[i].to][j];
}
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;++i)
{
int u; scanf("%d",&u);
link(u,i);
}
dfs();
int mx=;
for(;mx;--mx) if(ans[mx]) break;
for(int i=;i<=mx;++i) printf("%d\n",ans[i]);
return ;
}
bzoj3696的更多相关文章
- 【BZOJ3696】化合物 树形DP+暴力
[BZOJ3696]化合物 Description 首长NOI惨跪,于是去念文化课了.现在,他面对一道化学题. 这题的来源是因为在一个奇怪的学校两个化竞党在玩一个奇怪的博弈论游戏.这个游戏很蛋疼 ...
- [bzoj3696]化合物_树形dp
化合物 bzoj-3696 题目大意:给你一棵树,定义两个点i , j之间的A值是(dis[i]-dis[lca(i,j)])xor(dis[j]-dis[lca(i,j)]).对所有的k$\in$[ ...
- [Bzoj3696]化合物【暴力+树形Dp】
Online Judge:Bzoj3696 Label:暴力,树形Dp 题目描述 首长NOI惨跪,于是去念文化课了.现在,他面对一道化学题. 这题的来源是因为在一个奇怪的学校两个化竞党在玩一个奇怪的博 ...
- [BZOJ3696][FJSC2014]化合物(异或规则下的母函数)
题目:http://hzwer.com/3708.html 分析: 类似树分治思想,设f[x][i]表示以x为根的子树的所有点中,与x的距离为i的点有多少个,这个可以预处理出来 然后我们考虑每颗子树对 ...
- 【BZOJ-3696】化合物 树形DP + 母函数(什么鬼)
3696: 化合物 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 165 Solved: 85[Submit][Status][Discuss] D ...
- BZOJ3696 化合物
我们可以树形dp... 令f[p][d]表示以p为根的子树,与p距离为d的结点数 然后我们计算答案: 一种是从某个节点q到根p的方案,对和为d的贡献是1 另一种是p的一个子树中的节点x到另一个子树中的 ...
- 【bzoj3696】化合物 树形dp
题目描述 首长NOI惨跪,于是去念文化课了.现在,他面对一道化学题.这题的来源是因为在一个奇怪的学校两个化竞党在玩一个奇怪的博弈论游戏.这个游戏很蛋疼,我相信你们也没有兴趣听.由于这个游戏涉及博弈论, ...
- [转载]hzwer的bzoj题单
counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...
- BZOJ刷题列表【转载于hzwer】
沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...
随机推荐
- 【优先级队列】 Holedox Eating
https://www.bnuoj.com/v3/contest_show.php?cid=9154#problem/M [Accepted] #include<iostream> #in ...
- (在线工具)JSON字符串转换成Java实体类(POJO)
http://www.bejson.com/json2javapojo/ 付代码代码转换示例: public static FixMixedOrderResponse serialization(St ...
- C#中对字符串的加密和解密
加密: /// <summary> /// 对字符串进行加密 /// </summary> /// <param name="proclaimText" ...
- CPU问题定位与解决
CPU问题定位基本流程: 性能计数器诊断 主要用到的性能计数器 %Process Time 全实例 (主要用于查看当前服务器的CPU 情况) %Process Time sqlservr (主要用 ...
- excludepathpatterns 无效
踩坑了,调了好久才调出来. 原因: 访问的API /XXX 已经转换为 /error 了. 把“/error” 也加入 excludepathpatterns 里面即可.
- 第18章:MYSQL分区
第18章:分区 目录 18.1. MySQL中的分区概述 18.2. 分区类型 18.2.1. RANGE分区 18.2.2. LIST分区 18.2.3. HASH分区 18.2.4. KEY分区 ...
- 解决WordPress安装主题/插件提示输入FTP帐号的问题
有时比较着急想要安装一款主题或插件,却提示需要输入 FTP 帐号密码……这种情况蛮让人讨厌的,以下就是最完美的解决方法: 方法一:在 wp-config.php 文件加入代码 如果使用的是虚拟主机,可 ...
- mySQL windows 服务
https://www.jizhuba.com/kejiyouxi/20171001/6006.html
- django学习之- Ajax
提示:jquery要使用1版本,因为高版本已不兼容低版本的游览器.参考url:http://www.cnblogs.com/wupeiqi/articles/5703697.html原生ajax:Aj ...
- Spring之IOC篇章具体解释
专题一 IOC 1.接口以及面向接口编程 a.结构设计中,分清层次以及调用关系,每层仅仅向外(或者上层)提供一组功能接口,各层间仅依赖接口而非实现类这样做的优点是,接口实现的变动不影响各层间的调用 ...