【TIOJ 2030】盩僰麌過街 人人喊打

原題連結:http://tioj.infor.org/problems/2030
因為上一題被CDQ洗腦很久之後莫名其妙把CDQ搞懂了
就跑來寫這題了ww

首先我們知道,對於2、3的操作是
一個詢問[QL,QR],只要雷射光的[L,R]滿足QL<=L、R<=QR就能夠造成傷害
所以這個明顯能用CDQ分治解決
問題回到第一種操作,不妨讓所有傷害落在區間內所有重複數字中最左邊的數字上
如果沒有修改,那假設一個數字位置是R,左邊有重複同樣數字的位置是L(沒有重複可定義為0)
那只要滿足QL<=L、R<=QR就「不能造成傷害」
注意到是不能造成傷害,所以再開一棵BIT紀錄屏障先把區間和硬是放進答案裡,再用扣的就和前面的雷射光是一模一樣的操作了

那我們修改的部分就剩下維護每個數字「左邊有重複同樣數字的位置」了
可以發現對於每個數字開一個set去好好維護就能達成,不過要注意右邊的數字也會一起被動到要記得修掉><

留言

這個網誌中的熱門文章

【心得文】高中資訊競賽,回顧心得文

【World Finals】2023 ICPC World Finals

【World Finals 團練紀錄】2021 ICPC World Finals