cdoj 1256 昊昊愛運動 預處理 字首和

2022-03-31 16:50:14 字數 1279 閱讀 6005

time limit: 20 sec

memory limit: 256 mb

昊昊喜歡運動

他n天內會參加m

種運動(每種運動用乙個[1,m]

的整數表示)

舍友有q

個問題問昊昊第l

天到第r

天參加了多少種不同的運動

input

輸入兩個數n

, m (1≤n≤2000

, 1≤m≤100

);輸入n

個數ai

表示在第i天昊昊做了第ai

型別的運動;

輸入乙個數q

(1≤q≤106

);輸入q

行 每行兩個數 l

, r(1≤l≤r≤n

);output

一共q行

每一行輸出乙個數 表示昊昊在第l

天到第r

天一共做了多少種活動

sample input

5 3

1 2 3 2 2

31 4

2 41 5

sample output

3

23

題意

題解:

正解有兩種

1.n^2預處理

由於n只有2000,我們可以n^2去預處理出答案,然後對於每次詢問我們都o(1)回答

核心**:

for (i=0;i2.字首和思想

我們去維護sum[i][j],表示[1,i]中,j究竟出現了多少次。

然後對於每一次詢問,我們只要掃一遍m,判斷sum[r][i]-sum[l-1][i]是否大於0就好了

這樣預處理的複雜度是o(n),對於每乙個詢問的複雜度是o(m)

所以總體複雜度是o(n+qm)

**:

#include#include

#include

#include

using

namespace

std;

int n,m,i,tmp,j,q,l,r,ans,a[2005][105

];int

main()

scanf("%d

",&q);

for(i=1;i<=q;++i)

return0;

}

昊昊帶你學 演算法概述

什麼是演算法 雖然這篇題目叫概述,不過本菜只是不知道該叫什麼好,我這種小白腫麼敢概述演算法是不。就是總體上說說我對演算法的理解吧 o o 演算法可能有些初學童鞋接觸過。有些地方高中教材裡會涉及到 江蘇是有的 演算法導論 給出了乙個定義 所謂演算法就是定義良好的計算過程,它取乙個或一組值作為輸入,並產...

昊昊帶你學 深搜 DFS

什麼是搜尋 首先,學習搜尋,我們必須要知道我們要搜尋的是什麼。抽象的來講,是某一種狀態。而且是通過各個狀態之間的轉移來實現搜尋的。比如說我們走迷宮。你通過某種路徑走到迷宮中某個位置就可以看做乙個狀態。你想找出走出迷宮的一條路,就可以看做,從入口那一點開始,一步一步轉移,直到你出現在出口位置為止。回溯...

BZOJ 3703 昊昊的壯舉之造福社會

傳送門 搜尋,剪枝 首先可以二分答案迭代加深,假設要買 p 臺 那麼肯定賣 最小的 p 臺 再來個 a 設搜到當前情況時,有 waste 的錢一定要被浪費 其實就是某些學校剩下的錢連最便宜的都買不起 設最便宜的 p 臺電腦總價值為 sum 所有學校的總錢數為 s 那麼我們最多浪費 s tot 如果 ...