zoukankan      html  css  js  c++  java
  • poj 3270 Cow Sorting

    http://poj.org/problem?id=3270

    这道题就是给你一个无序序列转换成有序序列需要花费的代价最小,交换a和b代价为a+b;

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define maxn 20000
     5 using namespace std;
     6 
     7 int min1=100000;
     8 int n;
     9 bool vis[maxn];
    10 struct node
    11 {
    12   int num;
    13   int id;
    14   bool operator <(const node &a)const
    15   {
    16       return num<a.num;
    17   }
    18 }p[maxn*2];
    19 
    20 int deal()
    21 {
    22     int ans=0;
    23     for(int i=0; i<n; i++)
    24     {
    25         if(!vis[i])
    26         {
    27             vis[i]=true;
    28             int sum=p[i].num;
    29             int m1=p[i].num;
    30             int t1=1;
    31             int id=p[i].id;
    32             while(id!=i)
    33             {
    34                 vis[id]=true;
    35                 sum+=p[id].num;
    36                 m1=min(m1,p[id].num);
    37                 id=p[id].id;
    38                 t1++;
    39             }
    40             ans+=min(sum+(t1-2)*m1,sum+m1+(t1+1)*min1);
    41         }
    42     }
    43     return ans;
    44 }
    45 
    46 int main()
    47 {
    48     while(scanf("%d",&n)!=EOF)
    49     {
    50         memset(vis,false,sizeof(vis));
    51         for(int i=0; i<n; i++)
    52         {
    53             scanf("%d",&p[i].num);
    54             p[i].id=i;
    55             min1=min(min1,p[i].num);
    56         }
    57         sort(p,p+n);
    58         printf("%d
    ",deal());
    59     }
    60     return 0;
    61 }
    View Code
  • 相关阅读:
    原型模式
    windows下Redis安装及利用java操作Redis
    redis笔记
    STS 安装SVN插件
    java 操作MongoDB简易工具类
    Mysql 单表数据量过大移除数据
    Mysql 提示拷贝效率
    JS 图片显示一部分 小计
    FashJson转换
    WIndow MongoDb安装和启动
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3759837.html
Copyright © 2011-2022 走看看