题目名称 3392. [USACO20 Open Gold]Haircut
输入输出 usaco_20Open_haircut.in/out
难度等级 ★★
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 13
题目来源 Gravatar数声风笛ovo 于2020-04-04加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:3, 提交:10, 通过率:30%
Gravatar┭┮﹏┭┮ 100 0.164 s 0.00 MiB C++
Gravatar瑆の時間~無盡輪迴·林蔭 100 0.857 s 51.05 MiB C++
GravatarShallowDream雨梨 100 1.535 s 15.95 MiB C++
Gravatar空条承太郎& 38 2.184 s 0.00 MiB C++
Gravatar空条承太郎& 38 8.202 s 0.00 MiB C++
Gravatar空条承太郎& 38 8.212 s 0.00 MiB C++
Gravatar空条承太郎& 38 8.764 s 0.00 MiB C++
Gravatar空条承太郎& 15 3.280 s 0.00 MiB C++
Gravatar空条承太郎& 15 3.291 s 0.00 MiB C++
Gravatar空条承太郎& 15 3.428 s 0.00 MiB C++
本题关联比赛
USACO金组复现(ION ONLINE模拟赛)
USACO金组复现(ION ONLINE模拟赛)
关于 Haircut 的近10条评论(全部评论)
逆向求
Gravatar┭┮﹏┭┮
2023-09-21 21:36 1楼

3392. [USACO20 Open Gold]Haircut

★★   输入文件:usaco_20Open_haircut.in   输出文件:usaco_20Open_haircut.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

疲于对付他难以整平的头发,Farmer John 决定去理发。他有一排 $N$($1\le N\le 10^5$)缕头发,第 $i$ 缕头发初始时长度为 $A_i$ 微米($0\le A_i\le N$)。理想情况下,他想要他的头发在长度上单调递增,所以他定义他的头发的“不良度”为逆序对的数量:满足 $i < j$ 及 $A_i > A_j$ 的二元对 $(i,j)$。

对于每一个 $j=0,1,\ldots,N-1$,FJ 想要知道他所有长度大于 $j$ 的头发的长度均减少到 $j$ 时他的头发的不良度。

(有趣的事实:人类平均确实有大约 $10^5$ 根头发!)

【输入格式】

输入的第一行包含 $N$。

第二行包含 $A_1,A_2,\ldots,A_N$。

【输出格式】

对于每一个 $j=0,1,\ldots,N-1$,用一行输出 FJ 头发的不良度。

注意:这个问题涉及到的整数大小可能需要使用 64 位整数型存储(例如,C/C++ 中的“long long”)。

【样例输入】

5
5 2 3 3 0

【样例输出】

0
4
4
5
7

【样例解释】

输出的第四行描述了 FJ 的头发长度减少到 3 时的逆序对数量。$A=[3,2,3,3,0]$ 有五个逆序对:$A_1>A_2,\,A_1>A_5,\,A_2>A_5,\,A_3>A_5,$ 和 $A_4>A_5$。

【提示】

对于$ 15\% $的测试数据(测试点$ 1 \sim 2 $),满足$ N \le 100 $。

对于$ 38\% $的测试数据(测试点$ 1 \sim 5 $),满足$ N \le 5 \times 10^3 $。

对于$ 100\% $的测试数据,均满足上文所给出的数据规模。

【来源】

USACO 美国公开赛 Gold 组