poj1463 树形dp
树形dp裸题,不过输入是真的恶心,要字符串读入考虑数字大于等于10的情况
dp[i][j]表示i的子树在j状态的最小的边集覆盖,j为0表示不选当前结点,1表示选
转移方程(u->x是u的所有子节点)dp[u][0]+=dp[x][1],dp[u][1]+=min(dp[x][0],dp[x][1]),dp[u][1]+=1(要选自己)
#include<cstdio>
#include<iostream>
#include<cstring>
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1 using namespace std;
using namespace __gnu_cxx; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f3f; struct edge{
int to,Next;
}e[N<<];
int dp[N][];
int head[N],cnt;
void add(int u,int v)
{
e[cnt].to=v;
e[cnt].Next=head[u];
head[u]=cnt++;
}
void dfs(int u,int f)
{
dp[u][]=;
for(int i=head[u];~i;i=e[i].Next)
{
int x=e[i].to;
if(x==f)continue;
dfs(x,u);
dp[u][]+=dp[x][];
dp[u][]+=min(dp[x][],dp[x][]);
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int n;
while(cin>>n)
{
memset(head,-,sizeof head);
cnt=;
for(int i=; i<n; i++)
{
string s;
cin>>s;
int a=,id=;
while(id+<s.size()&&s[id+]!=':')id++;
// cout<<id<<endl;
for(int i=;i<=id;i++)a=a*+(int)(s[i]-'');
// cout<<a<<endl;
int k=,id1=id+;
while(id1+<s.size()&&s[id1+]!=')')id1++;
for(int i=id+;i<=id1;i++)k=k*+(int)(s[i]-'');
// cout<<k<<endl;
while(k--)
{
int b;
cin>>b;
add(a,b);
add(b,a);
}
}
memset(dp,,sizeof dp);
dfs(,-);
cout<<min(dp[][],dp[][])<<endl;
}
return ;
}
/************
11
0:(10) 1 2 3 4 5 6 7 8 9 10
1:(0)
2:(0)
3:(0)
4:(0)
5:(0)
6:(0)
7:(0)
8:(0)
9:(0)
10:(0)
************/
poj1463 树形dp的更多相关文章
- POJ1463:Strategic game(树形DP)
Description Bob enjoys playing computer games, especially strategic games, but sometimes he cannot f ...
- poj1463 Strategic game【树形DP】
Strategic game Time Limit: 2000MS Memory Limit: 10000K Total Submissions: 9582 Accepted: 4516 De ...
- Strategic game树形DP解法(Poj1463,Uva1292)
已经写过本题用二分图的做法,见这儿. 本题的图是一棵树,求最小点覆盖也可以用树形DP的做法. 定义状态f[0/1][u]表示以u为根的子树,u选取/不选最少需要选取多少点来覆盖. 显然 f[0][u] ...
- 树形DP入门题目推荐以及解析
关于树形DP几道入门题目 今天恶补树形DP,感觉海星. 其实挺简单的. 介绍几道例题,我会的. 1.洛谷P1352 没有上司的舞会 我的一篇题解 我们可以考虑每一个节点都是有两种情况. 一个是被邀请: ...
- poj3417 LCA + 树形dp
Network Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4478 Accepted: 1292 Descripti ...
- COGS 2532. [HZOI 2016]树之美 树形dp
可以发现这道题的数据范围有些奇怪,为毛n辣么大,而k只有10 我们从树形dp的角度来考虑这个问题. 如果我们设f[x][k]表示与x距离为k的点的数量,那么我们可以O(1)回答一个询问 可是这样的话d ...
- 【BZOJ-4726】Sabota? 树形DP
4726: [POI2017]Sabota? Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 128 Solved ...
- 树形DP+DFS序+树状数组 HDOJ 5293 Tree chain problem(树链问题)
题目链接 题意: 有n个点的一棵树.其中树上有m条已知的链,每条链有一个权值.从中选出任意个不相交的链使得链的权值和最大. 思路: 树形DP.设dp[i]表示i的子树下的最优权值和,sum[i]表示不 ...
- 树形DP
切题ing!!!!! HDU 2196 Anniversary party 经典树形DP,以前写的太搓了,终于学会简单写法了.... #include <iostream> #inclu ...
随机推荐
- java限流(一): Semaphore
Before obtaining an item each thread must acquire a permit from the semaphore, guaranteeing that an ...
- /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15"" not found
解决错误 呈现该错误的原因是当前的GCC版本中,没有GLIBCXX_3.4.15,须要安装更高版本. 我们可以输入:strings /usr/lib/libstdc++.so.6 | grep GLI ...
- Latex技巧:LaTex插图命令includegraphics参数详解
Latex插图的命令是\includegraphics[选项]{文件} 这里的选项在表 7.1, 7.2, 7.3 中列出. 因为 \includegraphics 不会结束 当前段落,所以它能够在文 ...
- PowerDesigner数据模型(CDM—PDM)
操作过程 点击: Tools/Generate Physical Data Model
- WCF 远程服务器返回了意外响应: (400) Bad Request。
WCF 端 <system.web> <httpRuntime maxRequestLength="2147483647" /> </system. ...
- 3.5.基于STC89C52+MC20的短信远程控制开关LCD1602显示
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- 3.1 使用STC89C52控制MC20拨打电话
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- Loadrunder脚本篇——webservice接口测试(二)
1.选择协议--Web Service,如下图 2.导入服务 入口1:点击Manage Services ->弹出窗中选择“Import” ->弹出窗中选择“URL”,填写wsdl地址,导 ...
- 建议13:使用Python模块re实现解析小工具
# -*- coding:utf-8 -*- # ''' Python re 的主要功能: re.compile(pattern[, flags]) 把正则表达式的模式和标识转化成正则表达式对象,供 ...
- 【CodeChef】Enormous Input Test
The purpose of this problem is to verify whether the method you are using to read input data is suff ...