CDOJ 1292 卿學姐種花(分塊)

2021-07-25 05:00:58 字數 1219 閱讀 1891

思路:

由於是乙個區間更新問題, 而且更新的值不一樣, 所以我們考慮分塊。  對於乙個塊, 我們維護第i塊的第乙個元素被加了多少了sum[i],第i塊被更新了多少次cnt[i], 那麼對於乙個塊內, 元素依次增加sum[i]遞減cnt[i], 這是乙個等差數列。

細節參見**:

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define max(a,b) ((a)>(b)?(a):(b))

#define min(a,b) ((a)<(b)?(a):(b))

using namespace std;

typedef long long ll;

typedef long double ld;

const double eps = 1e-6;

const double pi = acos(-1);

const int mod = 772002 + 233;

const int inf = 0x3f3f3f3f;

const int seed = 131;

const ll inf64 = ll(1e18);

const int maxn = 1e4 + 10;

int t,n,m;

int belong[maxn];

int block;

int num;

int r[maxn], l[maxn];

ll sum[maxn];

ll cnt[maxn];

ll a[maxn];

void build()

r[num] = n;

for(int i = 1; i <= n; i++) belong[i] = (i-1)/block+1;

}void update(int x, int y, int v)

else

for(int i = l[belong[y]]; i <= y; i++) a[i] += v--;

}}int query(int x)

int q;

int main()

else

}return 0;

}

CDOJ 1292 卿學姐種花 暴力 分塊 線段樹

眾所周知,在喵哈哈村,有乙個溫柔善良的卿學姐。卿學姐喜歡和她一樣美麗的花。所以卿學姐家的後院有很多的花壇。卿學姐有 n 個花壇,一開始第 i 個花壇裡有 a i 朵花。每過一段時間,卿學姐都會在花壇裡種上新的花。作為乙個聰明的學姐,卿學姐的種花方式也是與眾不同 每一次,卿學姐會在第 x 個花壇種上 ...

UESTC 1292 卿學姐種花 (分塊)

題意 給出乙個長度為n的序列,m次操作,操作分為兩種 1.在x的位置上加上數y,在x 1的位置加上數y 1,以此類推,一直到n或者y為0.2.詢問x位置上數字為多少 分析 乍一看像是線段樹,但是貌似又很難用線段樹解決,主要是區間不好處理,而分塊對於這類題目有優勢,在區間上更容易計數,對於每個塊,對於...

CDOJ 1324 卿學姐與公主 分塊法

某日,百無聊賴的卿學姐開啟了某11區的某魔幻遊戲 在這個魔幻的遊戲裡,生活著乙個美麗的公主,但現在公主被關押在了魔王的城堡中。英勇的卿學姐拔出利刃衝向了拯救公主的道路。走過了荒野,翻越了高山,跨過了大洋,卿學姐來到了魔王的第一道城關。在這個城關面前的是魔王的精銳部隊,這些士兵成一字排開。卿學姐的 每...