并不应该叫置换群……只是用到了置换而已,并没有群。

题解看这个吧,我就不写了:http://www.cnblogs.com/kuangbin/archive/2012/09/03/2669013.html

证明的话可以自己手撸几组数据模拟一下,比较容易。

复杂度O(n)。

算是个经典题吧?

#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
#define INF 2147483647
vector<int>vs[10010];
struct data{
int p,v;
}t[10010];
bool cmp(const data &a,const data &b){
return a.v<b.v;
}
int n,e,ma[10010],minn=INF,ans,t1,t2,minx;
bool vis[10010];
int a[10010];
void dfs(int U){
vis[U]=1;
minx=min(minx,ma[U]);
if(!vis[a[U]]){
dfs(a[U]);
}
t1+=(minx+ma[U]);
t2+=(minn+ma[U]);
}
int main(){
// freopen("poj3270.in","r",stdin);
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%d",&t[i].v);
t[i].p=i;
minn=min(t[i].v,minn);
}
sort(t+1,t+n+1,cmp);
for(int i=1;i<=n;++i){
if(t[i].v!=t[i-1].v){
++e;
}
a[e]=t[i].p;
ma[e]=t[i].v;
}
for(int i=1;i<=n;++i){
if(!vis[a[i]]){
t1=t2=0;
minx=INF;
dfs(a[i]);
t1-=(minx+minx);
t2+=(minx+minn);
ans+=min(t1,t2);
}
}
printf("%d\n",ans);
return 0;
}

【置换群】poj3270 Cow Sorting的更多相关文章

  1. poj3270 Cow Sorting

    给定有序数组a[1...n]的一个置换a[σ(1)...σ(n)], 通过交换数组元素把置换后的数组恢复为有序, 定义进行一次交换的代价为两元素之和,试问此过程的最小总代价. 实际上一种置换即定义S ...

  2. Cow Sorting(置换群)

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

  3. HDU Cow Sorting (树状数组)

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

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

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

  5. hdu 2838 Cow Sorting(树状数组)

    Cow Sorting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  6. Cow Sorting hdu 2838

    Cow Sorting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  7. BZOJ_1697_[Usaco2007 Feb]Cow Sorting牛排序_贪心

    BZOJ_1697_[Usaco2007 Feb]Cow Sorting牛排序_贪心 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行 ...

  8. 树状数组 || 线段树 || Luogu P5200 [USACO19JAN]Sleepy Cow Sorting

    题面:P5200 [USACO19JAN]Sleepy Cow Sorting 题解: 最小操作次数(记为k)即为将序列倒着找第一个P[i]>P[i+1]的下标,然后将序列分成三部分:前缀部分( ...

  9. 【BZOJ 1697】1697: [Usaco2007 Feb]Cow Sorting牛排序

    1697: [Usaco2007 Feb]Cow Sorting牛排序 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行动.因为脾气大 ...

随机推荐

  1. 使用SQL Server连接xml接口,读取并解析数据

    --数据源格式,放到任意程序中部署接口即可--<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmln ...

  2. Python 下调用C动态链接库 -- (转)

    在linux开发的动态链接库需要被python调用,首先需要生成.so文件. 生成动态链接库的方法网上有很多,主要就是首先根据源文件编译生成.o,然后链接这些.o文件-shared生成.so.需要注意 ...

  3. Problems with Ribbon/Feign/Zuul retry

    原文 https://github.com/spring-cloud/spring-cloud-netflix/issues/1577 I'm using Spring Cloud Camden SR ...

  4. linux===进程操作

    ps -ef ps -aux|grep chat.js a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分 kill -9 nohup python da.py & ...

  5. 动画基础--基于Core Animation(1)

    1.简介 上一篇文章[New learn]动画-基于UIView了解到了一些直接由UIView这个在UIKIT提供的类中提供的一些动画方法. 使用UIView的动画特性已经能够满足我们很多的需求,它是 ...

  6. 前言-关于学习OC还是学习Swift的个人理解

    一直在考虑一个问题!到底是学swift好呢还是学OC好. 然后得到了解答: 1.如果你只是对苹果系统软件开发有兴趣,把开发作为一种业务爱好,那么选swift就没错,swift也是大势所趋. 2.如果你 ...

  7. ASP.NET Core学习链接

    https://www.cnblogs.com/artech/p/dependency-injection-in-asp-net-core.html http://www.cnblogs.com/ar ...

  8. node中--save跟--save--dev

    --save参数表示将该模块写入dependencies属性, --save-dev表示将该模块写入devDependencies属性.   dependencies字段指定了项目运行所依赖的模, d ...

  9. Go语言标准包之用io包模拟curl

    最后一个书上的标准包,但真正学习的路才开始... package main import ( "bytes" "fmt" "os" &quo ...

  10. 友盟移动开发平台.NET版本SDK

    由于项目需要给安卓.ios提供提送消息服务.找到了umeng这个平台,官方竟然没有提供.net版本的SDK,同时项目需要就拿出来和大家分享一下需要的同学们可以做个参考,建议官方提供.net版本. 这里 ...