哦,这个困惑了我好久的东西——生成函数(母函数),(然而拿这个东西去向学文化课的同学装逼并不成功。。。)

生成函数,就是把原来的加法组合变成乘法的指数加法,那么我们要求的值就是相应的指数的系数的值啦,是不是很神奇??(2333我好像又不会了。。)

那么这个题就是抑或规则下的生成函数(扒自某题解),把指数的加法变成抑或就可以。。

 #include <bits/stdc++.h>
#define LL long long
using namespace std;
inline int ra()
{
int x=,f=; char ch=getchar();
while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
return x*f;
}
int n,cnt;
int a[][];
int ans[],head[],deep[];
struct edge{
int to,next;
}e[];
void insert(int x, int y){
e[++cnt].to=y; e[cnt].next=head[x]; head[x]=cnt;
}
void dfs(int x)
{
a[x][]=;
for (int i=head[x];i;i=e[i].next)
{
dfs(e[i].to);
for (int j=; j<=deep[x];j++)
for (int k=; k<=deep[e[i].to]; k++)
ans[j^(k+)]+=a[x][j]*a[e[i].to][k];
deep[x]=max(deep[x],deep[e[i].to]+);
for (int j=; j<=deep[e[i].to]; j++)
a[x][j+]+=a[e[i].to][j];
}
}
int main(int argc, char const *argv[])
{
n=ra();
for (int i=; i<=n; i++)
insert(ra(),i);
dfs(); int mx=;
for (; mx ; mx--) if (ans[mx]) break;
for (int i=; i<=mx; i++) printf("%d\n",ans[i]);
return ;
}

bzoj 3696: 化合物的更多相关文章

  1. 【BZOJ-3696】化合物 树形DP + 母函数(什么鬼)

    3696: 化合物 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 165  Solved: 85[Submit][Status][Discuss] D ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. 树形dp专题总结

    树形dp专题总结 大力dp的练习与晋升 原题均可以在网址上找到 技巧总结 1.换根大法 2.状态定义应只考虑考虑影响的关系 3.数据结构与dp的合理结合(T11) 4.抽直径解决求最长链的许多类问题( ...

  4. bzoj3696

    3696: 化合物 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 245  Solved: 131[Submit][Status][Discuss] ...

  5. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  6. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  7. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

  8. bzoj 4610 Ceiling Functi

    bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...

  9. BZOJ 题目整理

    bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...

随机推荐

  1. [aac @ ...] Specified sample format s16 is invalid or not supported

    在使用FFmpeg打开编码器的时候出现以下错误: [aac @ 000001da19fd7200] Specified sample format s16 is invalid or not supp ...

  2. Flask - 中间件

    其实就是封装旧酒,装进新瓶,自己再加点料.留坑,还没有用到. Flask的请求扩展就是Django的中间件.Django的中间件不是Flask的中间件 from flask import Flask ...

  3. 通过修改select的value值

    1 <input type="button" id="btn" value="按钮"/> 2 <select name=& ...

  4. idea增删改查

    idea应用mybatis写增删改查 entity层 private Integer id;private String userCode;private String userName;privat ...

  5. day07 集合

    ''' list,查询过程中修改,会报错,类似java的并发修改异常 Traceback (most recent call last): File "C:/1xubenqing/pytho ...

  6. js 实现循环遍历数组

    for in循环遍历 let arr = [1, 2, 3, 4, 4, 3], str = '' for (const val in arr) { str += val + ' ' } consol ...

  7. Ajax--jQuery使用Ajax

    1.jQuery对Ajax操作进行了封装,在jQuery最底层的方法是$.ajax(),第二层是 load() , $.get() 和 $.post(),第三层是 $.getScript() 和 $. ...

  8. string简单成员函数的实现

    原文:https://blog.csdn.net/zcyzsy/article/details/52146124 #include<iostream> using namespace st ...

  9. instance与可变参数合用,多态性

    public class Doubt { public static void main(String[] args) { Dog d1=new Dog(); Dog d2=new Zangao(); ...

  10. Model Validation 和测试Post参数

    using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentM ...