【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去好好維護就能達成,不過要注意右邊的數字也會一起被動到要記得修掉><