bzoj3038 上帝造題的七分鐘2

2021-07-23 23:56:02 字數 1022 閱讀 7247

description

xlk覺得《上帝造題的七分鐘》不太過癮,於是有了第二部。 「第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。

第二分鐘,l說,要能修改,於是便有了對一段數中每個數都開平方(下取整)的操作。 第三分鐘,k說,要能查詢,於是便有了求一段數的和的操作。

第四分鐘,彩虹喵說,要是noip難度,於是便有了資料範圍。 第五分鐘,詩人說,要有韻律,於是便有了時間限制和記憶體限制。

第六分鐘,和雪說,要省點事,於是便有了保證運算過程中及最終結果均不超過64位有符號整數型別的表示範圍的限制。

第七分鐘,這道題終於造完了,然而,造題的神牛們再也不想寫這道題的程式了。」 ——《上帝造題的七分鐘·第二部》 所以這個神聖的任務就交給你了。

input

第一行乙個整數n,代表數列中數的個數。 第二行n個正整數,表示初始狀態下數列中的數。 第三行乙個整數m,表示有m次操作。

接下來m行每行三個整數k,l,r,k=0表示給[l,r]中的每個數開平方(下取整),k=1表示詢問[l,r]中各個數的和。 output

對於詢問操作,每行輸出乙個回答。

考慮到實際上需要修改的次數很少,可以用並查集維護從自己開始第乙個不是1的數的位置,每次只對不是1的位置進行修改,並且用樹狀陣列維護。

#include

#include

#include

#include

using

namespace

std;

#define ll long long

int fa[100010],n,m;

ll a[100010],s[100010];

int find(int x)

void add(int p,ll x)

ll qry(int p)

int main()

}else

printf("%lld\n",qry(r)-qry(l-1));

}}

bzoj 3038 上帝造題的七分鐘2

time limit 3 sec memory limit 128 mb submit 923 solved 413 submit status discuss xlk覺得 上帝造題的七分鐘 不太過癮,於是有了第二部。第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。第二分鐘,l說,要能修改,於...

BZOJ 3038 上帝造題的七分鐘2

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

BZOJ3038 上帝造題的七分鐘2

time limit 3 sec memory limit 128 mb submit 1715 solved 728 submit status discuss xlk覺得 上帝造題的七分鐘 不太過癮,於是有了第二部。第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。第二分鐘,l說,要能修改,...