簡單分析:題面含有ioi(驚),可知此題是ioi(數字三角形)難度(逃)。
當然很多人都是抱著學回滾莫隊的目標來看這道題的,所以這裡介紹一下回滾莫隊。
1、按莫隊的思路講詢問排序。
2、查詢時列舉每個區間,我們需要保證右端點是保持單調遞增的,同時左端點每次在乙個塊中移動,以此來計算每個詢問的值。
3、每一次到下乙個塊就講左端點移回右端點,移的過程不需要再像莫隊一樣乙個個移,只需要將莫隊中改變的資料清0,然後將右端點賦值到左端點就可以了。
所以其實這道題是回滾莫隊板子題。
#include#include#include#define int long long
using namespace std;
struct kkka[1000001];
struct ggga1[1000001];
int block,blo[1000001],v[1000001],vis[1000001],cnt[1000001],sum[1000001],aa[1000001];
int vis[1000001],maxx,maxy,pos;
int n,c,m,l,r;
bool cmp1(ggg a,ggg b)
a[i].ans=maxx;
while(lmaxx=last;
}return i;
}signed main()
sort(a1+1,a1+n+1,cmp1);
for(int i=1,j=0;i<=n;i++)
for(int i=1;i<=m;i++)
pos=1;
sort(a+1,a+m+1,cmp);
for(int i=1;i<=num;i++)
sort(a+1,a+m+1,comp);
for(int i=1;i<=m;i++)
return 0;
}
AT1219 歴史 研究 回滾莫隊
題目描述見鏈結 直接使用莫隊,但是這道題目刪除時不好尋找次大值,考慮回滾莫隊,回滾莫隊的處理方式與莫隊大致是相同的,具體來說 對兩個相鄰的詢問區間 l r l,r l r l,r l r l r 若 b k id l bk id r bk id l bk id r bk id l b k id r ...
回滾莫隊 AT1219 歴史 研究
洛谷題目 at1219 不滿足區間減性質的運算,如最值,就不能用普通莫隊求,考慮回滾莫隊,它的核心思想就是若區間在塊內直接暴力,否則將右端點從小到大排序,右端點按普通莫隊求,那麼左端點由於只在乙個塊內,所以詢問完跳到塊末,由於塊的大小為根號,影響複雜度的實際上是右端點,然後每次處理完相同左端點塊清除...
AT1219 歴史 研究(回滾莫隊模板)
點此看題面 這種區間詢問的問題一般來說可以利用莫隊解決。然而這道題求的是最大值,似乎普通莫隊就無法很好地實現刪除操作,因此就需要回滾莫隊這種黑科技。考慮我們先暴力處理掉左端點和右端點在同乙個塊內的詢問 顯然這部分複雜度是 o n sqrt n 的 然後對於剩餘的詢問把它扔到左端點對應塊的 vecto...