UVA 10859 放置街灯(树形DP)
把无向图转化成有根树。
两个优化的量v1,v2,把二者组合成一个量Mv1+v2,让M是一个比“v2的最大理论值和v2的最小理论值之差”还要大的数,
就可以先决定v1,再决定v2。
取M=2000,ans表示该节点放灯的情况,sum表示该节点不放灯的情况
#include<bits/stdc++.h>
using namespace std;vector<int> adj[1010];
int vis[1010][2],d[1010][2],n,m; //d[i][j]表示i的父节点是否放灯的值为j,以i为根的树的最小值 int dp(int i,int j,int f){ //f是i的父节点if(vis[i][j]) return d[i][j] vis[i][j]=1;int &ans=d[i][j];ans=2000;for(int k=0;k<adj[i].size();k++)if(adj[i][k]!=f)ans+=dp(adj[i][k],1,i);if(!j && f>=0) ans++; //如果i不是根或者其父节点没放灯,则x加1 if(j || f<0){ //i是根或者其父节点已放灯,i才可以不放灯int sum=0;for(int k=0;k<adj[i].size();k++)if(adj[i][k]!=f)sum+=dp(adj[i][k],0,i);if(f>=0) sum++;ans=min(ans,sum);} return ans;}int main(){int T,a,b;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);for(int i=0;i<n;i++) adj[i].clear();for(int i=0;i<m;i++){scanf("%d%d",&a,&b);adj[a].push_back(b);adj[b].push_back(a);}memset(vis,0,sizeof(vis));int ans=0;for(int i=0;i<n;i++)if(!vis[i][0])ans+=dp(i,0,-1);printf("%d %d %d\n",ans/2000,m-ans%2000,ans%2000); }return 0;
}
UVA 10859 放置街灯(树形DP)相关推荐
- uva 10859 放置街灯树形dp
首先,本题的优化目标有两个:放置的街灯a应该尽量少:被两灯同时照亮的边数b应该尽量大.为了统一起见,我们把后者替换为:恰好被一盏灯照亮的边数c应该尽量小,然后改用x = Ma+c作为优化目标,其中一个 ...
- Placing Lampposts UVA - 10859 放置街灯 树形dp
As a part of the mission 'Beautification of Dhaka City', the government has decided to replace all t ...
- uva 10859 放置街灯--Placing Lampposts
uva 10859 - Placing Lampposts(树形dp ###两个别人家的代码,没有注释看了很久 ###所以自己改写了一遍,附注释 https://blog.csdn.net/keshu ...
- uva 1218 Perfect Service 树形dp
// uva 1218 Perfect Service 树形dp // // 解题思路: // // d[u][0]表示节点本身是服务器 // d[u][1]表示节点的父节点是服务器 // d[u][ ...
- UVA - 1218 Perfect Service(树形dp)
题目链接:UVA - 1218 Perfect Service 题意 有n台电脑,互相以无根树的方式连接,现要将其中一部分电脑作为服务器,且要求每台电脑必须连接且只能连接一台服务器(不包括作为服务器的 ...
- BZOJ 2314 士兵的放置(play) 树形DP
题目大意:给定一棵树,求最小支配集以及最小支配集数量 首先我们需要会求最小支配集- - 其实支配集的求法很优雅的= = 那些第一问就写了一大坨的第二问还怎么写- - 可以自己YY一下简单的支配集求法= ...
- uva10859放置街灯(树形dp)
例题 30 放置街灯( Placing Lampposts, UVa 10859 ) 给你一个 n 个点 m 条边的无向无环图, 在尽量少的结点上放灯, 使得 所有边都被照亮. 每盏灯将照亮以它为一个 ...
- [动态规划] 放置街灯 Uva 10859 - Placing Lampposts
[动态规划] 放置街灯 Uva 10859 - Placing Lampposts 英文题目: As a part of the mission �Beautification of Dhaka Ci ...
- Placing Lampposts ,UVa 10859 树形dp
UVa 10859 日常刷白书,第三次刷dp刷到这题,竟然还是不会写..... 这个题给定n个点m条边的无向无环图,有至多1000个节点,每个节点有两个状态,可以放灯或者不放灯,要求放最少的灯使得所有 ...
最新文章
- SQL Server Alwayson 主从数据库账号同步
- 千万不要相信程序员在加班时间写的代码!
- PHP 设计模式之迭代器模式
- mysql的主要指标_mysql 主要性能指标
- 拓端tecdat|R语言 PCA(主成分分析),CA(对应分析)夫妻职业差异和马赛克图可视化
- 基于Vue的车辆租赁管理系统设计与实现
- 繁星屠龙软件下载_酷狗繁星屠龙下载
- PointRCNN 车辆 行人 自行车识别
- 荐书 | 5本数学科普让你不再“畏惧”数学,感受数学的内在美
- 三维实景地图,从航测到建模,再到可视化平台
- 微信小程序之商品发布+编辑功能(多图片上传功能)
- mysql workbench 闪电_MySQL Workbench下载|可视化数据库设计建模(MySQL Workbench) 8.0 最新版-闪电下载吧...
- 国产API管理工具Eolink太好用了,打造高效的研发利器
- 起用 RabbitMQ (二)
- hadoop搭建与eclipse开发环境设置
- 数据结构--排序算法(冒泡排序)
- 马仕健原创的“光盘行动之歌”《粒粒皆辛苦》在网络走红
- java 狗带风波_狗狗风波
- 漂亮实用的后台网站大全
- 谷歌地球网页版_谷歌地球终于支持非Chromium浏览器:Safari除外