Codeforces Round #261 (Div. 2)459D. Pashmak and Parmida's problem(求逆序数对)
2017-05-19 11:12
656 查看
题目链接:http://codeforces.com/contest/459/problem/D
D. Pashmak and Parmida's problem
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Parmida is a clever girl and she wants to participate in Olympiads this year. Of course she wants her partner to be clever too (although he's not)! Parmida has prepared the following test problem for Pashmak.
There is a sequence a that consists of n integers a1, a2, ..., an.
Let's denote f(l, r, x) the number of indices k such
that: l ≤ k ≤ r andak = x.
His task is to calculate the number of pairs of indicies i, j (1 ≤ i < j ≤ n) such
that f(1, i, ai) > f(j, n, aj).
Help Pashmak with the test.
Input
The first line of the input contains an integer n (1 ≤ n ≤ 106).
The second line contains n space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 109).
Output
Print a single integer — the answer to the problem.
Sample test(s)
input
output
input
output
input
output
思路:用map预处理出
代码例如以下:
贴一个解说比較具体的链接:http://www.cnblogs.com/bfshm/p/3916799.html
D. Pashmak and Parmida's problem
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Parmida is a clever girl and she wants to participate in Olympiads this year. Of course she wants her partner to be clever too (although he's not)! Parmida has prepared the following test problem for Pashmak.
There is a sequence a that consists of n integers a1, a2, ..., an.
Let's denote f(l, r, x) the number of indices k such
that: l ≤ k ≤ r andak = x.
His task is to calculate the number of pairs of indicies i, j (1 ≤ i < j ≤ n) such
that f(1, i, ai) > f(j, n, aj).
Help Pashmak with the test.
Input
The first line of the input contains an integer n (1 ≤ n ≤ 106).
The second line contains n space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 109).
Output
Print a single integer — the answer to the problem.
Sample test(s)
input
7 1 2 1 1 2 2 1
output
8
input
3 1 1 1
output
1
input
5 1 2 3 4 5
output
0
思路:用map预处理出
f(1, i, a[i])和
f(j, n, a[j])。再求逆序数对!
代码例如以下:
#include <cstdio> #include <map> using namespace std; typedef long long LL; const int Maxn = 1000017; int n; int a[Maxn],c[Maxn]; int f[Maxn]; LL res; map <int, int> freq; int Lowbit(int x) //2^k { return x&(-x); } void update(int i, int x)//i点增量为x { while(i <= n) { c[i] += x; i += Lowbit(i); } } int sum(int x)//区间求和 [1,x] { int sum=0; while(x>0) { sum+=c[x]; x-=Lowbit(x); } return sum; } int main() { while(~scanf("%d", &n)) { for (int i = 0; i < n; i++) scanf("%d", &a[i]); for (int i = n - 1; i >= 0; i--) f[i] = ++freq[a[i]]; freq.clear(); //树状数组求逆序 for (int i = 0; i < n; i++) { //res += sum(f[i] + 1); res += i - sum(f[i]);//逆序数个数 update(++freq[a[i]],1); } printf("%I64d\n", res); } return 0; }
贴一个解说比較具体的链接:http://www.cnblogs.com/bfshm/p/3916799.html
相关文章推荐
- Codeforces Round #261 (Div. 2)459D. Pashmak and Parmida's problem(求逆序数对)
- Codeforces #261 (Div. 2) D. Pashmak and Parmida's problem(数据结构:离散化+线段树+逆序数+二分查找)
- Codeforces Round #261 (Div. 2) D. Pashmak and Parmida's problem (树状数组)
- CF #261 div2 D. Pashmak and Parmida's problem (树状数组版)
- CF #261 div2 D. Pashmak and Parmida's problem (树状数组版)
- 【CODEFORCES】 D. Pashmak and Parmida's problem
- Codeforces Round 459 D. Pashmak and Parmida's problem 树状数组求逆序数 变形
- Codeforces Round #261 (Div. 2) D. Pashmak and Parmida's problem 离散化+树状数组
- CF 459D - Pashmak and Parmida's problem (树状数组)
- Codeforces Round #261 (Div. 2) D. Pashmak and Parmida's problem (树状数组求逆序数 变形)
- codeforces 459D - Pashmak and Parmida's problem【离散化+处理+逆序对】
- codeforces 459D - Pashmak and Parmida's problem【离散化+处理+逆序对】
- Codeforces Round #261 (Div. 2) D. Pashmak and Parmida's problem
- Codeforces Round261 div2D Pashmak and Parmida's problem 树状数组
- Codeforces Round 261 Div.2 D Pashmak and Parmida&#39;s problem --树状数组
- Codeforces Round #261 (Div. 2) D. Pashmak and Parmida's problem(树状数组+逆序数对)
- 数学 - Codeforces Round #319 (Div. 1)A. Vasya and Petya's Game
- Codeforces Round #319 (Div. 2) ——C. Vasya and Petya's Game(数学题)
- Codeforces Round #340 (Div. 2)E - XOR and Favorite Number(Mo's algorithm)
- Codeforces Round #261 (Div. 2) D. Pashmak and Parmida's problem