現在請求你維護乙個數列,要求提供以下兩種操作:
1、 查詢操作。
語法:q l
功能:查詢當前數列中末尾l個數中的最大的數,並輸出這個數的值。
限制: ll 不超過當前數列的長度。 (l \ge 0)(l≥0)
2、 插入操作。
語法:a n
功能:將 n 加上 tt ,其中 tt 是最近一次查詢操作的答案(如果還未執行過查詢操作,則 t=0t=0 ),並將所得結果對乙個固定的常數 d取模,將所得答案插入到數列的末尾。
限制: n 是整數(可能為負數)並且在長整範圍內。
注意:初始時數列是空的,沒有乙個數。
輸入格式:
第一行兩個整數, mm 和 dd ,其中 mm 表示操作的個數 (m \le 200,000)(m≤200,000) , dd 如上文中所述,滿足 (0(0
接下來的 mm 行,每行乙個字串,描述乙個具體的操作。語法如上文所述。
輸出格式:
對於每乙個查詢操作,你應該按照順序依次輸出結果,每個結果佔一行。
輸入樣例#1: 複製
5 100a 96
q 1a 97
q 1q 2
輸出樣例#1: 複製
969396
這道題想一下應該能想到線段樹,同時題目也很好理解:a帶個數字n:表示n加上之前的計算出的答案插入到樹中;
q帶個數字l表示將樹的末尾幾個取最大值輸出;看似(搜易賊)
對於大佬們都是簡單的,但是我為了這道題改了3個小時:
我只想分享自己易錯的地方:
1.錯誤
一開始過樣例,只得到這個答案:心態崩潰;
可是為什麼,我也不知道,最後找到老師,才搞清楚輸入問題:
錯誤輸入:
1 scanf("更改:%c%d
",&ch,&l);//輸入問題
2if(ch=='a'
) 3 add(1,++cnt,(l+ask(1,cnt-l+1,cnt))%m);
4else
5 printf("
%lld\n
",ask(1,cnt-l+1,cnt));
cin>>ch>>l;只是把scnaf改成cin得到:if(ch=='a'
) add(
1,++cnt,(l+c)%n);
else
舒服,但是不知道為什麼,也許只是個bug,求大佬指教!!!
2023年6月5號(離散化)
today,我們接觸了新的名詞 離散化,聽著就覺的高大尚 離散化是什麼,這個問題問得好 問度娘 離散化,把無限空間中有限的個體對映到有限的空間中去,以此提高演算法的時空效率。通俗的說,離散化是在不改變資料相對大小的條件下,對資料進行相應的縮小。例如 原資料 1,999,100000,15 處理後 1...
2023年 3月到2023年6月
這段時間在做乙個比較大的專案,工作量很大。總結一下吧。從2014年畢業到現在有3年多了,從android轉web端也有一段時間了。轉型的這段時間可以說挺痛苦的。剛開始還以為做web挺簡單的。但是到後面才發現事實並非如此。在這段時間踩了很多坑。1 做功能的時候忘了看設計原型跟需求文件,照著設計稿畫瓢,...
2023年3月9號 陰
心情 今天心情不太穩定,因為上班就幹活,朋友出了點事,我還惦記著和她聊聊,了解一下情況的進展。幹了半天,終於是搞定了,順便處理了乙個小問題。但是,我自己的電腦徹底費了,只有重灌系統了。晚上去上課也比較鬱悶,本來以為今天的課會有意思的,但是因為沒有預習好,我們班這些帥哥靚妹們基礎又特別好,結果第一章電...