uva1428 - ping pong(樹狀陣列)
題目鏈結
題目大意:有n個人,每個人都有乙個技能值ai,現在要開展桌球比賽,要求要有兩個選手和乙個裁判,要求裁判需要在兩名選手的中間而且技能值也是在兩名選手的中間,問可以開展多少場比賽。
解題思路:對於第i個選手當裁判的話,設它前面位置的選手有ci個技能值比它低的,那麼就有i - 1 - ci個比它高的,對於第i選手後面的位置,同樣有di個技能值比它低的,那麼就有n - i - di個比它高的。組合一下:ci
∗(n - i - di) + (i - 1 - ci)
∗ di.那麼對於ci的值,根據i的位置,將xi標為0或者1(在i位置前面就是1,後面就是0)。di類似求得。
**:
#include
#include
const
int maxn = 1e5 + 5;
const
int n = 2e4 + 5;
typedef
long
long ll;
int c[maxn];
int a[maxn];
ll c[n], d[n];
int lowbit(int x)
void add (int x, int d)
}int sum (int x)
return ret;
}void init ()
int main ()
init();
for (int i = n - 1; i >= 0; i--)
ll ans = 0;
for (int i = 0; i < n; i++)
printf ("%lld\n", ans);
}return
0;}
uva 1428 Ping pong (樹狀陣列)
題意 一條街道上有n個選手,他們要打桌球賽,每個人有乙個自己的skill rank,且是n個不同的數。每場比賽需要乙個裁判,要求這個裁判的skill rank不能高於也不能低於這兩個選手,且在街上住的位置必須在兩個選手之間。問可以組織多少場比賽。開始想到了可以用樹狀陣列處理每個人前面有多少sr sk...
UVA 1428 Ping Pong 樹狀陣列
取low min a i 1 i n up max a i 1 i n 那麼區間就是,那麼只要統計出當前a i 左邊有多少比他小的,右邊有多少比他小的即可,因為給出的序列是有順序的,所以在加入需要加入乙個統計乙個,如果先全部加入了,那麼則會導致統計結果變大。include include inclu...
UVA1428 Ping pong 樹狀陣列
傳送門 思路 權值樹狀陣列。考慮列舉每個位置作為裁判對答案的貢獻。顯然有兩種情況 1.a l i r l i r1.a l 1.a l i r l i2.a l a i a r l i r2.a l a i a r l2.a l a i a r l i因為每個數互異。根據乘法原理所以貢獻為 llo ...