題目描述 description線段樹的剪枝。xlk覺得《上帝造題的七分鐘》不太過癮,於是有了第二部。
"第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。
第二分鐘,l說,要能修改,於是便有了對一段數中每個數都開平方(下取整)的操作。
第三分鐘,k說,要能查詢,於是便有了求一段數的和的操作。
第四分鐘,彩虹喵說,要是noip難度,於是便有了資料範圍。
第五分鐘,詩人說,要有韻律,於是便有了時間限制和記憶體限制。
第六分鐘,和雪說,要省點事,於是便有了保證運算過程中及最終結果均不超過64位有符號整數型別的表示範圍的限制。
第七分鐘,這道題終於造完了,然而,造題的神牛們再也不想寫這道題的程式了。"
——《上帝造題的七分鐘·第二部》
所以這個神聖的任務就交給你了。
輸入描述 input description
第一行乙個整數n,代表數列中數的個數。
第二行n個正整數,表示初始狀態下數列中的數。
第三行乙個整數m,表示有m次操作。
接下來m行每行三個整數k,l,r,k=0表示給[l,r]中的每個數開平方(下取整),k=1表示詢問[l,r]中各個數的和。
upd:注意資料中有可能l>r,所以遇到這種情況請交換l和r。
輸出描述 output description
對於詢問操作,每行輸出乙個回答。
樣例輸入 sample input
101 2 3 4 5 6 7 8 9 10
50 1 10
1 1 10
1 1 5
0 5 8
1 4 8
樣例輸出 sample output197
6資料範圍及提示 data size & hint
對於30%的資料,1<=n,m<=1000,數列中的數不超過32767。
對於100%的資料,1<=n,m<=100000,1<=l,r<=n,數列中的數大於0,且不超過1e12。
注意l有可能大於r,遇到這種情況請交換l,r。
如果當前區間沒有大於1的數字,那麼sqrt並下取整後每個數字不變,所以可以維護乙個flag標記表示當前區間是否需要修改。
將乙個數字sqrt到1似乎是log級別的吧。。。不太清楚。。。
#include #include #include #include #include #include using namespace std;const int n = 100010 << 2;
typedef long long ll;
int n, m;
bool flag[n];
ll sum[n];
void build(int id, int l, int r)
build(id << 1, l, m);
build(id << 1 | 1, m + 1, r);
sum[id] = sum[id << 1] + sum[id << 1 | 1];
flag[id] = flag[id << 1] && flag[id << 1 | 1];
}void modify(int id, int l, int r, int l = 1, int r = n)
modify(id << 1, l, r, l, m);
modify(id << 1 | 1, l, r, m + 1, r);
sum[id] = sum[id << 1] + sum[id << 1 | 1];
flag[id] = flag[id << 1] && flag[id << 1 | 1];
}ll ask(int id, int l, int r, int l = 1, int r = n)
return ask(id << 1, l, r, l, m) + ask(id << 1 | 1, l, r, m + 1, r);
}int main()
if(k == 0) else
}}
codevs2492上帝造題的七分鐘 2(線段樹)
區間修改 區間查詢 可以用線段樹搞 但是一般的標記下放對這個題好像不合適 只能改葉子 然後更新父親 雖然跑的有點慢 小優化 如果某個點是1 就不用再開方了 所以搞乙個f i 標記 i 這個點還需不需要處理下去 注意用longlong 還有就是陣列開大 include include include ...
2492 上帝造題的七分鐘 2
時間限制 1 s 空間限制 64000 kb 題目等級 大師 master 題解xlk覺得 上帝造題的七分鐘 不太過癮,於是有了第二部。第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。第二分鐘,l說,要能修改,於是便有了對一段數中每個數都開平方 下取整 的操作。第三分鐘,k說,要能查詢,於是便...
藍橋杯 上帝造題5分鐘
問題描述 第一分鐘,上帝說 要有題。於是就有了l,y,m,c 第二分鐘,lyc說 要有向量。於是就有了長度為n寫滿隨機整數的向量 第三分鐘,yuhch說 要有查詢。於是就有了q個查詢,查詢向量的一段區間內元素的最小值 第四分鐘,mzc說 要有限。於是就有了資料範圍 第五分鐘,cs說 要有做題的。說完...