題解 可憐的狗狗

2022-05-05 17:06:11 字數 813 閱讀 1637

更好閱讀體驗

小卡家有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漂亮的狗狗餵食 好狠心的人啊 而且為了保證某乙隻狗...