傳送門
話說這好像hh的項鍊啊……
然後就說一說上次看到的一位大佬很厲害的辦法吧
對於所有$r$相等的詢問,需要統計有多少個不同的數,那麼對於同乙個數字,我們只需要關心它最右邊的那乙個
比如$1,2,3,4,1,2$,對於所有$r=5$的詢問,我們不用去管第乙個$1$因為它一定可以被第五個$1$代替
同理,對於所有$r=6$的詢問,我們也不需要去管第二個$2$
然後我們可以將所有詢問離線,按$r$公升序排序
每一次進行掃瞄,如果乙個數沒有出現過,就在樹狀陣列中加入,否則就將它上一次出現的位置的那乙個刪除,再將它加入
1//minamoto
2 #include3 #include4 #include5
#define n 1000050
6#define rint register int
7using
namespace
std;
8struct
ab q[n];
11int
a[n],f[n],n,m,last[n],r;
12 inline int
read()
22 inline void print(int
x) 27
if(x<0) putchar('
-'),x=-x;
28int l=0,wt[30
];29
while(x) wt[++l]=x%10,x/=10;30
while(l) putchar(wt[l--]+48
);31
}32 inline void add(int x,int
y)36 inline int sum(int
k)42 inline bool
cmp(ab x,ab y)
45 inline bool
cmpp(ab x,ab y)
48int
main()
61 q[i].ans=sum(q[i].r)-sum(q[i].l-1
);62
}63 sort(q+1,q+1+m,cmpp);
64for(rint i=1;i<=m;i++)
65 print(q[i].ans),putchar(10
);66
return0;
67 }
3 26考試小記
昨晚做夢,夢到自己有了乙個關於字串的乙個不錯的idea,結果起床之後忘了 上來看到第一題,果然 被我昨天奶中了嗎?純數學式子題 恩,暴力分40分,很足。第二題好像是乙個dp啊,又奶中了嗎 表示只會32分狀壓。第三題計算幾何 好吧,這個故事告訴我們不能瞎立flag,第三題上來n 1000部分分,為啥我...
3 26做題筆記
昨晚的hh睡了很爽的一覺,今天神清氣爽啦 心情變好了 昨天經過一天對自己菜菜的現狀的思考,總結來說就是自己在基礎方面不是很好 特別是圖論方面,根本一竅不通 這就導致我只能做一些水題,數論題,二分題以及博弈問題。然而,這對於我來說是遠遠不夠的!於是hh就想到去洛谷鞏固一下自己的圖論以及演算法基本技巧的...
小結 普及模擬3 26
普及模擬 石子遊戲 普及模擬 公共子串 普及模擬 射擊 普及模擬 過河 60 100 0 50 210 還可以,就是第一題有點可惜,沒有想到那個詭異的優化.t1 簡單地說就是它說什麼,你打什麼.打錯了怪我嗦 開乙個棧,把顏色相同的壓在一起 這樣就可更加快速的進行 各種神奇的操作 t2 裸題裸得也太嚴...