HDU 1541 Stars 樹狀陣列

2022-05-01 06:24:12 字數 1521 閱讀 4805

題目鏈結

題意

求每個等級的星星有多少個

當前這個星星的左下角 有多少個 星星 它的等級就是多少

和它同一水平線的左邊的星星 以及 同一豎直線的下邊的星星也算在內

思路那麼 對於當前的星星來說,在它之前給出的星星中,都是在它下邊的

所以 我們就可以不用管 y 座標 只用x 座標

形成乙個序列 就是求這個序列的 所有逆序對的個數

樹狀陣列

ac**

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define clr(a) memset(a, 0, sizeof(a))

#define pb push_back

using

namespace

std;

typedef

long

long ll;

typedef

long

double ld;

typedef

unsigned

long

long ull;

typedef pair pii;

typedef pair pll;

typedef pair psi;

typedef pair pss;

const

double pi = acos(-1.0);

const

double e = exp(1.0);

const

double eps = 1e-30;

const

int inf = 0x3f3f3f3f;

const

int maxn = 32000 + 5;

const

int mod = 1e9 + 7;

int a[maxn];

int sum[maxn];

int lowbit(int x)

int sum(int n)

return ans;

}void add(int x)

}int main()

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

printf("%d\n", sum[i]);

}}

hdu 1541 Stars 樹狀陣列

題意 大概就是計算每顆星星左下邊包括了多少顆星星,這個數值就是level。左下邊不包括本身,不超過本身的x,y的座標,可以等於。問每種level有多少顆星星。這題,一開始想不到怎麼用到樹狀陣列,後來看了一下,發現題目給的資料是已經按x,y排好序的。所以我們可以不用管y的值,為什麼呢?我們乙個星星乙個...

HDU 1541 Stars(樹狀陣列)

題目鏈結 解析 題意 大概就是計算每顆星星左下邊包括了多少顆星星,這個數值就是level。左下邊不包括本身,不超過本身的x,y的座標,可以等於。問每種level有多少顆星星。這題,一開始想不到怎麼用到樹狀陣列,後來看了一下,發現題目給的資料是已經按x,y排好序的,所以我們可以不用管y的值。注意 1....

HDU 1541 Stars 樹狀陣列

題義為給定n個點按照先x軸,後y軸座標排序,求某一點的左下角的星星數量,剛開始用二維的樹狀陣列來做,結果肯定是記憶體不過用。該題正解為在給定的座標點的排序後,只對x軸座標建立乙個一維陣列,對於當前狀態按x軸將平面劃分成m個區域,由於給定的點的y軸座標一定是當前最高的,所以直接對橫座標前求和即可。如下...