題解 AT1219 歴史 研究

2022-05-25 13:00:22 字數 964 閱讀 3332

簡單分析:題面含有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...