刷題 BZOJ 5415 Noi2018 歸程

2022-05-25 13:12:07 字數 1288 閱讀 9339

考試的時候打的可持久化並查集,沒調出來qaq

後面知道了kruskal重構樹這個東西,感覺好簡單啊

這道題就建出kruskal重構樹後,對於兩個點找到它們的lca,其子樹min就是答案

#include#define ui unsigned int

#define ll long long

#define db double

#define ld long double

#define ull unsigned long long

const int maxn=200000+10,maxm=400000+10,inf=0x3f3f3f3f;

int t,n,m,e,beg[maxn],nex[maxm<<1],to[maxm<<1],w[maxm<<1],wt[maxn<<1],mn[maxn<<1],cnt,d[maxn],fa[maxn<<1],jie[20][maxn<<1];

ll lastans;

struct node

};node side[maxm];

struct cmp

};std::priority_queue,cmp> q;

templateinline void read(t &x)

templateinline void write(t x,char ch='\0')

templateinline void chkmin(t &x,t y)

templateinline t min(t x,t y)

inline void insert(int x,int y,int z)

inline void dijkstra()

}inline int found(int x)

inline void init()

} for(register int j=1;j<=19;++j)

for(register int i=1;i<=cnt;++i)jie[j][i]=jie[j-1][jie[j-1][i]];

}inline int get(int x,int a)

int main()

; insert(u,v,l);insert(v,u,l);

} init();

ll q,k,s;

read(q);read(k);read(s);

while(q--)

}return 0;

}

刷題 BZOJ 4946 Noi2017 蔬菜

網上大部分都是並查集寫法,但是有大神寫了非並查集寫法,特別容易理解 首先 s i 的限制,只需將每乙個蔬菜分出乙個價值為 a i s i 且過期時間為該蔬菜最晚的一天的蔬菜 把時間倒序之後,問題轉化為每個蔬菜會在第幾天出現,每天貪心選擇價值最大的即可 先求出 max 的答案,然後遞推 1,max 1...

LeetCode刷題系列20

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...

刷題 力扣 20

題目鏈結 題目描述 給定乙個只包括 的字串 s 判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。示例 1 輸入 s 輸出 true示例 2 輸入 s 輸出 true示例 3 輸入 s 輸出 false示例 4 輸入 s 輸出 false示例 5 輸入 ...