hdu 5147 樹狀陣列 字首和

2021-06-27 18:31:05 字數 871 閱讀 6840

題目:

題目分析:要保證兩對數滿足前面的大於後面的,第一對數的下標中較大的小於第二對數中下標較大的,那麼我們可以利用字首和和字尾和的思想,先預處理算出每乙個數的字首中比它小的數的個數,再計算出字尾中比它大的個數,利用樹狀陣列可以快速求取,然後對前面的數取字首和,也就是以它為較大數的所有數對的個數,列舉比它大的數中字尾的個數,相乘就是結果,具體實現詳見**:

**如下:

#include #include #include #include #define max 100007

using namespace std;

int n;

int c[max];

int a[max];

int les[max];

int more[max];

int lowbit ( int x )

void add ( int x , int d )

}int sum ( int x )

return rt;

}int main ( )

memset ( c , 0 , sizeof (c ) );

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

memset ( c , 0 , sizeof ( c ) );

long long ans = 0;

long long sum = 0;

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

printf ( "%lld\n" , ans );}}

字首和 與 樹狀陣列

通常情況下,樹狀陣列可用來處理單點修改,區間查詢。通過字首和的轉換,可以使其處理區間修改和單點查詢。考慮原陣列和字首和陣列 修改原陣列的某個點 i 等價於 修改字首和陣列 的一條線段 1 i 都要修改 查詢原陣列的某條線段 1 i 等價於 查詢字首和陣列的乙個點 i 這樣,適當地處理字首和陣列和原陣...

字首 樹狀陣列

具體見 1 include 2 using namespace std 3 typedef long long ll 4 const int maxn 1e5 10 5 const int mod 1e9 7 6 define rep i,first,second for int i first i...

字首和 差分 樹狀陣列 線段樹

字首和 應用 區間查詢,不涉及數的變化。求區間 l,r d的和 一維字首和 s i a 1 a 2 a i s i s i 1 a i 二維字首和 s i j 第 i 行第 j 列格仔左上部分所有元素的和 以 x1,y1 為左上角,x2,y2 為右下角 s x2,y2 s x2,y1 1 s x1 ...