LOJ10157——皇宫看守(树形DP)
传送门:QAQQAQ
题意:在一个树上放置守卫,使每一个节点都至少有相邻一节点放置守卫,使最终经费最少
思路:树形DP
首先会想到没有上司的舞会,0表示不放守卫,1表示放守卫,但考虑到对于当前点不放守卫会有两种情况:
1.其父亲放守卫,则其儿子没必要放守卫
2.其父亲没放守卫,则其儿子必须至少有一个放守卫
所以思路就很明显了:dp1表示当前点放守卫,dp0表示当前点没守卫,其父亲有守卫,dp2表示当前没守卫,父亲没守卫,然后进行递推即可
读入时点可能是不按照顺序的,这点需要注意。
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=+;
const ll inf=; ll n,w[N],dp[N][];//0:father1now0 1:now1 2:father0now0
vector<ll> v[N]; ll checkmin(ll x,ll y,ll z)
{
return min(min(x,y),z);
} void dfs(ll u,ll f)
{
ll bl=,minn=inf;
for(ll i=;i<(ll)v[u].size();i++)
{
ll p=v[u][i];
if(p==f) continue;
dfs(p,u);
dp[u][]+=min(dp[p][],dp[p][]);
dp[u][]+=min(dp[p][],dp[p][]);
if(dp[p][]<=dp[p][])
{
bl=;
dp[u][]+=dp[p][];
}
else
{
dp[u][]+=dp[p][];
minn=min(minn,dp[p][]-dp[p][]);
}
}
dp[u][]+=w[u];
if(!bl) dp[u][]+=minn;
} int main()
{
scanf("%lld",&n);
for(ll i=;i<=n;i++)
{
ll tmp,m;
scanf("%lld",&tmp);
scanf("%lld%lld",&w[tmp],&m);
for(ll j=;j<=m;j++)
{
ll x;
scanf("%lld",&x);
v[tmp].push_back(x);
v[x].push_back(tmp);
}
}
memset(dp,,sizeof(dp));
dfs(,-);
printf("%lld",min(dp[][],dp[][]));
return ;
}
LOJ10157——皇宫看守(树形DP)的更多相关文章
- $Loj10157$ 皇宫看守 树形$DP$
loj Description 有一些宫殿,它们呈树形结构,相邻的宫殿之间可以互相望见.在一些宫殿设立士兵,使得所有的宫殿都有士兵或是被士兵望见.求最小士兵数. Sol 状态: f[x][0] 表示结 ...
- [Swust OJ 402]--皇宫看守(树形dp)
题目链接:http://acm.swust.edu.cn/problem/402/ Time limit(ms): 5000 Memory limit(kb): 65535 Description ...
- Vijos 1144 小胖守皇宫 【树形DP】
小胖守皇宫 描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步 ...
- Vijos1144小胖守皇宫【树形DP】
皇宫看守 太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫.皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全天候看 ...
- 【vijos1144】小胖守皇宫(树形DP)
描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步一哨,每个宫 ...
- 【题解】保安站岗[P2458]皇宫看守[LOJ10157][SDOI2006]
[题解]保安站岗[P2458]皇宫看守[LOJ10157][SDOI2006] 传送门:皇宫看守\([LOJ10157]\) 保安站岗 \([P2458]\) \([SDOI2006]\) [题目描述 ...
- 【树形dp】vijos1144小胖守皇宫
细节很精妙 描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步 ...
- 树形dp 之 小胖守皇宫
题目描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:有边相连的宫殿间可以互相望见.大内保卫森严,三步一岗,五步一 ...
- caioj 1111 树形动态规划(TreeDP)6: 皇宫看守 (状态设计)
这道题的难点在于状态怎么设计 这道题要求全部都是安全的,所以我们做的时候自底向上每一个结点都要是安全的 结合前一题当前结点选和不选,我们可以分出四种情况出来 选 安全 选 不安全 不选 安全 不选 不 ...
随机推荐
- 注解到处excel
package com.cxy.domain.poi; import java.lang.annotation.ElementType; import java.lang.annotation.Ret ...
- C#下面的次幂表达
嗯,一个错误.不能用x^y表达,要用math.pow(x,y).
- 《移山之道》第十一章:两人合作 读书笔记 PB16110698 第六周(~4.15)
本周在考虑阅读材料时,我翻阅了<移山之道>,正好看到这一章:两人合作,心想:正好,我们正值结对作业的紧要关头,书中两人合作的宝贵经验和教诲应当对我们有很大帮助.于是,我开始一边在ddl苦 ...
- Java获取文件Content-Type(Mime-Type)
Java获取文件Content-Type(Mime-Type) 刚好工作中要用到,所以总结一下.推荐使用第一种和第三种,实在不行,也可以去把http://tool.oschina.net/common ...
- leetcode-212-单词搜索②
题目描述: 第一次提交:(超出时间限制) class Solution: def findWords(self, board: List[List[str]], words: List[str]) - ...
- 0921CSP-S模拟测试赛后总结
倒数第一祭. 感觉T3数据范围50可以qj一下.于是押了T3. 然后两个小时调我4.1k的bfs.最后调出来了发现策略错了.十分绝望. T120分吊住了.十分难过.倒数第一了.还是实力不行. 不应该押 ...
- 巧用android:divider属性设置LinearLayout中元素之间的间隔
如上图,要想实现3个button线性排列并且使它们的大小相同.间隔相等.而且整体填充满整个linearlayout,我们一般的做法是在每两个button之间放一个固定宽度的view,然后设置butto ...
- (转)HttpURLConnection中设置网络超时
转:http://www.xd-tech.com.cn/blog/article.asp?id=37 Java中可以使用HttpURLConnection来请求WEB资源.HttpURLConnect ...
- linux安装PyCharm,PyCharm常用快捷键及调试模式,pycharm里面对文件夹或者文件进行重命名
PyCharm常用快捷键及调试模式 2017年10月18日 23:13:43 菜鸟之神 阅读数:5835 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn ...
- 用VC生成 IDispatch 包装类
1.创建包装类:View->ClassWizard->Add Class->Add Class From ActiveX Control Wizard 2 .选中Registry 3 ...