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 3sample output1 2 3 2 2
31 4
2 41 5
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 如果 ...