题目名称 | 1975. 奶牛排序 |
---|---|
输入输出 | cow.in/out |
难度等级 | ★★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 |
|
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:6, 提交:10, 通过率:60% | ||||
|
100 | 0.156 s | 2.46 MiB | C++ |
|
100 | 0.175 s | 4.99 MiB | C++ |
|
100 | 0.179 s | 5.77 MiB | C++ |
|
100 | 0.320 s | 4.75 MiB | C++ |
|
100 | 0.322 s | 6.04 MiB | C++ |
|
100 | 0.332 s | 6.05 MiB | C++ |
|
40 | 0.321 s | 4.72 MiB | C++ |
|
40 | 12.000 s | 4.30 MiB | C++ |
|
0 | 0.309 s | 4.51 MiB | C++ |
|
0 | 11.999 s | 4.33 MiB | C++ |
本题关联比赛 | |||
树状数组练习 |
关于 奶牛排序 的近10条评论(全部评论) |
---|
夏洛克有$n$头奶牛,每头奶牛有一个唯一的“脾气暴躁”值$a_i$。
每天晚上奶牛们都会排队挤奶,但是脾气暴躁的奶牛更容易损坏夏洛克的挤奶设备,夏洛克希望重新安排奶牛的排成一列,以便它们排成越来越脾气暴躁。
在这个过程中,任何两头奶牛(必然相邻)都可以互换,而每次互换夏洛克都需要$x+y$的时间来交换两头脾气暴躁值为$x$和$y$的奶牛。
请你帮助夏洛克计算将奶牛排好序需要的最短时间。
第一行一个整数$n(n\leq 10^5)$。
接下来$n$行每行一个整数,其中第$i$行的整数$a_i(a_i\leq 10^5)$表示第$i$头牛的脾气暴躁值。
一行一个整数,表示奶牛排好序需要的最短时间。
3 2 3 1
7
开始时奶牛的顺序为:$2$ $3$ $1$。
第一次可以交换$3$和$1$,需要花费$3+1=4$的时间,奶牛顺序为:$2$ $1$ $3$。
第二次可以交换$2$和$1$,需要花费$2+1=3$的时间,奶牛顺序为:$1$ $2$ $3$。