hdu2489

news/2024/12/29 11:43:05/

这题用到 枚举+prim

拍了半天队,已经没报希望了,wa了好多次,结果竟然ac,看自己做没错,一些细节没处理好。

总的来讲像这种数据小的题目用枚举完全无压力,放心用。

这里注意一下对于非重排列,就是说C多少的。

#include<iostream>
#include<algorithm>
#include<stdlib.h>
#include<string.h>
#include<string>
#include<vector>
#include<queue>
#include<list>
using namespace std;
typedef long long lld;
typedef unsigned int ud;
#define Inf INT_MAX//int最大
#define Min(x,y) (x)<(y)?(x):(y)
#define Max(x,y) (x)>(y)?(x):(y)
#define PQ priority_queue
#define Q queue
#define N 20
int n,m;
double ans;
int map[N][N];
int w[N];
int mark[N];
int dis[N];
int mern;
int stack[N];
int res[N];double prim(int s)
{double edgeW=0;double vexW=0;for(int i=1;i<=m;i++){dis[stack[i]]=map[stack[s]][stack[i]];mark[stack[i]]=0;}dis[stack[s]]=0;mark[stack[s]]=1;vexW+=w[stack[s]];int t=m-1;while(t--){int min=Inf;int k;for(int i=1;i<=m;i++)if(!mark[stack[i]]&&dis[stack[i]]<min){min=dis[stack[i]];k=stack[i];}if(min==Inf)return Inf;mark[k]=1;edgeW+=dis[k];vexW+=w[k];for(int i=1;i<=m;i++)if(!mark[stack[i]]&&map[k][stack[i]]<dis[stack[i]])dis[stack[i]]=map[k][stack[i]];}return edgeW/vexW;
}void dfs(int nn)
{if(nn>m){double t=prim(1);if(t<ans){for(int i=1;i<nn;i++)res[i]=stack[i];ans=t;}return ;}if(stack[nn-1]+(m-nn)>n)return ;for(int i=stack[nn-1]+1;i<=n;i++){stack[nn]=i;dfs(nn+1);}
}int main()
{while(scanf("%d%d",&n,&m)&&(n||m)){for(int i=1;i<=n;i++)scanf("%d",&w[i]);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&map[i][j]);stack[0]=0;ans=(double)Inf;dfs(1);//printf("结果:");
        printf("%d",res[1]);for(int i=2;i<=m;i++)printf(" %d",res[i]);puts("");}return 0;
}


http://www.ppmy.cn/news/294406.html

相关文章

Spark本地模式与Spark Standalone伪分布模式

红字部分来源于&#xff1a;董的博客 目前Apache Spark支持三种分布式部署方式&#xff0c;分别是standalone、spark on mesos和 spark on YARN&#xff0c;其中&#xff0c;第一种类似于MapReduce 1.0所采用的模式&#xff0c;内部实现了容错性和资源管理&#xff0c;后两种则…

【ELMAN回归预测】麻雀搜索算法SSA优化ELMAN神经网络回归预测(多输入单输出)【含Matlab源码 2489期】

⛄一、麻雀算法简介 1 标准麻雀算法 算法运算过程由探索者、追随者与预警者3部分构成,其中探索者与追随者的总数量与比例不变,根据适应度数值的改变,两者可以相互转化。通过觅食和反捕食行为来不断更新种群成员最优位置。 设种群数量为n,在第K次迭代中,探索者的位置更新方…

教育信息化时代,如何打造中学理科信息化实验操作考场方案

近年来&#xff0c;我国考试招生制度不断改进完善&#xff0c;初步形成了相对完整的考试招生体系。但随着教育事业的逐步发展&#xff0c;国务院明确提出了改革考试形式和内容&#xff1a;完善中学学业水平考试&#xff0c;规范中考学生综合素质评价&#xff0c;加快推进中学院…

HDU 2489 Minimal Ratio Tree (DFS枚举+最小生成树Prim)

链接&#xff1a; HDU &#xff1a; http://acm.hdu.edu.cn/showproblem.php?pid2489 POJ &#xff1a; http://poj.org/problem?id3925 题目&#xff1a; Problem Description For a tree, which nodes and edges are all weighted, the ratio of it is calculated acco…

使用python做王者荣耀挂机刷金币脚本

原理: 由于每次通过冒险模式都会有金币&#xff0c;而这个动作十分重复&#xff0c;连图像识别都不需要&#xff0c;可以考虑使用程序代替人工。 简单的说是重复以下的步骤&#xff1a; 界面打开至挑战关卡&#xff1a;陨落的废都 - 魔女回忆 【点击下一步】点击开始闯关进入挑…

HDU 2489

题目&#xff1a; Minimal Ratio Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1140 Accepted Submission(s): 348 Problem Description For a tree, which nodes and edges are all weighted, th…

2896

病毒侵袭 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4441 Accepted Submission(s): 1138 Problem Description 当太阳的光辉逐渐被月亮遮蔽&#xff0c;世界失去了光明&#xff0c;大地迎来最黑暗的时刻…

hdu 2098

分拆素数和 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14023 Accepted Submission(s): 6023 Problem Description 把一个偶数拆成两个不同素数的和&#xff0c;有几种拆法呢&#xff1f; Input 输入包含…