题目链接

题意:给你一个树形图,让你把其中若干个结点染成黑色,其余的染成白色,使得任意一个白色结点都恰好与一个黑色结点相邻。

解法比较容易,和树上的最大独立集类似,取一个结点作为树根,对每个结点分三种情况讨论即可:自己是黑色,自己是白色而父亲是黑色,自己和父亲都是白色。

但关键在于这道题如果用inf来作为不合法状态的dp值的话,会导致在dp的过程中有多个inf相加而炸掉!!习惯把inf设成0x3f3f3f3f或者0x7fffffff的选手们要杯具了。

解决方法有很多,比如把inf设小一点,把int改成longlong等等都可以。比较保险的方法是在运算的过程中如果超过inf就立即改成inf,这样只要保证两个inf相加不会溢出就行了,这时候0x3f3f3f3f的好处就体现出来了,两个0x3f3f3f3f相加之后仍不超过int上限。

这是我第一次爆inf的经历,为什么其他的题都不爆inf,偏偏在这道题上爆了呢?我也想不出一个比较中肯的解释,大概是inf的存在就是为了简化判断,而本身没什么实际意义吧,因此会出现不可预料的结果应该也是正常的,引以为戒。

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e4+,inf=0x3f3f3f3f;
struct E {int v,nxt;} e[N<<];
int n,d[N][],hd[N],ne;
void addedge(int u,int v) {e[ne]= {v,hd[u]},hd[u]=ne++;}
void dp(int u,int fa) {
for(int i=hd[u]; ~i; i=e[i].nxt) {
int v=e[i].v;
if(v==fa)continue;
dp(v,u);
}
d[u][]=,d[u][]=,d[u][]=inf;
for(int i=hd[u]; ~i; i=e[i].nxt) {
int v=e[i].v;
if(v==fa)continue;
d[u][]+=min(d[v][],d[v][]);
d[u][]=min(d[u][],inf);
}
for(int i=hd[u]; ~i; i=e[i].nxt) {
int v=e[i].v;
if(v==fa)continue;
d[u][]+=d[v][];
d[u][]=min(d[u][],inf);
}
for(int i=hd[u]; ~i; i=e[i].nxt) {
int v=e[i].v;
if(v==fa)continue;
d[u][]=min(d[u][],d[u][]+d[v][]-d[v][]);
d[u][]=min(d[u][],inf);
}
} int main() {
while(scanf("%d",&n)==) {
memset(hd,-,sizeof hd),ne=;
for(int i=; i<n; ++i) {
int u,v;
scanf("%d%d",&u,&v);
addedge(u,v);
addedge(v,u);
}
dp(,-);
printf("%d\n",min(d[][],d[][]));
int ff;
scanf("%d",&ff);
if(ff==-)break;
}
return ;
}

UVA - 1218 Perfect Service (树形dp)(inf相加溢出)的更多相关文章

  1. UVA - 1218 Perfect Service(树形dp)

    题目链接:id=36043">UVA - 1218 Perfect Service 题意 有n台电脑.互相以无根树的方式连接,现要将当中一部分电脑作为server,且要求每台电脑必须连 ...

  2. UVa 1218 - Perfect Service

    /*---UVa 1218 - Perfect Service ---首先对状态进行划分: ---dp[u][0]:u是服务器,则u的子节点可以是也可以不是服务器 ---dp[u][1]:u不是服务器 ...

  3. UVA - 1218 Perfect Service (树形DP)

    思路:dp[i][0]表示i是服务器:dp[i][1]表示i不是服务器,但它的父节点是服务器:dp[i][2]表示i和他的父亲都不是服务器.       转移方程: d[u][0] += min(d[ ...

  4. UVa 1218 - Perfect Service(树形DP)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  5. UVa 1218 Perfect Service 完美的服务

    ***状态设计值得一看dp[u][0]表示u是服务器(以下v均指任意u的子结点,son指u的所有子结点)ap[u][0]=sum{dp[v][1]}+1//错误,服务器是可以和其他服务器相邻的dp[u ...

  6. POJ3398Perfect Service[树形DP 树的最大独立集变形]

    Perfect Service Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1518   Accepted: 733 De ...

  7. UVa 10859 - Placing Lampposts 树形DP 难度: 2

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  8. Uva LA 3902 - Network 树形DP 难度: 0

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  9. UVa 12093 Protecting Zonk (树形DP)

    题意:给定一个有n个节点的无根树,有两种装置A和B,每种都有无限多个.在某个节点X使用A装置需要C1的花费,并且此时与节点X相连的边都被覆盖.在某个节点X使用B装置需要C2的花费,并且此时与节点X相连 ...

随机推荐

  1. Django_随机验证码

    随机验证码 Python生成随机验证码,需要使用PIL模块. 安装: pip3 install pillow 基本使用 1. 创建图片 from PIL import Image img = Imag ...

  2. iOS 认识runtime 中的三个指针 isa , IMP , SEL

    runtime中函数调用经常被提及的三个概念 isa,IMP,SEL 一  isa:是类指针,之所以说isa是指针是因为Class其实是一个指向objc_class结构体的指针,而isa 是它唯一的私 ...

  3. third application :Directions widget

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  4. imx6solo wm8960始终没有声音输出

    我尝试各种办法,wm8960始终不能得到声音输出.调试过程如下: 首先,打开电源使能脚: ret=gpio_request(SABRESD_CODEC_PWR_EN,"audio_pwr_e ...

  5. Linux挂载Windows共享目录

    在windows中设置共享目录并添加权限用户 把Window系统的文件共享挂载到linux centos 目录下的方法步骤: 1.先在windows下面共享需要挂载的目录. 2.确保linux与win ...

  6. CentOS 7卸载mariadb安装mysql

    CentOS 7已经将默认集成mariadb而不是mysql,这对于多数还是依赖于mysql的应用来说,需要手动的进行更新. 可能会遇到这样错误,换成MySQL就好了. error 2002 (hy0 ...

  7. 大话设计模式之PHP篇 - 策略模式

    什么是策略模式? 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化. 组成:抽象策略角色: 策略类,通常由一个接口或者抽象 ...

  8. .NET应用程序默认使用管理员身份打开

    1.在源码的Properties目录中找到 app.manifest(如果没有进入第二步,有跳过第二步) 2.如果没有app.manifest文件可以打开项目属性,找到安全性项,勾上启用 ClickO ...

  9. 微服务(MicroServices)

    微服务Architecture(MicroServices) 微服务架构简单的定义 采用一组Service的方式来构建一个应用,服务独立部署在不同的进程(Container)中,不同Service通过 ...

  10. Jquery 获取地址位置

    直接在浏览器地址 输入: http://pv.sohu.com/cityjson?ie=utf-8 可以查看数据格式 引入一个搜狐的js库: <script src="http://p ...