分塊 HDOJ 4858 專案管理

2021-06-22 22:17:14 字數 1128 閱讀 5315

分塊題。。我們把點分為重點和輕點,重點是度數大於等於sqrt(n),輕點是其他剩餘的點。。。然後對於操作0,如果是重點,那麼直接把重點的權值加上,如果是輕點,那麼就暴力更新所有與它相鄰的點,因為輕點的度數小於sqrt(n),所以更新的點也只有sqrt(n)。對於查詢,周圍的輕點的權值已經算出,然後再暴力加上周圍重點的權值。因為重點不會超過sqrt(n)。。所以總複雜度是n*sqrt(n)。。

#include #include #include #include #include #include #include #include #include #include #include #include #include #define maxn 100100

#define eps 1e-10

#define mod 1000000009

#define inf 99999999

#define lowbit(x) (x&(-x))

//#define lson o<<1, l, mid

//#define rson o<<1 | 1, mid+1, r

typedef long long ll;

//typedef int ll;

using namespace std;

int sum[maxn];

int w[maxn];

int d[maxn];

//vectora[maxn], b[maxn];

struct edge

e[maxn];

int n, m, o;

int a[maxn], va[maxn<<1], na[maxn<<1];

int b[maxn], vb[maxn<<1], nb[maxn<<1];

void init(void)

void scanf(int &x)

void read(void)

int acnt = 0, bcnt = 0;

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

}void work(void)

} else }}

int main(void)

} return 0;

}

vector 專案管理 hdoj 4858

專案管理 hdoj 4858 vector初學 本身是個水水題,但是給剛學的朋友練練手是可以的咯。題目因為資料太大,會爆記憶體,用時間換記憶體就爆了時間。看了下題解,知道用vector,就把vector學了下,水了下面的題。還不會的同學快來看看吧 ac 注意 用cin,cout會爆時間。includ...

hdu 4858專案管理 分塊

知識點 graph分塊 hdu 4858專案管理 有n 個頂點m條邊的無向圖。有 q 次操作 操作一 將所有與 u相連的頂點權值加 v 操作二 查詢頂點 u的權值。資料範圍 1 n 100000,1 m n 10,0 v 100 分塊的一道比較好的題目吶。首先,觀察題目,給定的是乙個明顯的稀疏圖。邊...

hdu 4858 專案管理 分塊

我們建造了乙個大專案!這個專案有n個節點,用很多邊連線起來,並且這個專案是連通的!兩個節點間可能有多條邊,不過一條邊的兩端必然是不同的節點。每個節點都有乙個能量值。現在我們要編寫乙個專案管理軟體,這個軟體呢有兩個操作 1.給某個專案的能量值加上乙個特定值。2.詢問跟乙個專案相鄰的專案的能量值之和。如...