Cow Sorting POJ 3270 & HDU 2838
题目网址: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的更多相关文章
- hdu 2838 Cow Sorting(树状数组)
Cow Sorting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- Cow Sorting hdu 2838
Cow Sorting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu 2838 Cow Sorting (树状数组)
Cow Sorting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- hdu 2838 Cow Sorting 树状数组求所有比x小的数的个数
Cow Sorting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDU Cow Sorting (树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2838 Cow Sorting Problem Description Sherlock's N (1 ...
- POJ 2104&HDU 2665 Kth number(主席树入门+离散化)
K-th Number Time Limit: 20000MS Memory Limit: 65536K Total Submissions: 50247 Accepted: 17101 Ca ...
- poj 3270(置换群)
题意:给定n头母牛的脾气大小,然后让你通过交换任意两头母牛的位置使得最后的母牛序列的脾气值从小到大,交换两头母牛的代价是两个脾气之和,使得代价最小. 分析:以前做过一道题,只有一个地方和这道题不同,但 ...
- BZOJ1697: [Usaco2007 Feb]Cow Sorting牛排序
1697: [Usaco2007 Feb]Cow Sorting牛排序 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 387 Solved: 215[S ...
- Cow Sorting(置换群)
Cow Sorting Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6664 Accepted: 2602 Descr ...
随机推荐
- Spark之RDD的定义及五大特性
RDD是分布式内存的一个抽象概念,是一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,能横跨集群所有节点并行计算,是一种基于工作集的应用抽象. RDD底层存储原理:其数据分布存储于多台机器上 ...
- 【js】JavaScript parser实现浅析
最近笔者的团队迁移了webpack2,在迁移过程中,笔者发现webpack2中有相当多的兼容代码,虽然外界有很多声音一直在质疑作者为什么要破坏性更新,其实大家也都知道webpack1那种过于“灵活”的 ...
- [转]Linux系统调用--fcntl函数详解
功能描述:根据文件描述词来操作文件的特性. 文件控制函数 fcntl -- file control头文件: #include <unistd.h> #include & ...
- mysql之命令行导入导出
命令介绍 mysqldump:导出命令,在系统”命令提示符“窗口直接使用,如果提示没有此命令(前提是已经安装成功mysql),在环境变量中的path添加mysql,即path=D:\xxx\mysql ...
- php-5.3源码编译autoconf版本不符合解法
1. 网上下载符合版本的autoconf 2. 卸载本地原本的autoconf 3. 解压autoconf 后进入目录 ./configure && make && s ...
- Android O 通知栏的"running in the background"
Android O新增的一个特性,系统会在通知栏显示当前在后台运行的应用,其实际是显示启动了前台服务的应用,并且当前应用的Activity不在前台.具体我们看下源码是怎么实现的. 1 APP调用sta ...
- C# 调用Mysql 带参数存储过程
使用C#调用Mysql 带参数的存储过程: 1.创建带参数的存储过程:USP_Temp_Test 2.两个参数:IN 参数为 P_XML , OUT 参数为 P_ErrorOut 3.C#代码调用该存 ...
- 【C++】智能指针简述(六):智能指针总结及补充
本文我们主要来总结一下前文介绍过的智能指针相关原理及实现,顺便补充一下前文未提到的shared_ptr删除器部分的内容. 总结: 1.智能指针,通过RAII机制,构造对象时完成资源的初始化,析构对象时 ...
- java树型结构的数据展现设计
在做一个需求管理的页面时,需求的展现是不限层级树型结构,需求下还可以分拆任务,页面要展现的字段有20多个,而且需求采用通用表单设计,db采用大宽表存储,有一百多个字段.目前数据量不大,第一版采用普通的 ...
- 【译】x86程序员手册27-7.6任务链
7.6 Task Linking 任务链 The back-link field of the TSS and the NT (nested task) bit of the flag word to ...