树形DP入门总结
2015-07-27 18:22
351 查看
入门题:
poj2342,poj1463
从这两道题看,基本解题思路均为构造树(有向树),根据DP(01背包)解题。
末班代码:(1463)
#include<iostream>
#include<fstream>
#include<set>
#include<stack>
#include<cmath>
#include<cstring>
using namespace std;
typedef long long LL;
const int mx=2000;
int dp[mx][2];
int fa[mx];
int n;
void creat(int v)
{
for(int i=0;i<n;i++)
{
if(fa[i]==v)
{
creat(i);
dp[v][0]+=dp[i][1];
dp[v][1]+=min(dp[i][0],dp[i][1]);
}
}
}
int main( )
{
// freopen("in.txt","r",stdin);
while(scanf("%d",&n)!=EOF)
{
memset(fa,-1,sizeof(fa));
for(int i=1;i<=n;i++)
{
int u,unum;
scanf("%d:(%d)",&u,&unum);
for(int j=1;j<=unum;j++)
{
int v;
scanf("%d",&v);
fa[v]=u;
}
}
for(int i=0;i<n;i++)
dp[i][1]=1,dp[i][0]=0;
int root=-1;
for(int i=0;i<n;i++)
{
if(fa[i]==-1)
{
root=i;
break;
}
}
creat(root);
int ans=min(dp[root][0],dp[root][1]);
printf("%d\n",ans);
}
return 0;
}
poj2342,poj1463
从这两道题看,基本解题思路均为构造树(有向树),根据DP(01背包)解题。
末班代码:(1463)
#include<iostream>
#include<fstream>
#include<set>
#include<stack>
#include<cmath>
#include<cstring>
using namespace std;
typedef long long LL;
const int mx=2000;
int dp[mx][2];
int fa[mx];
int n;
void creat(int v)
{
for(int i=0;i<n;i++)
{
if(fa[i]==v)
{
creat(i);
dp[v][0]+=dp[i][1];
dp[v][1]+=min(dp[i][0],dp[i][1]);
}
}
}
int main( )
{
// freopen("in.txt","r",stdin);
while(scanf("%d",&n)!=EOF)
{
memset(fa,-1,sizeof(fa));
for(int i=1;i<=n;i++)
{
int u,unum;
scanf("%d:(%d)",&u,&unum);
for(int j=1;j<=unum;j++)
{
int v;
scanf("%d",&v);
fa[v]=u;
}
}
for(int i=0;i<n;i++)
dp[i][1]=1,dp[i][0]=0;
int root=-1;
for(int i=0;i<n;i++)
{
if(fa[i]==-1)
{
root=i;
break;
}
}
creat(root);
int ans=min(dp[root][0],dp[root][1]);
printf("%d\n",ans);
}
return 0;
}
相关文章推荐
- 美团Android自动化之旅—适配渠道包
- jquery checkbox勾选/取消勾选的诡异问题
- Balanced Numbers(数位+状压)
- 线程池的创建以及使用
- class
- 名字的漂亮度
- JVM 进阶五
- IOS中的block的retain循环
- CPU大小端字节序的检测
- 树型dp入门小节
- 【php】Apache无法自动跳转却显示目录与php无法连接mysql数据库的解决方案
- linux硬链接与软链接
- Android Studio里面新建aidl出现的问题
- JavaScript调用客户端Java程序的方法
- 关于a标签的下载功能
- 创建私有Cocoapods库
- STM32 SysTick 精确延时(非中断方式)
- Zabbix监控之检测程序日志中错误发生的次数
- hdoj 2647 Reward(逆向拓扑排序+队列)
- centOS下的nginx1.8.0多站点配置(同一IP,不同端口)