$loj10156/$洛谷$2016$ 战略游戏 树形$DP$
Desription
Bob 喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的方法。现在他有个问题。
现在他有座古城堡,古城堡的路形成一棵树。他要在这棵树的节点上放置最少数目的士兵,使得这些士兵能够瞭望到所有的路。
注意:某个士兵在一个节点上时,与该节点相连的所有边都将能被瞭望到。
请你编一个程序,给定一棵树,帮 Bob 计算出他最少要放置的士兵数。
Sol
状态:
f[i][0]表示i不放士兵时,以i为根的子树所需要的最小士兵数
f[i][1]表示i放士兵时,以i为根的子树所需要的最小士兵数
转移:
f[i][0]:i不放,那么它的子结点都要放
f[i][1]:i放,那么它的子结点可放可不放,取小即可
感觉比较板子题QwQ
Code
(It was written long long ago.)
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int r()
{
int x=,y=;;char ch;
ch=getchar();
while(ch<''||ch>'') {if(ch=='-') y=-;ch=getchar();}
while(ch>=''&&ch<='') {x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*y;
}
int n;
int num[];
bool ff[];
vector<int> son[];
int root;
void read()
{
n=r();
for(int i=;i<n;i++)
{
i=r();
num[i]=r();
for(int j=;j<=num[i];j++)
{
int x=r();
son[i].push_back(x);
ff[x]=;
}
}
while(ff[root]) root++;
}
int f[][];
void dp(int x)
{
f[x][]=;
f[x][]=;
if(num[x]==) return ;
for(int i=;i<num[x];i++)
{
int y=son[x][i];dp(y);
f[x][]+=f[y][];
f[x][]+=min(f[y][],f[y][]);
}
}
int main()
{
read();
dp(root);
int ans=min(f[root][],f[root][]);
printf("%d",ans);
return ;
}
随机推荐
- pytorch学习笔记(十二):详解 Module 类
Module 是 pytorch 提供的一个基类,每次我们要 搭建 自己的神经网络的时候都要继承这个类,继承这个类会使得我们 搭建网络的过程变得异常简单. 本文主要关注 Module 类的内部是怎么样 ...
- Handler用法总结
一.线程通讯问题 1.1 Message.Handler.Looper 在Android中提供了一种异步回调机制Handler,我们可以它来完成一个很长时间的任务. Handler基本使用: 在主线程 ...
- PythonWeb框架之Django
Django 简介: Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的框架模式,即模型Model,模板Template和视图View.此框架设计模式借鉴了MVC框架的思 ...
- HDU 1071
题意:就是求给你一个抛物线的三个点,第一个给定的点是抛物线的顶点,让你求直线p2p3与抛物线的定积分 思路:因为题目条件给了顶点,所以直接用抛物线的顶点式去求. 本弱弱数学太差.还得复习一下公式 #i ...
- Bi-LSTM-CRF for Sequence Labeling
做了一段时间的Sequence Labeling的工作,发现在NER任务上面,很多论文都采用LSTM-CRFs的结构.CRF在最后一层应用进来可以考虑到概率最大的最优label路径,可以提高指标. 一 ...
- tf.contrib.layers.xavier_initializer
https://blog.csdn.net/yinruiyang94/article/details/78354257xavier_initializer( uniform=True, seed=No ...
- [转]什么是CNN、RNN、LSTM
. 全连层 每个神经元输入: 每个神经元输出: (通过一个激活函数) 2. RNN(Recurrent Neural Network) 与传统的神经网络不通,RNN与时间有关. 3. LSTM(Lon ...
- 4-3 xpath的用法
- H3C 出站包过滤工作流程
- 11-28\enum
1.创建一个枚举对象,对象中4个属性video视频.book书----(这2个属性可以用数字表示). 2.创建一个class对象,对象中有2个属性,一个是id属性(自己设置),第二个属性是type类型 ...