洛谷 P4231 三步必殺

2022-07-27 23:21:18 字數 822 閱讀 9520

乙個操作的過程是這樣的:

a     0 0 0 s s+d s+2d ... e-2d  e-d  e    0       0     0    (原陣列)

b     0 0 0 s d     d       ... d       d     d    -e      0     0  (差分陣列1)

c     0 0 0 s

d-s  0       ... 0       0     0    -e-d

e     0  (差分陣列2)

乙個如此詭異的操作,還是被神奇的差分陣列消滅了。

所以對於每個操作,只需修改4個位置即可。

然後由c推出b推出a。

時間複雜度:o(m+n)

code:

#includeusing namespace std;

const int maxn = 1e7+10;

#define ll long long

#define rint register int

int n,m,l,r;

ll s,e,c[maxn],b[maxn],a[maxn],mx,sum;

int main()

ll t = 0;

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

t = 0;

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

printf("%lld %lld\n",sum,mx);

return 0;

}

《有待填坑》

時間複雜度:o(mlog3n+logn)

洛谷P4231 三步必殺

題目描述 n 個柱子排成一排,一開始每個柱子損傷度為0。接下來勇儀會進行 m 次攻擊,每次攻擊可以用4個引數 l r s e 來描述 表示這次攻擊作用範圍為第 l 個到第 r 個之間所有的柱子 包含 l r 對第乙個柱子的傷害為 s 對最後乙個柱子的傷害為 e 攻擊產生的傷害值是乙個等差數列。若 l...

洛谷P4231 三步必殺 差分

題意 有m次詢問每次給一段區間加上個等差序列 思路 題目資料很大,若是用線段樹或樹狀陣列則tle,所以我們想到了進行二次差分 l l 1 r r 1 r 2 s d s 0 e d e 然後進行兩次字首和 include using namespace std typedef long long l...

(差分)洛谷P4231 三步必殺

題目背景 三 舊都 離開狹窄的洞穴,眼前豁然開朗。天空飄著不尋常的雪花。一反之前的幽閉,現在面對的,是繁華的街市,可以聽見酒碗碰撞的聲音。這是由被人們厭惡的鬼族和其他妖怪們組成的小社會,一片其樂融融的景象。誒,不遠處突然出現了一些密密麻麻的小點,好像大顆粒揚塵一樣。離得近了點,終於看清楚了。長著角的...