题目链接:hdu 4799 LIKE vs CANDLE

解题思路

dp[i][0]表示第i个节点不翻转的最优解,dp[i][1]表示翻转的最优解,每个位置翻转的代价到其父亲节点的位置再计算。

代码

#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#include <algorithm>using namespace std;
typedef long long ll;
const int maxn = 50005;int N, X[2], W[maxn], F[maxn], V[maxn];
vector<int> G[maxn];
int dp[maxn][2];void init () {int u;for (int i = 0; i <= N; i++) G[i].clear();for (int i = 1; i <= N; i++) {scanf("%d%d%d%d", &W[i], &u, &F[i], &V[i]);if (V[i]) W[i] *= -1;G[u].push_back(i);}
}int dfs(int u, int d) {d ^= F[u];if (d) W[u]  = - W[u];dp[u][0] = W[u];dp[u][1] = -W[u];for (int i = 0; i < G[u].size(); i++) {int v = G[u][i];dfs(v, d);dp[u][0] += max(dp[v][0], dp[v][1] - X[F[v]]);dp[u][1] += max(dp[v][0] - X[F[v]], dp[v][1]);}return dp[u][0];
}int main () {while (scanf("%d%d%d", &N, &X[0], &X[1]) == 3) {init();int ans = dfs(0, 0);if (ans < 0) printf("HAHAHAOMG\n");else printf("%d\n", ans);}return 0;
}

hdu 4799 LIKE vs CANDLE(树形dp)相关推荐

  1. HDU 1520 Anniversary party(树形dp)

    HDU 1520 Anniversary party(树形dp) 树形dp第一题!!! 题意很清晰,思路也很明确.很容易找到根节点,即最大的boss,通过根节点向下dp. 状态转移方程: int to ...

  2. 【题解】hdu 3586 Information Disturbing 二分 树形dp

    题目描述 Information Disturbing Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Jav ...

  3. HDU 3586 Information Disturbing (树形DP,二分)

    题意: 给定一个敌人的通信系统,是一棵树形,每个节点是一个敌人士兵,根节点是commander,叶子是前线,我们的目的是使得敌人的前线无法将消息传到commander,需要切断一些边,切断每条边需要一 ...

  4. 【HDU - 6567】Cotree(树形dp,思维)

    题干: Avin has two trees which are not connected. He asks you to add an edge between them to make them ...

  5. 动态规划--树形DP

    动态规划--树形DP  1.什么是树型动态规划  顾名思义,树型动态规划就是在"树"的数据结构上的动态规划,平时作的动态规划都是线性的或者是建立在图上的,线性的动态规划有二种方向既 ...

  6. fwt优化+树形DP HDU 5909

    1 //fwt优化+树形DP HDU 5909 2 //见官方题解 3 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ 4 5 #include ...

  7. HDU 2196 Computer 树形DP经典题

    链接:http://acm.hdu.edu.cn/showproblem.php? pid=2196 题意:每一个电脑都用线连接到了还有一台电脑,连接用的线有一定的长度,最后把全部电脑连成了一棵树,问 ...

  8. hdu 5909 Tree Cutting——点分治(树形DP转为序列DP)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5909 点分治的话,每次要做一次树形DP:但时间应该是 siz*m2 的.可以用 FWT 变成 siz*ml ...

  9. hdu 1561 The more, The Better 树形dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1561 做树形dp比较小. 先上网学习下,总结下套路. dp[i][j]表示在第i个节点,有j个名额选的时候的最大 ...

最新文章

  1. 思科AP与交换机端口的配置
  2. shell监控MySQL服务是否正常
  3. Windows10怎么创建后门?
  4. QT之QHash简介
  5. 英语口语 week12 Thursday
  6. centos7和scientific linux7里面调出中文输入法
  7. VS2012程序打包部署详解
  8. CSS效果:固定页脚、PNG透明、最小高度 3枚
  9. 程序员面试金典——3.6双栈排序
  10. 机器学习算法篇:谈Softmax激活函数以及Softmax回归和Logistic回归关系
  11. android向DDR读写数据,解决刷机回安卓时提示:Romcode/初始化DDR/读取初始化结果/USB...的问题...
  12. 计算机无法装补丁,win7系统安装不了SP1补丁包怎么办 win7电脑SP1补丁包安装失败的解决方法...
  13. PSM价格敏感度模型
  14. Android新浪微博分页加载,Android仿新浪微博分页管理界面(3)
  15. 关于容斥定理、勾股数公式、排列组合置换公式的总结
  16. java计算机毕业设计校园爱心公益平台设计与实现MyBatis+系统+LW文档+源码+调试部署
  17. ffmpeg截取一段视频中一段视频
  18. 【javaweb简单教程】1.搭建Web环境、初识JSP
  19. dB,dBi和dBm的区别
  20. android layout文件夹下新建子文件夹 及解决文件夹爆红

热门文章

  1. linux下json数据解析,JSON数据解析 - iOS学习笔记_Linux编程_Linux公社-Linux系统门户网站...
  2. Mac鼠标左右键轻松互换
  3. 自动计算器c语言,C语言实现计算器
  4. 当edquota命令不能使用的时候
  5. 液晶内存带头 诸多其它配件价格也大涨
  6. 【数据结构课设】数据压缩与解压缩(java实现 javafx实现GUI)
  7. Python day3 Python中raw字符串与多行字符串
  8. 全栈学习之JavaWeb基础
  9. 最新苏州大学计算机系宿舍,苏州大学宿舍条件,宿舍环境图片(10篇)
  10. 苏州大学计算机学院保研条件,2018年苏州大学保研推免接收办法