hdu2489 Minimal Ratio Tree

题意:一个 至多  n=15 的 完全图 ,求 含有 m 个节点的树 使 边权和 除 点权和 最小

题解:枚举 m 个 点 ,然后 求 最小生成树

自己粗心。。。。WA 了 好多次……(233333 )

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <string>
using namespace std;
typedef long long ll;
const double ESP = 10e-8;
const int MOD = 1000000007;
typedef long long LL;
const int MAXN = 15 + 3;int graph[MAXN][MAXN];
int node[MAXN];
int tmp[MAXN];
int dist[MAXN];
int ans[MAXN];
double ansMi;
int n,m;
bool vis[MAXN];
double prim(){double dis = 0;memset(vis,0,sizeof(vis));int cur = 0;vis[cur] = 1;for(int i = 0;i < m;i++){dist[i] = graph[ tmp[cur] ][ tmp[i] ];}for(int i = 0;i < m-1;i++){int mi = 0x7ffffff;int k;for(int j = 0;j < m;j++){if(!vis[j] && dist[j] < mi){mi = dist[j];k = j;}}cur = k;vis[cur] = 1;dis += mi;for(int j = 0;j < m;j++){if(!vis[j] && dist[j] > graph[ tmp[cur] ][ tmp[j] ]){dist[j] = graph[ tmp[cur] ][ tmp[j] ];}}}return dis;
}void dfs(int v,int cnt){if(cnt == m-1){double h = 0;for(int i = 0;i < m;i++){h += node[ tmp[i] ];}double b = prim();double tt = b/h;if(tt - ansMi < -(1e-9)){ansMi = tt;for(int i = 0;i < m;i++){ans[i] = tmp[i];}}return;}for(int i = v+1;i<= n;i++){tmp[cnt+1] = i;dfs(i,cnt+1);}
}int main(){
//    freopen("input.txt","r",stdin);while(~scanf("%d%d",&n,&m) && n &&m){for(int i = 1;i <= n;i++){scanf("%d",&node[i]);}for(int i = 1;i <= n;i++){for(int j = 1;j <= n;j++){scanf("%d",&graph[i][j]);}}ansMi = 10e10;for(int i = 1;i <= n;i++){tmp[0] = i;dfs(i,0);}for(int i = 0;i < m-1;i++){printf("%d ",ans[i]);}printf("%d\n",ans[m-1]);}return 0;
}

转载于:https://www.cnblogs.com/hanbinggan/p/4681059.html

hdu2489 Minimal Ratio Tree相关推荐

  1. hdu 2489 Minimal Ratio Tree

    https://vjudge.net/problem/HDU-2489 题意:求一个完全图的最优比率生成树,点的个数由题给出.最优比率生成树是边的权值之和与点的权值之和的比值最小的生成树. 思路:一开 ...

  2. hdu 2489 Minimal Ratio Tree (DFS枚举+MST)

    参考链接:http://blog.csdn.net/xingyeyongheng/article/details/9373271 http://www.cnblogs.com/chenxiwenruo ...

  3. 【HDOJ图论题集】【转】

    1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...

  4. 一系列图论问题[转]

    =============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...

  5. 【转载】图论 500题——主要为hdu/poj/zoj

    转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  6. 2019.9.17最小生成树知识点回顾

    POJ 1797 Heavy Transportation(最大生成树-Prim) 最大生成树,方法模仿最小生成树,每次选最大边进行操作,即可. HDU 5723 Abandoned country( ...

  7. 【转】并查集MST题集

    转自:http://blog.csdn.net/shahdza/article/details/7779230 [HDU] 1213 How Many Tables 基础并查集★ 1272 小希的迷宫 ...

  8. 杭电OJ分类题目(4)-Graph

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...

  9. kk_想要学习的知识

    2018/4/27 计算几何 一.简介 计算几何属于ACM算法中比较冷门的分类,在省赛中只在前几年考察过,这两年还没有考过,而且和高精度计算一样,遇到题目主要靠套模板,因此对题意的理解至关重要,而且往 ...

最新文章

  1. iOS开发之使用CocoaPods更新第三方出现“target overrides the `OTHER_LDFLAGS`……”问题解决方案
  2. Quick Audience组织和工作空间功能解读
  3. 505B. Mr. Kitayuta‘s Colorful Graph
  4. 需求分析师的基本功:逻辑思维、逻辑分析与逻辑表达
  5. 【Head First 设计模式】-简单工厂模式读后总结
  6. 为什么ES模块比CommonJS更好?
  7. Stella 知识库--模型类的设计
  8. 用delphi模仿.net的string.split
  9. 【java笔记】模拟B/S服务器
  10. 高斯牛顿迭代法的原理及实现(经典例子,附C和C++代码,含运行结果)
  11. nodejs爬虫与python爬虫_不再羡慕python,nodejs爬虫撸起袖子就是干,爬取宅男女神网大姐姐的高清图片!...
  12. 准确率(Accuracy) 精确率(Precision) 召回率(Recall)和F1-Measure(精确率和召回率的调和平均值)
  13. 计算机断电会自动重启吗,电脑开机断电或自动重启的分析及解决方法
  14. 计算机有的应用连不上网络设置,电脑应用程序错误连不上网
  15. VirtualBox如何添加ISO文件
  16. spring-bean
  17. JMeter元件详解之逻辑控制器
  18. 学习笔记之libevent
  19. PTA基础编程题目集7-33 有理数加法
  20. String StringBuilder StringBuffer 包装类 Date 类 枚举类

热门文章

  1. 企业被黑客攻击,“怼回去”合法吗?
  2. 企业shell面试题:获取51CTO博客列表按时间倒序排序
  3. ViewPager+Fragment实现TabHost,Fragment动态添加、删除,Tab选项卡跟随滑动
  4. Android开源项目--分类汇总
  5. 20个jQuery 图片及多媒体画廊插件
  6. 四路由器的OSPF DR ,BDR
  7. 从“学徒”(Apprentice III)看领导力(9-17集)
  8. MySQL性能的五大配置参数(内存参数)
  9. Linux Shell常用技巧(四)
  10. Source Insight中查看文件显示全路径