題目背景
(三)舊都
離開狹窄的洞穴,眼前豁然開朗。
天空飄著不尋常的雪花。
一反之前的幽閉,現在面對的,是繁華的街市,可以聽見酒碗碰撞的聲音。
這是由被人們厭惡的鬼族和其他妖怪們組成的小社會,一片其樂融融的景象。
誒,不遠處突然出現了一些密密麻麻的小點,好像大顆粒揚塵一樣。
離得近了點,終於看清楚了。
長著角的鬼們聚在一起,圍觀著另乙隻鬼的表演。
那」揚塵」,其實都是彈幕。
勇儀的招數之一,三步之內,所到之處彈幕雲集,幾乎沒有生存可能。
為了強化這一技能,勇儀將對著一排柱子進行攻擊。
舊地獄的柱子雖然無比堅固,但保險起見還是先要了解一下這樣一套攻擊對柱子有多少損傷,順帶也能檢驗練習的效果。
勇儀決定和其它鬼們商量商量…
「我知道妖怪之山的河童一族有一種叫做計算機的神奇道具,說不定可以借來用用」,萃香說道。
於是舊地獄的鬼族就決定請河城荷取來幫忙了。
「要記錄【所有柱子的損傷程度】嗎」,荷取問道。
經過進一步的詢問,荷取發現他們僅僅需要【所有攻擊都完成後】柱子的損傷程度。
任務了解地差不多了,荷取將其中的重要部分提取了出來,記錄在了她的工作筆記本上:
(記錄的內容見題目描述)
那麼實驗就這樣開始了。
在驚天動地的碰撞聲中,勇儀每完成一**擊,荷取都忠實地記錄下對每根柱子產生的傷害。而此時勇儀就在旁邊等待著記錄完成,然後再進行下一輪的攻擊。
地面上,天色漸晚。
「不想在這裡留到深夜啊,不然就回不了家了」,荷取這樣想著,手中依然在重複地向計算機中輸入新產生的資訊。
「真的必須一次一次地記錄下每**擊對每個柱子產生的傷害嗎?有沒有更高效的方法?」這一念頭在荷取的心中閃過…
(後續劇情在題解中,接下來請看t3)
題目描述
問題摘要:
nnn個柱子排成一排,一開始每個柱子損傷度為0。
接下來勇儀會進行mmm次攻擊,每次攻擊可以用4個引數lll,rrr,sss,eee來描述:
表示這次攻擊作用範圍為第lll個到第rrr個之間所有的柱子(包含lll,rrr),對第乙個柱子的傷害為sss,對最後乙個柱子的傷害為eee。
攻擊產生的傷害值是乙個等差數列。若l=1l=1l=1,r=5r=5r=5,s=2s=2s=2,e=10e=10e=10,則對第1~5個柱子分別產生2,4,6,8,10的傷害。
鬼族們需要的是所有攻擊完成之後每個柱子的損傷度。
輸入輸出格式
輸入格式:
第一行2個整數nnn,mmm,用空格隔開,下同。
接下來mmm行,每行4個整數lll,rrr,sss,eee,含義見題目描述。
資料保證對每個柱子產生的每次傷害值都是整數。
輸出格式:
由於輸出資料可能過大無法全部輸出,為了確保你真的能維護所有柱子的損傷度,只要輸出它們的異或和與最大值即可。
(異或和就是所有數字按位異或起來的值)
(異或運算子在c++裡為^)
輸入輸出樣例
輸入樣例#1: 複製
5 2
1 5 2 10
2 4 1 1
輸出樣例#1: 複製
3 10
輸入樣例#2: 複製
6 2
1 5 2 10
2 4 1 1
輸出樣例#2: 複製
3 10
這道題由於太簡單了不太想寫部落格。鑫神說過沒有什麼等差數列是差分解決不了的,如果有,就再加一階。
所以乙個二階差分解決一切。
#include
using
namespace std;
long
long n,m,c[
10001000
],b[
10001000
],a[
10001000
],maxx=
0,ans=0;
inline
long
long
read()
while
(isdigit
(ch)
)return w ?
-s : s;
}int
main()
while
(i<=n)
printf
("%lld %lld"
,ans,maxx)
;return0;
}/*2023年:東方靈異傳(toh1)
2023年:東方封魔錄(toh2)
2023年:東方夢時空(toh3)
2023年:東方幻想鄉(toh4)
2023年:東方怪綺談(toh5)
2023年:東方紅魔鄉(toh6)
2023年:東方妖妖夢(toh7)
2023年:東方萃夢想(toh7.5)
2023年:東方永夜抄(toh8)
2023年:東方花映冢(toh9)
2023年:東方文花帖(toh9.5)
2023年:東方風神錄(toh10)
2023年:東方緋想天(toh10.5)
2023年:東方地靈殿(toh11)
2023年:東方星蓮船(toh12)
2023年:東方非想天則(toh12.3)
2023年:東方文花帖ds(toh12.5)
2023年:東方三月精(toh12.8)
2023年:東方神靈廟(toh13)
2023年:東方心綺樓(toh13.5)
2023年:東方輝針城(toh14)
2023年:彈幕天邪鬼(toh14.3)
2023年:東方深秘錄(toh14.5)
2023年:東方紺珠傳(toh15)
2023年:東方憑依華(toh15.5)
2023年:東方天空璋(toh16)
*//*
2023年:東方靈異傳(toh1)
2023年:東方封魔錄(toh2)
2023年:東方夢時空(toh3)
2023年:東方幻想鄉(toh4)
2023年:東方怪綺談(toh5)
2023年:東方紅魔鄉(toh6)
2023年:東方妖妖夢(toh7)
2023年:東方萃夢想(toh7.5)
2023年:東方永夜抄(toh8)
2023年:東方花映冢(toh9)
2023年:東方文花帖(toh9.5)
2023年:東方風神錄(toh10)
2023年:東方緋想天(toh10.5)
2023年:東方地靈殿(toh11)
2023年:東方星蓮船(toh12)
2023年:東方非想天則(toh12.3)
2023年:東方文花帖ds(toh12.5)
2023年:東方三月精(toh12.8)
2023年:東方神靈廟(toh13)
2023年:東方心綺樓(toh13.5)
2023年:東方輝針城(toh14)
2023年:彈幕天邪鬼(toh14.3)
2023年:東方深秘錄(toh14.5)
2023年:東方紺珠傳(toh15)
2023年:東方憑依華(toh15.5)
2023年:東方天空璋(toh16)
*///寫這些東西rp++
其實這道題對差分的運用是顯然的,標籤裡的線段樹誤導我半天。雖說沒有寫的必要,但作為差分練習是再好不過了。 洛谷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 三步必殺
題目描述 n 個柱子排成一排,一開始每個柱子損傷度為0。接下來勇儀會進行 m 次攻擊,每次攻擊可以用4個引數 l r s e 來描述 表示這次攻擊作用範圍為第 l 個到第 r 個之間所有的柱子 包含 l r 對第乙個柱子的傷害為 s 對最後乙個柱子的傷害為 e 攻擊產生的傷害值是乙個等差數列。若 l...
洛谷 P4231 三步必殺
乙個操作的過程是這樣的 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 乙個如此詭異的操作,還是被神奇的差分陣列消滅了。所以對於每個...