树形dp - BNU 39572 Usoperanto
Usoperanto
Problem's Link
Mean:
给定n个单词,每个单词可以作为形容词来修饰其他单词.
如果当前单词Wi修饰Wj,那么这个修饰的代价是:Wi~Wj之间的单词的总长度.
你需要按照给定的修饰关系来安排单词的顺序,使得所有修饰代价的和最小.
analyse:
比赛时想到的是使用bfs+priority_queue来贪心,后来发现如果单词是嵌套的话,贪心就有问题.
首先根据修饰关系来构图,注意这里应该是森林而不是树,这也是本题的一个trick.
根结点不被任何结点修饰,叶结点不修饰任何结点.
建好图以后,对于每一棵树,从叶结点开始向上dp.
dp的策略:
对于当前结点,把他的所有儿子排序,然后按照前缀和累加权值(除最后一个).
然后把当前的结点所代表的子树打包(看成一个结点),累加子树的权值,往上传递.
Time complexity: O(N)
树形dp - BNU 39572 Usoperanto的更多相关文章
- 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 ...
- BZOJ 2286 消耗战 (虚树+树形DP)
给出一个n节点的无向树,每条边都有一个边权,给出m个询问,每个询问询问ki个点,问切掉一些边后使得这些顶点无法与顶点1连接.最少的边权和是多少.(n<=250000,sigma(ki)<= ...
- POJ2342 树形dp
原题:http://poj.org/problem?id=2342 树形dp入门题. 我们让dp[i][0]表示第i个人不去,dp[i][1]表示第i个人去 ,根据题意我们可以很容易的得到如下递推公式 ...
- hdu1561 The more, The Better (树形dp+背包)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1561 思路:树形dp+01背包 //看注释可以懂 用vector建树更简单. 代码: #i ...
- bzoj2500: 幸福的道路(树形dp+单调队列)
好题.. 先找出每个节点的树上最长路 由树形DP完成 节点x,设其最长路的子节点为y 对于y的最长路,有向上和向下两种情况: down:y向子节点的最长路g[y][0] up:x的次长路的g[x][1 ...
随机推荐
- C++ 生成
1.重新生成,会导致所有cpp文件重新编译,然后连接. 2.使用生成,只会对需要重新编译的cpp文件,进行编译. a.修改cpp文件方法实现,只需要重新编译该cpp文件 b.修改h文件的接口部分,包含 ...
- const 与过载
1.方法包括方法名,返回类型,形参表,修饰符. 2.对于一个方法,const可以出现的地方有返回类型,形参表,和方法后(const成员方法). 3.返回类型的常量性(是否为const)不同,不能构成过 ...
- iOS 图片比例缩放
方法 //Resize image - (UIImage *)resizeImage:(UIImage *)image withQuality:(CGInterpolationQuality)qual ...
- PHP - AJAX 与 PHP
PHP - AJAX 与 PHP AJAX 被用于创建交互性更强的应用程序. AJAX PHP 实例 下面的实例将演示当用户在输入框中键入字符时,网页如何与 Web 服务器进行通信: 实例 尝试在输入 ...
- redis配置密码的方法
打开redis.conf配置文件,找到requirepass,然后修改如下: requirepass yourpasswordyourpassword就是redis验证密码,设置密码以后发现可以登陆, ...
- UISearchbar去除背景色的方法,适合iOS5/6/7/8.0beta
通常使用UISearchbar都须要去除其背景色来与自己的界面风格保持协调,可是UISearchbar的设计随着iOS版本号的升级不断地在发生着变化.以下我们通过分析UISearchbar在各个iOS ...
- Android画图之抗锯齿
在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿.其实Android自带了解决方式. 方法一:给Paint加上抗锯齿标志.然后将Paint对象作为参数传给canvas的绘制方法. ...
- jasmine-行为驱动测试
http://jasmine.github.io/1.3/introduction.html,先保留着,好好研究.
- log4cpp基础测试
// log4cplus.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h" #include <iostream>#include ...
- Java SSL证书的安装
https正在成为主流,http估计在不久的将来会被彻底放弃…… 一个Java程序需要访问一个https的网站的时候,可能需要涉及证书的安装,卸载等操作. 一.证书的下载 打开浏览器输入https:/ ...