2492 上帝造題的七分鐘 2

2022-05-13 12:41:10 字數 1912 閱讀 9226

時間限制: 1 s

空間限制: 64000 kb

題目等級 : 大師 master

題解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 #include2 #include3 #include4 #include5 #include6 #include7

#define lli long long int

8using

namespace

std;

9const lli maxn=1000001

;10 inline void read(lli &n)

1114

while(c>='

0'&&c<='9')

15 flag==1?n=-x:n=x;16}

17lli tree[maxn];

18lli a[maxn];

19lli f[maxn];

20lli n,m,tmp;

21 lli lb(lli &x)

2225

void

add_tree(lli pos,lli v)

2632}33

lli interval_sum(lli pos)

3441

return

ans;42}

43lli find(lli x)

4449

intmain()

5059

read(m);

60for(lli i=1;i<=m;i++)

6177}78

else

//詢問

79 printf("

%lld\n

",interval_sum(r)-interval_sum(l-1

));80}81

return0;

82 }

CodeVS2492 上帝造題的七分鐘2

題目描述 description xlk覺得 上帝造題的七分鐘 不太過癮,於是有了第二部。第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。第二分鐘,l說,要能修改,於是便有了對一段數中每個數都開平方 下取整 的操作。第三分鐘,k說,要能查詢,於是便有了求一段數的和的操作。第四分鐘,彩虹喵說,要...

上帝造題的七分鐘2

xlk覺得 上帝造題的七分鐘 不太過癮,於是有了第二部。第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。第二分鐘,l說,要能修改,於是便有了對一段數中每個數都開平方 下取整 的操作。第三分鐘,k說,要能查詢,於是便有了求一段數的和的操作。第四分鐘,彩虹喵說,要是noip難度,於是便有了資料範圍...

codevs2492上帝造題的七分鐘 2(線段樹)

區間修改 區間查詢 可以用線段樹搞 但是一般的標記下放對這個題好像不合適 只能改葉子 然後更新父親 雖然跑的有點慢 小優化 如果某個點是1 就不用再開方了 所以搞乙個f i 標記 i 這個點還需不需要處理下去 注意用longlong 還有就是陣列開大 include include include ...