博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2412 Party at Hali-Bula (树形DP)
阅读量:5101 次
发布时间:2019-06-13

本文共 1832 字,大约阅读时间需要 6 分钟。

题意跟hdu1520一样,给定一棵树,要求选出若干个点,但如果选择了父节点跟儿子节点不可以同时选。。求可以选出的节点数的最大值,同时,判断该选法是否唯一;

分析:前半部分很容易实现,普通的树形dp,关键是如何判断是否唯一。

我们用flag[N][2]来记录每一个节点的情况

flag[i][j]为真,表示唯一

则可以这样判断

对于叶子结点, flag[k][0] = flag[k][1] = 1.
对于非叶子结点,
对于i的任一儿子j,若(dp[j][0] > dp[j][1] 且 flag[j][0] == 0) 或 (dp[j][0] < dp[j][1] 且 flag[j][1] == 0) 或 (dp[j][0] == dp[j][1]),则flag[i][0] = 0
对于i的任一儿子j有flag[j][0] = 0, 则flag[i][1] = 0
View Code
#include
#include
#include
#include
using namespace std; const int N =210; int n,num,dp[N][2]; vector
g[N]; bool flag[N][2]; typedef struct node { int cnt; struct node *next[52]; }*tree,Trie; tree root; inline int GetNum(char *t){ tree p = root,newnode; for(int i = 0;i < strlen(t); ++i){ int u = t[i] - 'a'; if(u<0) u=t[i]-'A'+26; if(p->next[u]==NULL) { newnode=(tree)malloc(sizeof(Trie)); newnode->cnt=-1; for(int j=0;j<52;j++) newnode->next[j]=NULL; p->next[u]=newnode; p=newnode; } else p = p->next[u]; } if(p->cnt == -1) //该节点未出现过 p->cnt = num ++; return p->cnt; } void init() {
root=(tree)malloc(sizeof(Trie)); root->cnt=-1; for(int j=0;j<52;j++) root->next[j]=NULL; num=1; for(int i=0;i<=n;i++) g[i].clear(); memset(dp,0,sizeof(dp)); memset(flag,true,sizeof(flag)); } void dfs(int u) {
int size=g[u].size(); for(int i=0;i
dp[v][1] && !flag[v][0])|| (dp[v][0]
dp[s][1] && flag[s][0]) puts("Yes"); else if(dp[s][1]>dp[s][0] && flag[s][1]) puts("Yes"); else puts("No"); } return 0; }

转载于:https://www.cnblogs.com/nanke/archive/2012/03/07/2384421.html

你可能感兴趣的文章
PyQt5--EventSender
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>
Java 多态 虚方法
查看>>
Unity之fragment shader中如何获得视口空间中的坐标
查看>>
万能的SQLHelper帮助类
查看>>
uboot分析:uboot的启动过程分析
查看>>
tmux的简单快捷键
查看>>
springboot笔记04——读取配置文件+使用slf4j日志
查看>>
[Swift]LeetCode653. 两数之和 IV - 输入 BST | Two Sum IV - Input is a BST
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
微信小程序的wxml文件和wxss文件在webstrom的支持
查看>>
Html5 离线页面缓存
查看>>
[php]在PHP中读取和写入WORD文档的代码
查看>>
WCF傻瓜模式写程序
查看>>
《绿色·精简·性感·迷你版》易语言,小到不可想象
查看>>
Java Web学习总结(13)Listener监听器
查看>>
开始Flask项目
查看>>
Ruby:多线程队列(Queue)下载博客文章到本地
查看>>
Android打包key密码丢失找回
查看>>
03 jQuery动画
查看>>