poj 1990 樹狀陣列

2021-06-22 19:45:20 字數 925 閱讀 7549

開始對距離排序 然後果斷的tle了

然後發現應該對power排序,然後我們記錄和更新的是 比x小的個數與距離和,然後每次算的時候,因為按power排序了,當前的pi一定是最大的,所以就能在logdistance的時間內算出來

ac**如下:

#include #include #include #include using namespace std;

const int max_x = 20000 + 5;

struct node;

long long sum[max_x], num[max_x];

int n;

node node[max_x];

bool cmp( node a, node b )else

}inline int lowbit( int x )

long long getsum( int x )

return ans;

}long long getnum( int x )

return ans;

}void updata( int x, long long d )

}int main()

sort( node + 1, node + 1 + n, cmp );

memset( sum, 0, sizeof( sum ) );

memset( num, 0, sizeof( num ) );

int t[max_x];

t[0] = 0;

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

long long ans = 0;

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

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

}return 0;

}

POJ 1990(樹狀陣列)

題目 一開始咋都想著得n n,畢竟pair在那擱著來,看了題解才知道原來可以用樹狀陣列 對於每個cow i 來說,由它的v i 決定的有兩部分,左邊部分和右邊部分,如果把cow關於v公升序排列,逐個求得由每個cow i 決定的volume,就可以復用前面的計數了 include include in...

POJ1990 樹狀陣列)

對於樹狀陣列的理解不透 不會轉化 題解 顯然是要按照v排序的,那麼首先在on情況下是可以完成max vi,vj 的操作,對於某個牛i,我們只需考慮i之前的,那麼i之前的牛我們需要知道每只牛j abs dis i dis j 去掉絕對值後,我們只需要知道所有dis j dis i 的牛的x的和 sum...

poj1990(樹狀陣列好題)

思路請參考 下面是我的 include include include include include include include include include include include define ll int64 define n 20005 define inf 0x7fffff...