更好閱讀體驗
小卡家有n隻狗,由於品種、年齡不同,每乙隻狗都有乙個不同的漂亮值;
漂亮值與漂亮的程度成反比(漂亮值越低越漂亮),吃飯時,狗狗們會
按順序站成一排等著主人給食物。可是嘉嘉真的很懶,他才不肯喂這麼多狗呢,
這多浪費時間啊,於是他每次就只給第i只到第j只狗中第k漂亮的狗狗餵食(好
狠心的人啊).而且為了保證某乙隻狗狗不會被喂太多次,他喂的每個區間(i,j)不互相包含;
不會平衡樹的點這裡哦
由於剛學平衡樹,這裡提供平衡樹思路,以為有很多區間,不可能
把上一次全刪掉再乙個乙個加,t飛?
考慮莫隊的思想,這題可以用莫隊(不過我不會),可以把詢問離線,拍下序,每次把
上下兩次區間重複的就不用刪除了,有大佬直接過了,可我常數大,不過吸個氧跑很快的;
#include#include#includeusing namespace std;
const int n=3e5+7;
struct nodet[n];
struct quary
if(u) t[u].cnt++;
else
splay(u,0);
}void find(int x)
splay(u,0);
}int nxt(int x,int f)
void del(int x)else t[nxt].ch[0]=0,t[nxt].siz--,t[last].siz--;
}int k_th(int x)
for(int i=1;i<=m;i++)
}
題解 Luogu P1533 可憐的狗狗
離線的題目,莫隊是不錯的解決方法 先把詢問排一下序 剩下就套乙個莫隊的板子 每來乙隻狗就把漂亮值插入平衡樹 每去掉乙隻狗就把漂亮值從平衡樹中刪掉 每次查詢查平衡樹中第k小 pragma gcc optimize o3 include define n 800005 define m 50005 us...
洛谷 P1533 可憐的狗狗 題解
題目鏈結 這題很多做法都可以過,這裡用的是離線 平衡樹treap 題目中 給出的區間不互相包含,是離線操作的乙個重要條件 我們將給出的區間按左端點從小到大排序,當左端點相同時,按右端點從小到大排序,滿足區間訪問的元素位置遞增 如果有區間互相包含就無法實現 對於每乙個區間 li ri l i,r i ...
洛谷 1533 可憐的狗狗
小卡家有n隻狗,由於品種 年齡不同,每乙隻狗都有乙個不同的漂亮值。漂亮值與漂亮的程度成反比 漂亮值越低越漂亮 吃飯時,狗狗們會按順序站成一排等著主人給食物。可是嘉嘉真的很懶,他才不肯喂這麼多狗呢,這多浪費時間啊,於是他每次就只給第i只到第j只狗中第k漂亮的狗狗餵食 好狠心的人啊 而且為了保證某乙隻狗...