51Nod 1125 交换机器的最小代价
来源:互联网 发布:linux semaphore 编辑:程序博客网 时间:2024/05/29 04:45
把所有的点分成一个个的置换的循环,对于每一个循环用循环中的最小的数进行置换,但这可能不是最优的。要考虑用循环外的最小数与环内最小数交换后再进行操作,把这两种都跑一遍,取最小值。
#include<iostream>#include<algorithm>#include<cstdio>using namespace std;struct jq{ long long num; long long w; int f;}mac[50010];bool cmp(jq x,jq y){ return x.w<y.w;}int k;long long n;long long ma,sum,cnt,mi;int main(){ register int i; scanf("%d",&n); for(i=0;i<=n-1;i++) { scanf("%lld",&mac[i].w); mac[i].num=i,mac[i].f=0; } sort(mac,mac+n,cmp),mi=mac[0].w; for(i=0;i<=n-1;i++) { if(!mac[i].f) { cnt=0,sum=0,k=i,mac[i].f=1; while(i!=mac[k].num) { mac[mac[k].num].f=1; sum+=mac[mac[k].num].w; k=mac[k].num; cnt++; } ma+=sum+min((cnt*mac[i].w),((cnt+2)*mi+mac[i].w*2)); } } printf("%lld\n",ma); return 0; }
阅读全文
0 0
- 51nod 1125 交换机器的最小代价
- 51nod 1125 交换机器的最小代价
- 51Nod-1125-交换机器的最小代价
- 1125 交换机器的最小代价 51NOD
- 51nod 1125[交换机器的最小代价]【贪心】
- 51Nod 1125 交换机器的最小代价
- 【置换群】51Nod 1125交换机器的最小代价
- 51NOD 1125(交换机器最小代价) (贪心) 思想 !思想!
- 51nod 1125 机器交换最小代价(贪心)
- 51 nod 1125 交换机器的最小代价(强连通分量+贪心)
- 51nod 1125 交换机器的最小代价 (贪心 公式)
- 1125 交换机器的最小代价
- 【51Nod1125】交换机器的最小代价
- 51NOD1125交换机器的最小代价(贪心算法)
- 51nod1125 交换机器的最小代价(贪心)
- 【置换群+贪心】51Nod1125[交换机器的最小代价]题解
- 51nod 1476 括号序列的最小代价
- 51Nod-1476-括号序列的最小代价
- gedit把关键字符替换为回车键
- 「NOIP2017模拟赛09.10」绝对值
- $( function() {} );和$( function($) {} );和( function($){} )(jQuery);的异同
- UVALive
- 最全Pycharm教程(4)——有关Python解释器的相关配置
- 51Nod 1125 交换机器的最小代价
- 稀疏矩阵 的 压缩存储 (十字链表形式)
- java中的静态代理和动态代理
- spark学习-29-源代码解析从start-all.sh脚本开始
- 【CUGBACM14级BC第34场 A】hdu 5190 Go to movies
- servlet 的接口的基本应用和filter简单实现
- 公众号, 订阅号, 服务号, 企业号, 应用号(小程序)都是些什么玩意儿, 有什么关系和区别?
- 前端工程的价值体现在哪里
- 【图像目标检测】Fast-RCNN