昨天上午參加了CSP-J,雖然是第二次,但感覺三、四都掛了。。。。
T1
題目大意
給定n,l,r,求$[l,r]$中選出一個整數$mod$ $n$所能得的最大余數。
思路
不是很難。。$O(1)$很明顯
題目大意
給定長度為$n$($n\leq8000$)的序列,有一系列修改與查詢操作
修改:修改第$x$個數的值
查詢:查詢對序列進行插入排序后原序列第$x$個數排序后所在位置
設修改$m$此,保證$m\leq5000$
思路
剛開始沒看到修改次數限制,覺着是什么數據結構或者cdq分治能不能做(有病啊,這是J組!!!)
題目中給出了插入排序的代碼,實際上第二層就是將每個元素插入到它應在的位置。而對於有序序列,改變一個數時,其他元素相對順序不變,所以只要$O(n)$將修改的元素插入就行了
不過序列中有重復元素,而通過初賽復習題目中代碼,其保證原數組中靠前的元素,在排序后也靠前
由於我開始時$sort$了一遍,時間復雜度為$O(n(logn+m))$
T3
題目大意
有一系列服務機創建及客戶機加入的請求,問能否成功,其中:
若申請地址不合法,輸出"$ERR$"
若服務機申請地址已存在,或客戶機申請地址不存在,輸出"$FAIL$"
否則,服務機申請輸出"$OK$",客戶機輸出所連服務機編號
思路心路歷程
后兩條$map$就行了,所以開心地打第一條
卡在第三個樣例上,經過仔細地讀題,發現忘了前導$0$
過了樣例后就下一題了,回家后才想起我寫的玩意在多個前導$0$時會掛。。。(悲傷.jpg)
T4
題目大意
給定一個$01$序列,其中一連串相同數字稱為一個“塊”。每次同時取出每個塊的最左元素,而兩個數字相同的塊在中間元素取完后合並為一個塊,為每次取出的為那些元素
心路歷程
刪除操作,鏈表!。。。不知道咋就放棄了
合並,並查集!。。。不知道又咋就放棄了
然后寫了個$O(初始塊數^2)$的方法。。
人眼對了前倆樣例,結果第三個樣例直接$fc$掛了。。調了一會發現我的輸出行末有空格。。。
最后七分鍾想了個$O(塊數log塊數)$的用線段樹的方法,沒打了。。
$Conclusion$
