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