HDU 4003 [树][贪心][背包]
/*
大连热身A题
不要低头,不要放弃,不要气馁,不要慌张
题意:
给一棵树,每条边上有权值。给一个起点,放置n个机器人,要求使得任意一个节点至少被一个机器人经过。
每个机器人经过某条边时的代价为这条边的权值。反复经过需要反复累积。
问最小的代价是什么。 思路:
1.转化为背包问题。考虑给某个子树i个机器人的最小代价,即有i个机器人跑到某棵子树不回来。其中0个代表给某子树一个机器人,该机器人
遍历完该子树所有节点以后又返回该节点的代价。然后相当于每棵子树有几个物品,至少从中选择一个。进行分组背包。
2.为什么以上转化是成立的,即是否有可能把某个机器人指派到某棵子树以后,该机器人又跑到其它子树,最后停留在其它子树,而能使得花
费的代价更优。事实是不可能的,因为如果该节点跑到子树的某个叶子节点又返回母亲节点,代价肯定比一开始就指派给该子树的机器人,让
它先走到那个节点所经过的叶子节点,再回到子树的根花费的代价要大。所以可以将这个问题转化为分组背包。 */
#include<bits/stdc++.h>
#define N 10060
using namespace std;
long long dp[N][][];
int k;
int fa[N];
long long inf=0x3f3f3f3f3f3f3f3f;
struct edge{
int id;
long long w;
edge *next;
};
int ednum;
edge *adj[N];
edge edges[N<<];
inline void addedge(int a,int b,long long w){
edge *tmp=&edges[ednum++];
tmp->id=b;
tmp->w=w;
tmp->next=adj[a];
adj[a]=tmp;
}
void dfs(int pos){
bool ok=;
for(edge *it=adj[pos];it;it=it->next){
if(!fa[it->id]){
ok=;
fa[it->id]=pos;
dfs(it->id);
dp[pos][][]+=dp[it->id][][]+*it->w;
}
}
if(ok){
for(int i=;i<=k;i++)dp[pos][][i]=inf;
for(edge *it=adj[pos];it;it=it->next){
memset(dp[pos][],0x3f,sizeof(dp[pos][]));
if(fa[it->id]==pos){
for(int i=;i<=k;i++){
for(int j=i;j<=k;j++){
if(dp[pos][][j-i]!=inf)
dp[pos][][j]=min(dp[pos][][j-i]-dp[it->id][][]+(i-)*it->w+dp[it->id][][i],dp[pos][][j]);
}
}
for(int i=;i<=k;i++)dp[pos][][i]=min(dp[pos][][i],dp[pos][][i]);
}
}
}
}
int main()
{
int n,s;
while(scanf("%d%d%d",&n,&s,&k)!=EOF){
memset(adj,NULL,sizeof(adj));
ednum=;
for(int i=;i<n;i++){
int a,b;
long long w;
scanf("%d%d%lld",&a,&b,&w);
addedge(a,b,w);
addedge(b,a,w);
}
memset(fa,,sizeof(fa));
fa[s]=s;
memset(dp,,sizeof(dp));
dfs(s);
long long ans=inf;
for(int i=;i<=k;i++)ans=min(ans,dp[s][][i]);
printf("%lld\n",ans);
}
}
HDU 4003 [树][贪心][背包]的更多相关文章
- HDU 4003 (树形DP+背包)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4003 题目大意:有K个机器人,走完树上的全部路径,每条路径有个消费.对于一个点,机器人可以出去再回来 ...
- HDU 1561:The more, The Better(有依赖的树型背包)
http://acm.hdu.edu.cn/showproblem.php?pid=1561 题意:有n个点,容量为m,每个点有一个价值,还给出n条边,代表选第i个点之前必须先选ai,问最多的价值能取 ...
- POJ 3345-Bribing FIPA(树状背包)
题意: 有n个国家投票,要得到一个国家的投票有一定的花费,如果给到一个国家的票同时也得到了它所有附属国的票,给出国家关系树,求至少得到m票的最小花费. 分析:基础树状背包,dp[i][j],以i为根的 ...
- hdu 2546 典型01背包
分析:每种菜仅仅可以购买一次,但是低于5元不可消费,求剩余金额的最小值问题..其实也就是最接近5元(>=5)时, 购买还没有买过的蔡中最大值问题,当然还有一些临界情况 1.当余额充足时,可以随意 ...
- poj3764(dfs+Trie树+贪心)
题目链接:http://poj.org/problem?id=3764 分析:好题!武森09年的论文中有道题CowXor,求的是线性结构上的,连续序列的异或最大值,用的办法是先预处理出前n项的异或值, ...
- HDU 3127 WHUgirls(完全背包)
HDU 3127 WHUgirls(完全背包) http://acm.hdu.edu.cn/showproblem.php? pid=3127 题意: 如今有一块X*Y的矩形布条, 然后有n种规格的x ...
- hdu 5893 (树链剖分+合并)
List wants to travel Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/O ...
- hdu 5052 树链剖分
Yaoge’s maximum profit Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/ ...
- hdu 4897 树链剖分(重轻链)
Little Devil I Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others ...
随机推荐
- cocos2d3.x在android下屏蔽多点触控
ios上很简单的在AppController.mm里 [eaglView setMultipleTouchEnabled:YES] 设置为NO,就是单点触控了,无需更改cocos底层代码; andro ...
- cs231n笔记:线性分类器
cs231n线性分类器学习笔记,非完全翻译,根据自己的学习情况总结出的内容: 线性分类 本节介绍线性分类器,该方法可以自然延伸到神经网络和卷积神经网络中,这类方法主要有两部分组成,一个是评分函数(sc ...
- C++模板实例化
深入理解C++中第七章提到模板实例化参数的选择:函数的决议结果只和函数参数有关和返回值无关.记录一下. 测试程序如下: #include <iostream> using namespac ...
- 华为U8810的用户如何获取ROOT权限详细教程
由于在论坛里看到有人在找这个手机的详细的root教程,所以刷机啦小编在这里整理了一下方便新手来操作,其实这个手机root起来还是蛮简单的,只需要一个root软件就可以了,相当于一键root了,在这里整 ...
- 两个list取不同值
转自同名博文,未知真正出处,望作者见谅 如题:有List<String> list1和List<String> list2,两个集合各有上万个元素,怎样取出两个集合中不同的元素 ...
- Github账户注册的过程
首先我通过冯老师的博客园帖子中的链接进入了注册地址,填写了用户名,邮箱,和密码.然后我进入我的邮箱验证了Github网站给我发送的验证信息,至此,我的GITHUB账户便注册完成了.
- 使用gnucash查看任意时间段内的所有者权益变动表
gnucash默认会以当年的会计账期显示所有者权益变动表 如果要看指定时间的所有者权益变动表,需要这样做 打开所有者权益变动表 点击上面的[选项] 如图 在常规中自行选择日期 确定后就能够看到指定时间 ...
- Android 的 DatePicker、TimePicker或NumberPicker
布局文件加上这个就可以,去除日期选择器.时间选择器或数值选择器的可编辑状态. android:descendantFocusability="blocksDescendants" ...
- 【转载】ANSYS TRANSIENT ANSLYSIS [2]
原文地址:http://sps.utm.my/wp-content/uploads/2014/12/ANSYS-day2-Transient-analysis.pdf
- ftplib模块
Python中的ftplib模块 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件 FTP的工作流程及基本操作可参考协议RFC95 ...