P4145 上帝造題的七分鐘2 花神遊歷各國

2022-03-04 07:37:45 字數 2070 閱讀 7709

xlk覺得《上帝造題的七分鐘》不太過癮,於是有了第二部。

"第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。

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

第三分鐘,k說,要能查詢,於是便有了求一段數的和的操作。

第四分鐘,彩虹喵說,要是noip難度,於是便有了資料範圍。

第五分鐘,詩人說,要有韻律,於是便有了時間限制和記憶體限制。

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

第七分鐘,這道題終於造完了,然而,造題的神牛們再也不想寫這道題的程式了。"

——《上帝造題的七分鐘·第二部》

所以這個神聖的任務就交給你了。

輸入格式:

第一行乙個整數 nnn ,代表數列中數的個數。

第二行 nnn 個正整數,表示初始狀態下數列中的數。

第三行乙個整數 mmm ,表示有 mmm 次操作。

接下來 mmm 行每行三個整數k,l,r

資料中有可能 l>rl>rl>r ,所以遇到這種情況請交換l和r

輸出格式:

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

輸入樣例#1:

10

1 2 3 4 5 6 7 8 9 10

50 1 10

1 1 10

1 1 5

0 5 8

1 4 8

輸出樣例#1:

19

76

對於30%的資料, 1≤n,m≤1000,數列中的數不超過 32767。

對於100%的資料, 1≤n,m≤100000,數列中的數大於 0,且不超過 1012

。注意l有可能大於r,遇到這種情況請交換l,r。

solution:

本題不要想得太難。(我開始竟然想去寫~暴力分塊~手動滑稽~)

首先,不難發現$10^$不停開根號,最多$6$次會變為$1$。

於是我們可以建一棵線段樹,維護區間和與區間最大值:區間和是詢問要用,就不解釋了 ; 至於區間最大值可以用來大大優化複雜度,每次修改時若當前區間的最大值不大於$1$,則不需要修改。

**:

#include#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

#define for(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)

#define ll long long

#define il inline

using

namespace

std;

const

int n=1e5+7

;ll n,m,a[n],sum[n*3],maxn[n*3

];il ll gi()

il void pushup(int

rt)il

void build(int l,int r,int

rt)

int m=l+r>>1

; build(lson);build(rson);

pushup(rt);

}il

void update(int l,int r,int l,int r,int

rt)

int m=l+r>>1

;

if(l<=m&&maxn[rt<<1]>1

)update(l,r,lson);

if(r>m&&maxn[rt<<1|1]>1

)update(l,r,rson);

pushup(rt);

}il ll query(

int l,int r,int l,int r,int

rt)int

main()

return0;

}

P4145 上帝造題的七分鐘2 花神遊歷各國

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

P4145 上帝造題的七分鐘 2 花神遊歷各國

include include include include include include include include include include using namespace std typedef long long ll const int n 1e6 5 ll a n stru...

洛谷P4145上帝造題的七分鐘 區間修改

題目 區間開平方,可以發現其實開幾次就變成1,不需要開了,所以標記一下,每次只去開需要開的地方 原來寫的並查集跳過1或0,然而wa.其實是沒有記錄原陣列的值,因為樹狀陣列存的是修改量 如果a陣列 原陣列 開int會re!改成線段樹,本來想著是這一段區間和只要小於等於其長度就可以跳過了,然而仔細想想完...