開始對距離排序 然後果斷的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...