题目网址:http://poj.org/problem?id=3270

题目大意是:一串无序的数字,要排成增序的数列,可以交换不相邻的数,每交换两个数,sum+这两个数,使得sum最小,求最小的sum。

0 ms

 #include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
class A
{
public:
int v; //数字
int n; //初始位置
bool visit;
}p[];
bool cmp(const A &a,const A &b)
{
return a.v<b.v;
}
int main(){
int n,m,i,j,Min,Max,Mmin,x,y,t,sum,ans2,ans1,ans,num;
while (~scanf("%d",&n))
{
for (i=;i<=n;i++)
{
scanf("%d",&p[i].v);
p[i].n=i;
p[i].visit=;
}
sort(p+,p+n+,cmp);
Min = p[].v;
Max = p[n].v; //最小数的初始位置,最大数的初始位置
ans = ; //总和
for (i=;i<=n;i++)
{
Mmin = Max*;
sum = ;
t = i;
num = ;
while (p[t].visit==) //找到一个环
{
num ++; //构成环的数的数量
sum += p[t].v;
Mmin = min(Mmin,p[t].v); //找到这个环里初始位置最靠前的位置
p[t].visit = ; //标记
t = p[t].n;
}
if (num > )
{
ans1 = sum + (num-)*Mmin;
ans2 = sum + Mmin + (num+)*Min;
ans += min(ans1,ans2);
}
}
printf("%d\n",ans);
}
return ;
}

详解:http://www.cnblogs.com/xin-hua/archive/2013/07/29/3222651.html

另在HDU,也有一道类似的题,但是它限制了,只有相邻的两个数才能交换。

网址:http://acm.hdu.edu.cn/showproblem.php?pid=2838

树状数组做

31 ms

 #include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
const int N=,maxn=;
int ccnt[N];
__int64 csum[N]; //在自己之前比自己小的数
int lowbit(int x)
{
return x&(-x);
}
int main()
{
int n,x;
while (~scanf("%d",&n))
{
memset(ccnt,,sizeof(ccnt));
memset(csum,,sizeof(csum));
int scnt=;
__int64 ssum=,ans=;
while (n--)
{
scanf("%d",&x);
scnt++; ssum+=x;
for(int i=x;i<=maxn;i+=lowbit(i))
ccnt[i]++, csum[i]+=x; //更新csum[i]的值,ccnt[i]为csum[i]的子的个数
int cnt=;
__int64 sum=;
for(int i=x;i>;i-=lowbit(i))
cnt+=ccnt[i], sum+=csum[i]; //sum在x之前比x小的数的和,在x之前比x小的数的个数
ans+=ssum-sum+(__int64)x*(scnt-cnt);
}
printf("%I64d\n",ans);
}
return ;
}

Cow Sorting POJ 3270 & HDU 2838的更多相关文章

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

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

  2. Cow Sorting hdu 2838

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

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

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

  4. hdu 2838 Cow Sorting 树状数组求所有比x小的数的个数

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

  5. HDU Cow Sorting (树状数组)

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

  6. POJ 2104&HDU 2665 Kth number(主席树入门+离散化)

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 50247   Accepted: 17101 Ca ...

  7. poj 3270(置换群)

    题意:给定n头母牛的脾气大小,然后让你通过交换任意两头母牛的位置使得最后的母牛序列的脾气值从小到大,交换两头母牛的代价是两个脾气之和,使得代价最小. 分析:以前做过一道题,只有一个地方和这道题不同,但 ...

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

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

  9. Cow Sorting(置换群)

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

随机推荐

  1. 一句powershell调用mimikatz抓密码

    mimikatz神器大家都知道吧,可以抓取系统内的明文密码,但是平时我们测试的时候需要把mimikatz的几个文件上传到目标系统上面,然后再手工执行几个命令才能搞定,今天无意访问一个大神的博客,发现其 ...

  2. xshell、xftp最新版下载方法

    https://www.netsarang.com/download/main.html 登录邮箱打开第一个下载地址进行下载

  3. Linux安装FTP文档服务器

    1.检查是否安装 了vsftpd,如果未安装 则安装vsftpd. 1)查看系统中是否安装了vsftpd,可以通过执行命令 :rpm -qa | grep vsftpd 2)如果没有安装 vsftpd ...

  4. [Qt Creator 快速入门] 第8章 界面外观

    一个完善的应用程序不仅应该有实用的功能,还要有一个漂亮的外观,这样才能使应用程序更加友好,更加吸引用户.作为一个跨平台的UI开发框架,Qt提供了强大而灵活的界面外观设计机制.这一章将学习在Qt中设计应 ...

  5. BFS POJ 3414 Pots

    题目传送门 /* BFS:六种情况讨论一下,BFS轻松解决 起初我看有人用DFS,我写了一遍,TLE..还是用BFS,结果特判时出错,逗了好长时间 看别人的代码简直是受罪,还好自己终于发现自己代码的小 ...

  6. Hadoop Hive概念学习系列之hive的索引及案例(八)

    hive里的索引是什么? 索引是标准的数据库技术,hive 0.7版本之后支持索引.Hive提供有限的索引功能,这不像传统的关系型数据库那样有“键(key)”的概念,用户可以在某些列上创建索引来加速某 ...

  7. xcode 制作静态库文件(.a)

    参考: http://www.jb51.net/article/37853.htm 摘要: 1. 获取.a文件的信息              lipo -info /Users/pjk1129/De ...

  8. NHibernate3.2学习笔记-几种查询方式

    一.开发环境 数据库:SQLServer2008 编译器:VS2010 .Net版本:.Net Framework 4.0 二.开发过程 1.项目结构 承接上一篇 2.执行sql语句 (1)基本语法 ...

  9. Echarts和Quartz简介

    一.Echarts ​ ECharts 是由百度前端团队开发的一款开源的基于 js 图形报表组件,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大 ...

  10. duilib属性

    原文转载自:http://blog.csdn.net/lixiang987654321/article/details/45008441 这里我想讲解一下duilib中的一些属性的理解,当然这是一篇永 ...