G将军的敢死队——树状DP
当前节点的两种情况:
1.beChoosed = {son.beAbandoned乘积} //当前节点选中的情况下,子节点都不能选
2.beAbandoned = {(son.beAbandoned + son.beChoosed)乘积} //当前节点不选的情况下,子节点所有情况都算上
ps:最终要减去一种所有节点都未被选中的情况 -1
#include <iostream>
#include <stdio.h>
#include <list>
#define MOD 10007
#define MAXN 100002
using namespace std;
int n;
struct node{
int parent;
list<int>son;
int son_count;
int beChoosedCount,beAbandonedCount;
}num[MAXN]; void dfs(int id)
{
for(int i=;i<num[id].son_count;++i)
{
int tmp = num[id].son.front();
dfs(tmp);
num[id].son.pop_front();
num[id].beChoosedCount *= num[tmp].beAbandonedCount%MOD;
num[id].beAbandonedCount *= (num[tmp].beChoosedCount+num[tmp].beAbandonedCount)%MOD;
} }
int main()
{
cin>>n;
num[].beChoosedCount=;
num[].beAbandonedCount=;
for (int i = ; i <= n; ++i)
{ cin>>num[i].parent;
num[num[i].parent].son.push_back(i);
num[num[i].parent].son_count++;
num[i].beAbandonedCount=;
num[i].beChoosedCount=;
} dfs();
cout<<(num[].beAbandonedCount+num[].beChoosedCount-)%MOD;
return ;
}
G将军的敢死队——树状DP的更多相关文章
- [Codeforces743D][luogu CF743D]Chloe and pleasant prizes[树状DP入门][毒瘤数据]
		这个题的数据真的很毒瘤,身为一个交了8遍的蒟蒻的呐喊(嘤嘤嘤) 个人认为作为一个树状DP的入门题十分合适,同时建议做完这个题之后再去做一下这个题 选课 同时在这里挂一个选取节点型树形DP的状态转移方程 ... 
- 树状DP (poj 2342)
		题目:Anniversary party 题意:给出N各节点的快乐指数,以及父子关系,求最大快乐指数和(没人职员愿意跟直接上司一起玩): 思路:从底向上的树状DP: 第一种情况:第i个员工不参与,F[ ... 
- poj3659树状DP
		Cell Phone Network Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6273 Accepted: 225 ... 
- hdu 1561 The more, The Better_树状dp
		题目链接 题意:给你一棵树,各个节点都有价值(除根节点),从根节点出发,选择m个节点,问最多的价值是多小. 思路:很明显是树状dp,遍历树时背包最优价值,dp[i][k]=max{dp[i][r]+d ... 
- poj 2342 Anniversary party_经典树状dp
		题意:Ural大学有n个职员,1~N编号,他们有从属关系,就是说他们关系就像一棵树,父节点就是子节点的直接上司,每个职员有一个快乐指数,现在要开会,职员和职员的直接上司不能同时开会,问怎才能使开会的快 ... 
- 树状DP HDU1520 Anniversary party
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意:职员之间有上下级关系,每个职员有自己的happy值,越高在派对上就越能炒热气氛.但是必须是 ... 
- HDU 4714 Tree2cycle(树状DP)(2013 ACM/ICPC Asia Regional Online ―― Warmup)
		Description A tree with N nodes and N-1 edges is given. To connect or disconnect one edge, we need 1 ... 
- poj2486--Apple Tree(树状dp)
		Apple Tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7789 Accepted: 2606 Descri ... 
- 洛谷P2015 二叉苹果树(树状dp)
		题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的结点的编号来 ... 
随机推荐
- C++之路进阶——codevs2306(晨跑)
			2306 晨跑 2009年省队选拔赛山东 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题目描述 Description Elaxia最近迷恋 ... 
- HDU - 1875 畅通工程再续
			Problem Description 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问 ... 
- asp .Net TreeView实现数据绑定和事件响应
			最近做了一个图书馆管理系统,其中要实现中图法分类号查询,因为初学asp ,感觉还有点难度, 第一步:数据库文件 第二步 向界面中拖进TreeView控件 第三步添加事件 下面是cs文件代码 //Tre ... 
- Problems with MMM for mysql(译文)
			Problems with mmm for mysql posted in MySQL by shlomi 原文:http://code.openark.org/blog/mysql/problems ... 
- C# 隐藏标题栏 调整大小 并且移动窗口
			隐藏标题栏(窗口属性): 1.设置在该窗体的标题栏中是否显示控件框: this.ControlBox = false; 2.设置在该窗体的标题为空: this.Text = string.Empty; ... 
- s3c2440液晶屏驱动 (内核自带) linux-4.1.24
			自带有一部分驱动的配置信息,只要修改这部分就能支援 不同的液晶屏 - /arch/arm/mach-s3c24xx/mach-smdk2440.c 另一部分在 /drivers/video/fbdev ... 
- java反射小例子
			package com.txwsqk.reflect; public class Car { private String brand; private String color; private i ... 
- 写了一个简易的GBK文件向UTF8文件转换的工具
			package com.bocom.framework.util; import java.io.BufferedReader; import java.io.BufferedWriter; impo ... 
- Linux下如何查看高CPU占用率线程
			转于:http://www.cnblogs.com/lidabo/p/4738113.html 目录(?)[-] proc文件系统 proccpuinfo文件 procstat文件 procpidst ... 
- Volley 实现原理图
			1.启动requestQueue 2. 添加请求 3. 启动cacheDispatcher 4.启动networkDispatcher 5. 数据分发 
