當時做的時候就是想的一邊插入一邊統計前後比它大的數的個數和比他小的個數,
其實就差了乙個點沒想到,只要再深入一點就做出來了,唉,看來一定要思考,深入思考。
先正向插入樹狀陣列,一邊插入一邊統計,然後再反向插入一邊,一邊插入一邊統計:
#include
#include
#include
using namespace std;
const int n=100005;
int bit[n];
int lowbit(int x)
void add(int x,int val)
}int query(int x)
return ans;
}int main()
memset(bit,0,sizeof(bit));
for(int i=n-1;i>=0;i--)
long long ans=0;
for(int i=0;ians+=lx[i]*(n-i-1-rx[i])+rx[i]*(i-lx[i]);
cout<}
return 0;
}
UVA1428 Ping pong 樹狀陣列
uva1428 ping pong 樹狀陣列 題目鏈結 題目大意 有n個人,每個人都有乙個技能值ai,現在要開展桌球比賽,要求要有兩個選手和乙個裁判,要求裁判需要在兩名選手的中間而且技能值也是在兩名選手的中間,問可以開展多少場比賽。解題思路 對於第i個選手當裁判的話,設它前面位置的選手有ci個技能值...
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...