題目鏈結
激動qwq。這是我a的第一道分塊。
分塊之後對塊內元素暴力sort。修改的時候對於整塊打個標記,查詢的時候只需要查c-tag就行了
對於非整塊,暴力修改,改完之後sort
對於查詢……非整塊暴力查詢,整塊二分c-tag的位置就好啦
#include#include#include
#include
#include
#include
#define maxn 1000010
#define sqtn 1200
using
namespace
std;
inline
long
long
read()
while
(isdigit(ch))
return num*f;
}struct
node
};struct
block
}que[sqtn];
intd[maxn];
ints[maxn];
intw[maxn];
intle[sqtn],ri[sqtn];
void sorten(intx)}
intmain()
for(int i=n;i>=1;--i);
}for(int i=1;i<=blo;++i) sorten(i);
for(int i=1;i<=m;++i)
else
if(c[0]=='a'
)
intfrom=max(le[s[y]],x);
for(int j=from;j<=y;++j)
for(int j=s[x]+1;jj)
else l=mid+1
; }
ans+=now.tot-lim+1
; }
printf(
"%d\n
",ans);}}
return0;
}/*5 31 2 3 4 5
a 1 5 4
m 3 5 1
a 1 5 4
*/
Luogu P2801 教主的魔法 分塊
修改,就是乙個區間修改的常規操作,但是為了迎合查詢的需要,對兩端的不完整的塊需要暴力重構,重新進行排序操作,保證每一塊都是單調上公升的順序。然後再說進行查詢的操作,起初,我們需要在每乙個塊內進行排序。保證順序時單調上公升的 在每乙個塊內,是獨立的 然後查詢的時候對每一塊 k 都二分查詢到大於 num...
Luogu 2801 教主的魔法
給出n個數字 m l r c 給 l r的數字加c a l r c 查詢 l r c的數字個數 區間加!線段樹 線段樹不能維護第二個操作啊 霧 分塊吧qwq 我們維護乙個塊的整體加值就好啦 luogu 2801 include include include include const int ma...
P2801 教主的魔法
題目描述 這裡 思路 這題似乎是道分塊裸題。在查詢時,我們可以對每個塊進行排序,然後二分查詢 k的元素,輸出答案。不幸的是,這道題有點卡分塊。我們可以改變塊的大小和加入優化進行卡常。include pragma gcc optimize 2 pragma gcc optimize 3 pragma ...