Uva 1218 完美的服务】的更多相关文章

题目链接:https://uva.onlinejudge.org/external/12/1218.pdf 题意: 一个网络,选出一些点做服务器,使满足一些条件,求服务器最少数量.条件是,每个计算机恰有一台服务器相连. 分析: 对于每个节点,都有3种状态,1.他是服务器 d(u,0),2.他不是服务器,但是父亲是的 d(u,1),如果他父亲是服务器,将影响他的接下来的决策.3.他不是服务器,父亲也不是服务器 d(u,2); 那么: d(u,0) = sum{max{d(v,0),d(v,1)}}…
题目链接:id=36043">UVA - 1218 Perfect Service 题意 有n台电脑.互相以无根树的方式连接,现要将当中一部分电脑作为server,且要求每台电脑必须连接且仅仅能连接一台server(不包含作为server的电脑).求最少须要多少台电脑作为server. 思路 典型的树形dp问题,那么我们来建立模型. d(u,0):u是server,孩子是不是server均可 d(u,1):u不是server,u的父亲是server,u的孩子不能是server d(u,2)…
/*---UVa 1218 - Perfect Service ---首先对状态进行划分: ---dp[u][0]:u是服务器,则u的子节点可以是也可以不是服务器 ---dp[u][1]:u不是服务器,但u的父节点是服务器,则u的所有儿子节点都不是服务器 ---dp[u][2]:u和u的父亲都不是服务器,则u的儿子恰好有一个是服务器 ---状态转移方程: ---dp[u][0]=sum{min(dp[v][0],dp[v][1])}+1 ---dp[u][1]=sum(dp[v][2]); --…
***状态设计值得一看dp[u][0]表示u是服务器(以下v均指任意u的子结点,son指u的所有子结点)ap[u][0]=sum{dp[v][1]}+1//错误,服务器是可以和其他服务器相邻的dp[u][0]=sum{min(dp[v][0],dp[v][1])}+1dp[u][1]表示u不是服务器,但是父亲是,显然子结点不是dp[u][1]=sum{dp[v][2]}dp[u][2]表示u和父亲都不是服务器,但自身有一个子结点是此情况-1表示不可能满足***dp[u][2]=min{dp[v]…
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3659 题意: 有n(n≤10000)台机器形成树状结构.要求在其中一些机器上安装服务器,使得每台不是服务器的计算机恰好和一台服务器计算机相邻.求服务器的最少数量. 分析: 按照每个结点的情况进行分类:一.d(u,0):u是服务器,则每个子结点可以是服务器也可以不是.二.d(u,1)…
项目需求: jsonp是从前台js的角度考虑,通过Ajax调用springMVC的接口.同一个ip.同一个网络协议.同一个端口,三者都满足就是同一个域,否则就是跨域问题了.首页广告需要一个轮播的效果,取后台数据json格式.上篇博客介绍了使用jsonp来解决跨域,现在有个新的方法来解决,那就是:ajax请求地址改为自己系统的后台地址,之后在自己的后台用HttpClient请求url.封装好的跨域请求url工具类.封装一个get一个POST即可. 两者的区别就在于,jsonp是基于客户端的跨域解决…
思路:dp[i][0]表示i是服务器:dp[i][1]表示i不是服务器,但它的父节点是服务器:dp[i][2]表示i和他的父亲都不是服务器.       转移方程: d[u][0] += min(d[v][0], d[v][1]); d[u][1] += d[v][2]; for(int i = 0; i < n; ++i) {       int v= son[u][i];       if(v == pre) continue;       d[u][2] = min(d[u][2], d[…
题目链接 题意:给你一个树形图,让你把其中若干个结点染成黑色,其余的染成白色,使得任意一个白色结点都恰好与一个黑色结点相邻. 解法比较容易,和树上的最大独立集类似,取一个结点作为树根,对每个结点分三种情况讨论即可:自己是黑色,自己是白色而父亲是黑色,自己和父亲都是白色. 但关键在于这道题如果用inf来作为不合法状态的dp值的话,会导致在dp的过程中有多个inf相加而炸掉!!习惯把inf设成0x3f3f3f3f或者0x7fffffff的选手们要杯具了. 解决方法有很多,比如把inf设小一点,把in…
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<sstream> #include<algorithm> #include<queue> #include<deque> #include<iomanip> #include<vector> #include<cmath>…
这道题有个初始值设成1e9, 然后这个值是要加很多次的,然后就会溢出变成负数, 然后就一直WA, 找这个bug找了一个小时--以后不能随便这样设那么大, 要考虑会不会加很多次然后溢出. 讲一下思路. 首先对于当前节点u,可以分三种情况. 一种是当前节点是服务器,一种是节点的父亲是服务器,一种是节点的儿子是服务器. 不可能都不是服务器,因为如果这样的话u自己就没有服务器相连. 设本身是服务器的为d(u, 0),父亲是服务器为d(u, 1),儿子是服务器是d(u, 2) 那么我们可以写出转移方程 d…