source: hcpc 2005 spring
time limit: 2 sec
memory limit: 32 m
submitted: 2567,accepted: 605
jerry是一家公司銷售部門的經理。這家公司有很多連鎖店,編號為1,2,3,... jerry每天必須關注每家連鎖店的商品數量及其變化,一項很乏味的工作。在連鎖店比較少的時候,jerry喜歡計算編號在[i,j]區間內的連鎖店中商品數量為素數的有多少家,但是現在連鎖店的數量急劇增長,計算量很大,jerry很難得出結果。
輸入格式
題目有多組輸入。每組輸入第一行有三個整數:c 連鎖店的數量 n 指令的條數 m 每家連鎖店初始的商品數量
接下來有n行,每行有一條指令。指令的格式為:
0 x y 連鎖店x的商品數量變化值為y,y > 0商品數量增加, y < 0減少
1 i j 輸出編號在[i,j]區間內的連鎖店中商品數量為素數的有多少家
1 <= i, x, j < 1000000 連鎖店中的商品數量a滿足 0 <= a < 10000000,c = n = m = 0標誌輸入結束
輸出格式
對於每組輸入,輸出它的序號。對於一組輸入中的1指令輸出要求的整數。每組輸出後列印一行空行。
樣例輸入
100000 4 4樣例輸出0 1 1
1 4 10
0 11 3
1 1 11
20 3 0
1 1 20
0 3 3
1 1 20
0 0 0
case #1:02case #2:
01
思路:樹狀陣列。開兩個陣列,乙個是樹狀陣列 bit 維護每個店是否為素數的 0,1 情況;還有另外乙個陣列儲存每個店的商品數量資訊,每次更新的時候判斷是否從素數變成合數,或者從合數變成素數,詢問總數則樹狀陣列求和即可。 處理素數直接判斷就好,如果開素數表的話會 mle。
ac:
#include #include #include using namespace std;
const int max = 1000005;
int shop[max], bit[max];
int c, n, m;
bool pri(int num)
int sum(int i)
return s;
}void add(int i, int x)
}int main()
printf("case #%d:\n", t);
while (n--) else
}printf("\n");
}return 0;
}
Hoj 1867 經理的煩惱(樹狀陣列)
jerry是一家公司銷售部門的經理。這家公司有很多連鎖店,編號為1,2,3,jerry每天必須關注每家連鎖店的商品數量及其變化,一項很乏味的工作。在連鎖店比較少的時候,jerry喜歡計算編號在 i,j 區間內的連鎖店中商品數量為素數的有多少家,但是現在連鎖店的數量急劇增長,計算量很大,jerry很難...
HOJ 1867 經理的煩惱(樹狀陣列)
問題描述 jerry是一家公司銷售部門的經理。這家公司有很多連鎖店,編號為1,2,3,jerry每天必須關注每家連鎖店的商品數量及其變化,一項很乏味的工作。在連鎖店比較少的時候,jerry喜歡計算編號在 i,j 區間內的連鎖店中商品數量為素數的有多少家,但是現在連鎖店的數量急劇增長,計算量很大,je...
HOJ 1867 經理的煩惱 樹狀陣列
題目 給出n個商店,每個商店有初始化的商品數量,現在有兩種指令 0 x y 連鎖店x的商品數量變化值為y,y 0商品數量增加,y 0減少 1 i j 輸出編號在 i,j 區間內的連鎖店中商品數量為素數的有多少家 當指令為1時,求給出 i到j的商品數量為素數的商店的數目 分析 用樹狀陣列做,只不過在u...