题目链接

很早之前就看过这题,思路题把,确实挺难想的,黑书248页有讲解。

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int p[];
struct node
{
int id;
int x;
int pos;
}num[];
int flag[],minz;
int cmp1(node a,node b)
{
return a.x < b.x;
}
int cmp2(node a,node b)
{
return a.id < b.id;
}
int judge(int x)
{
int res = ,m,temp = ;
if(x == num[x].pos)
{
flag[x] = ;
return ;
}
m = num[x].x;
while(!flag[x])
{
flag[x] = ;
temp += num[x].x;
x = num[x].pos;
m = min(m,num[x].x);
res ++;
}
return temp + min((res-)*m,m+(res+)*minz);
}
int main()
{
int n,i,sum;
scanf("%d",&n);
minz = ;
sum = ;
for(i = ;i <= n;i ++)
{
scanf("%d",&num[i].x);
minz = min(num[i].x,minz);
num[i].id = i;
}
sort(num+,num+n+,cmp1);
for(i = ;i <= n;i ++)
{
num[i].pos = i;
}
sort(num+,num+n+,cmp2);
for(i = ;i <= n;i ++)
{
if(!flag[i])
{
sum += judge(i);
}
}
printf("%d\n",sum);
return ;
}

POJ 3270 Cow Sorting(置换群)的更多相关文章

  1. POJ 3270 Cow Sorting(置换群)

    题目链接 题意 : N头牛,每个牛的坏脾气都有一个值,每个值都不相同,把这个值按照从小到大排序,如果两个值交换,那么会花掉这两个值之和的时间,让你花最少的时间将每个值从小到大排好序,求最小的总时间. ...

  2. poj 3270 Cow Sorting

    思路:仔细读题,看到FARMER是两两交换牛的顺序进行排序的话,应该就往置换上靠拢,而这个题果然是置换的应用(有的解题报告上说是置换群,其实这只是单个置换,不用让它构成群).我们来将这些无序的牛抽象成 ...

  3. poj 3270 Cow Sorting (置换入门)

    题意:给你一个无序数列,让你两两交换将其排成一个非递减的序列,每次交换的花费交换的两个数之和,问你最小的花费 思路:首先了解一下什么是置换,置换即定义S = {1,...,n}到其自身的一个双射函数f ...

  4. Cow Sorting(置换群)

    Cow Sorting Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6664   Accepted: 2602 Descr ...

  5. 【POJ】3270.Cow Sorting

    题解 用到一点群论的知识! 我们发现把操作写成一个置换后,一定是单个置换圈的内进行操作,把置换圈进行扩大的操作不优 我们有两个办法,一个是用全局最小的换进来,代替这个圈里最小的值,交换操作完成后再换出 ...

  6. TOJ 1690 Cow Sorting (置换群)

    Description Farmer John's N (1 ≤ N ≤ 10,000) cows are lined up to be milked in the evening. Each cow ...

  7. poj 3270(置换群+贪心)

    Cow Sorting Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6993   Accepted: 2754 Descr ...

  8. HDU Cow Sorting (树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2838 Cow Sorting Problem Description Sherlock's N (1  ...

  9. BZOJ1697: [Usaco2007 Feb]Cow Sorting牛排序

    1697: [Usaco2007 Feb]Cow Sorting牛排序 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 387  Solved: 215[S ...

随机推荐

  1. Linux 系统安全 抵御TCP的洪水

    抵御TCP的洪水 分类: LINUX tcp_syn_retries :INTEGER默认值是5对 于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃.不应该大于255,默认值是5,对应于1 ...

  2. 【SpringMVC】SpringMVC系列15之SpringMVC最佳实践

    15.SpringMVC最佳实践 15.1.遵循Restful API最佳实践 参考:http://segmentfault.com/a/1190000002949234 15.2.统一返回字段 15 ...

  3. (int),Int32.Parse() 和 Convert.toInt32() 的区别

    在 C# 中,(int),Int32.Parse() 和 Convert.toInt32() 三种方法有何区别? int 关键字表示一种整型,是32位的,它的 .NET Framework 类型为 S ...

  4. css选择器集体声明

    <title>静夜思</title><style type="text/css">h1,#two,.red{ color:#ff0000; fo ...

  5. spring无法扫描jar包的问题

    在日常开发中往往会对公共的模块打包发布,然后调用公共包的内容.然而,最近对公司的公共模块进行整理发布后.spring却无法扫描到相应的bean.折腾了好久,最终发现是认识上的误区. 2015-11-1 ...

  6. Java for LeetCode 164 Maximum Gap

    Given an unsorted array, find the maximum difference between the successive elements in its sorted f ...

  7. Java 复制文件的高效方法

    转载自:http://jingyan.baidu.com/article/ff4116259c2d7712e4823780.html 在Java编程中,复制文件的方法有很多,而且经常要用到.我以前一直 ...

  8. RedHat6.2 下RRDTool安装方法

    在安装ganglia的时候,需要安装ttdtol, 否则是不运去安装的.查可很多,这个可以. 我的环境: [hadoop@host8 ~]$ lsb_release -aLSB Version: :c ...

  9. C++基础内容复习

    下列语句定义了5个变量: int count; double sales_price,sum; std::string title; Sales_item bookItem; 每个定义都是以类型说明符 ...

  10. IIS7 / IIS7.5 URL 重写 HTTP 重定向到 HTTPS(转)

    转自: http://www.cnblogs.com/yipu/p/3880518.html   1.购买SSL证书,参考:http://www.cnblogs.com/yipu/p/3722135. ...