LA 4329 Ping pong 樹狀陣列

2021-08-03 15:25:20 字數 1042 閱讀 7003

題目傳送門

這道題與樹狀陣列求逆序對的思路有些近似,是一道樹狀陣列求字首的基礎題目。

我們列舉第i個人當裁判的話,假設a1到a[i-1]中有ci個比ai小,那麼就有(i-1)-ci個比ai大,同理,假設a[i+1]到an中有di個比ai小,那麼就有(n-i)-di個比ai大,然後根據乘法原理和加法原理,i當裁判有ci(n-i-di)+(i-ci-1)*di,這樣問題就轉化為求c,d的值

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define rez(i,x,y) for(int i=x;i>=y;i--)

#define res(i,x,y) for(int i=x;i<=y;i++)

#define inf 2100000000

#define ll long long

#define clr(x) memset(x,0,sizeof(x))

using

namespace

std;

const

int egn = 100005;

const

int maxn = 100000 + 50;

int ti,n;

int num[maxn],x[maxn],c[maxn],d[maxn];

template

inline

void readin(t &res)

int lowbit(int x)

int sum(int x)

void add(int x)

clr(num);

for(int i=n;i>=1;i--)

for(int i=1;i<=n;i++)

cout

0;}

LA 4329 Ping pong 樹狀陣列

樹狀陣列的典型應用,參看 演算法筆記 475頁 對於有n個數的陣列 a a 1 a n 對於每乙個元素,求出序列中,它的左邊比它小的數的個數 本題要點 1 題目見,訓練指南 197 頁 2 ans 要用 long long 3 輸入的陣列個數最大值為 20000,每個 a i 的最大值為 10000...

LA4329 樹狀陣列

分析 考慮第i個人當裁判。假設前i 1個人中有ci個比ai小,那麼就有 i 1 ci個比ai大 同理,設i 1到n有di個比ai小,那麼就有 n i di個比ai大。所以i當裁判有 ci n i di i ci 1 di種比賽。問題轉換為求ci和di。ci可以這麼計算 從左到右掃瞄所有的ai,令x ...

LA 4329(樹狀陣列)

演算法競賽入門經典 p197 題目大意 一條大街上住著n個桌球愛好者,經常比賽切磋技術。每個人都有乙個不同的技能值a i 每場比賽需要3個人 兩名選手,一名裁判。他們有個奇怪的約定,裁判必須住在兩名選手之間,而裁判的能力值也必須在兩名選手之間。問一共能組織多少種比賽。分析 假設a 1 到a i 1 ...