有n個佇列,每個佇列有乙個上限ai
。 當佇列上限滿時,如果還要push,其會先執行一次pop。
現在有m
個操作。
每次操作都會給乙個區間的佇列push同乙個x。
要求回答每次操作後所有佇列中數的種類數。
當乙個數
x進入第
i 個佇列,這個佇列再push ai
次會pop掉這個
x 。
這個非常顯然。
現在對於每個操作,我們需要知道最早在第幾次操作後,這次操作加入的
x全部被pop,就得到了這個
x 的存在時間。
接下來對於同乙個
x的若干存在時間取並,差分字首和可以算出答案。
於是難點在求出什麼時候pop完。
我們將序列分塊,然後先考慮對於每個操作求出其所覆蓋的每個整塊什麼時候pop完,再求出散塊中每個位置什麼時候pop完。
我們列舉乙個整塊,然後考慮順序列舉操作j,同時維護乙個指標k,表示執行(j,k]的操作可以把每個位於整塊的位置彈完。假如能維護出這個指標k,顯然如果操作j包含這個整塊,就可以將k和j的答案取max。
維護的具體是我們對整塊內每個元素維護乙個val,初始為a,表示執行了(j,k]後的散塊操作其還有多少次才能彈完,同時維護val中的mx。用ad表示(j,k]中有多少操作覆蓋了整塊,那麼當mx-ad<=0時,k是合法的。
增加乙個操作時,如果其完整覆蓋了這個整塊,讓ad++。否則如果其與該整塊有交,暴力將交的部分的val–,並更新mx,減少乙個操作同理。
對於乙個操作,其只會貢獻2 sqrt n的暴力改val。
接下來解決散塊。
在處理整塊時可以維護出乙個字首和,表示覆蓋整塊的次數。
同樣要維護每種字首和第一次出現的位置。
現在我們列舉乙個位置,把散塊包含其的操作提出來,同樣two-pointer,然後用上面提到的兩個資訊就可以了。詳見**。
複雜度乙個根號。
#include
#include
#include
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
const
int maxn=100000+10,b=3;
int belong[maxn],val[maxn],sum[maxn],fi[maxn];
int l[maxn],r[maxn],data[maxn],a[maxn],b[maxn],c[maxn],id[maxn];
struct dong
} p[maxn*4];
queue dl[maxn];
int i,j,k,l,r,t,n,m,tot,top,ad,mx,len;
int read()
while (ch>='0'&&ch<='9')
return x*f;
}void ins(int
id,int f)
else
if (r[id]id]>r) return;
int i,j=l,k=r;
j=max(j,l[id]);
k=min(k,r[id]);
fo(i,j,k) val[i]-=f;
mx=0;
fo(i,l,r) mx=max(mx,val[i]);
}void work(int p,int q)
k=0;
fo(j,1,tot)
else}}
}}int main()
top=mx;
fo(i,1,n) belong[i]=(i-1)/b+1;
fo(i,1,m)
else
}fo(i,1,belong[n])
ins(k=1,1);
fo(j,1,m)
fo(j,1,m)
}len=sum[m];
work(l,r);
}tot=0;
fo(i,1,m)
mx=top;
fo(i,1,mx)
sort(p+1,p+tot+1);
r=0;
fo(i,1,mx)}}
t=0;
fo(i,1,m)
}
luogu2461遞迴數列
題目描述 乙個由自然數組成的數列按下式定義 對於i k ai bi 對於i k ai c1ai 1 c2ai 2 ckai k 其中bj 和 cj 1 j k 是給定的自然數。寫乙個程式,給定自然數m n,計算am am 1 am 2 an,並輸出它除以給定自然數p的餘數的值。輸入輸出格式 輸入格式...
hdu 2461 容斥原理 Rectangle
題意 給你n n很小 個長方形,求這中間任意長方形的面積並。題解 容斥原理。include include include using namespace std int n,q struct recrec 30 int s 1 20 3 a 22 cnt,add,id rec intersec r...
HDU 2461 Rectangles(容斥原理)
題意 給出n個矩形的左下角和右上角座標,要求進行m次操作,每次對t個矩形進行塗色 給出這t個矩形的序號 要求計算出每次塗色時需要塗色的面積。塗色可以覆蓋,即每次操作不受前面任何操作的影響 分析 矩形之間可以覆蓋,每次操作要計算覆蓋後圖形的面積,這裡就要用到容斥原理 每次操作時有如下關係式 需要塗色的...