把无向图转化成有根树。

两个优化的量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)相关推荐

  1. uva 10859 放置街灯树形dp

    首先,本题的优化目标有两个:放置的街灯a应该尽量少:被两灯同时照亮的边数b应该尽量大.为了统一起见,我们把后者替换为:恰好被一盏灯照亮的边数c应该尽量小,然后改用x = Ma+c作为优化目标,其中一个 ...

  2. Placing Lampposts UVA - 10859 放置街灯 树形dp

    As a part of the mission 'Beautification of Dhaka City', the government has decided to replace all t ...

  3. uva 10859 放置街灯--Placing Lampposts

    uva 10859 - Placing Lampposts(树形dp ###两个别人家的代码,没有注释看了很久 ###所以自己改写了一遍,附注释 https://blog.csdn.net/keshu ...

  4. uva 1218 Perfect Service 树形dp

    // uva 1218 Perfect Service 树形dp // // 解题思路: // // d[u][0]表示节点本身是服务器 // d[u][1]表示节点的父节点是服务器 // d[u][ ...

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

    题目链接:UVA - 1218 Perfect Service 题意 有n台电脑,互相以无根树的方式连接,现要将其中一部分电脑作为服务器,且要求每台电脑必须连接且只能连接一台服务器(不包括作为服务器的 ...

  6. BZOJ 2314 士兵的放置(play) 树形DP

    题目大意:给定一棵树,求最小支配集以及最小支配集数量 首先我们需要会求最小支配集- - 其实支配集的求法很优雅的= = 那些第一问就写了一大坨的第二问还怎么写- - 可以自己YY一下简单的支配集求法= ...

  7. uva10859放置街灯(树形dp)

    例题 30 放置街灯( Placing Lampposts, UVa 10859 ) 给你一个 n 个点 m 条边的无向无环图, 在尽量少的结点上放灯, 使得 所有边都被照亮. 每盏灯将照亮以它为一个 ...

  8. [动态规划] 放置街灯 Uva 10859 - Placing Lampposts

    [动态规划] 放置街灯 Uva 10859 - Placing Lampposts 英文题目: As a part of the mission �Beautification of Dhaka Ci ...

  9. Placing Lampposts ,UVa 10859 树形dp

    UVa 10859 日常刷白书,第三次刷dp刷到这题,竟然还是不会写..... 这个题给定n个点m条边的无向无环图,有至多1000个节点,每个节点有两个状态,可以放灯或者不放灯,要求放最少的灯使得所有 ...

最新文章

  1. SQL Server Alwayson 主从数据库账号同步
  2. 千万不要相信程序员在加班时间写的代码!
  3. PHP 设计模式之迭代器模式
  4. mysql的主要指标_mysql 主要性能指标
  5. 拓端tecdat|R语言 PCA(主成分分析),CA(对应分析)夫妻职业差异和马赛克图可视化
  6. 基于Vue的车辆租赁管理系统设计与实现
  7. 繁星屠龙软件下载_酷狗繁星屠龙下载
  8. PointRCNN 车辆 行人 自行车识别
  9. 荐书 | 5本数学科普让你不再“畏惧”数学,感受数学的内在美
  10. 三维实景地图,从航测到建模,再到可视化平台
  11. 微信小程序之商品发布+编辑功能(多图片上传功能)
  12. mysql workbench 闪电_MySQL Workbench下载|可视化数据库设计建模(MySQL Workbench) 8.0 最新版-闪电下载吧...
  13. 国产API管理工具Eolink太好用了,打造高效的研发利器
  14. 起用 RabbitMQ (二)
  15. hadoop搭建与eclipse开发环境设置
  16. 数据结构--排序算法(冒泡排序)
  17. 马仕健原创的“光盘行动之歌”《粒粒皆辛苦》在网络走红
  18. java 狗带风波_狗狗风波
  19. 漂亮实用的后台网站大全
  20. 谷歌地球网页版_谷歌地球终于支持非Chromium浏览器:Safari除外

热门文章

  1. Wireshark内容过滤方法
  2. 2017爱创课堂vue.js视频完整版
  3. tomcat问题——判断tomcat是否安装成功
  4. 美国犹他大学计算机专业怎么样,犹他大学最热门专业,了解一下?
  5. docker logs日志清除
  6. Hbuilder开发移动新闻客户端(二)
  7. 记录回家第一天的bug解决和心理过程
  8. 银行放贷冲动不强:7折房贷利率料最早明年现身
  9. ATFX:欧央行利率决议来袭,重点关注拉加德新闻发布会
  10. TensorFlow对象检测-1.0和2.0:训练,导出,优化(TensorRT),推断(Jetson Nano)