可并堆
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[三进制倍增 || 可并堆] BZOJ 4003 [JLOI2015]城池攻占
蒟蒻想起来自己还不会可并堆诶 出题人卡倍增,那么淡定的写了个三进制倍增 #include #include #include #include #include #include #include #define V G[p].v using namespace std; inline char nc() { static char buf[100000],*p1=buf,原创 2016-04-30 14:02:10 · 726 阅读 · 0 评论 -
[可并堆] BZOJ 1078 [SCOI2008]斜堆
Orz mato大神的题解:http://www.cppblog.com/MatoNo1/archive/2012/10/07/192131.html 实际上这道题并没有要写可并堆,只是考察了斜堆的性质 斜堆是可合并堆的一种实现形式,其更稳定的实现是左偏树(斜堆只能做到均摊logN,而左偏树则可以严格做到每次操作O(logN))。 斜堆最典型的特点,上面已经说过了,如果一原创 2016-04-30 16:46:16 · 410 阅读 · 0 评论 -
[Random Heap 并查集] BZOJ 1455 罗马游戏
裸的可并堆 Random Heap 还是很兹瓷啊 #include #include #include #include using namespace std; typedef long long ll; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fre原创 2016-04-30 16:07:31 · 396 阅读 · 0 评论 -
[可并堆] BZOJ 2333 [SCOI2011]棘手的操作
诶,脑子不好使了 一道裸题调了一晚上... #include #include #include #include #include using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000原创 2016-04-30 20:42:02 · 507 阅读 · 0 评论 -
[可并堆] BZOJ 2809 [Apio2012]dispatching
考虑倒着想 每次弹出最大值知道费用 #include #include #include #include using namespace std; typedef long long ll; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf原创 2016-04-30 21:10:53 · 327 阅读 · 0 评论 -
[可并堆 中位数] BZOJ 1367 [Baltic2004]sequence
结论见论文:http://wenku.baidu.com/link?url=t55yGX-UkUdEXBhpvBwuzjKP16F7lFl0RKSVVBBW5zXWRB7rRXvLLj1jM-pzhbH834hQl0KKT4va247VmSepsGDSrYF1E3le_WpnKc2xfCi 可并堆维护中位数 当size>tot/2+1时弹出堆顶最大值 把递增化为不降 只需减个下标即可原创 2016-05-02 21:22:19 · 732 阅读 · 0 评论 -
[可并堆] BZOJ 3011 [Usaco2012 Dec]Running Away From the Barn
复习下可并堆 想知道还有没有别的做法 #include #include #include using namespace std; typedef long long ll; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100原创 2016-07-16 17:45:48 · 302 阅读 · 0 评论 -
[DP 可并堆维护凸包优化] BZOJ 4585 [Apio2016]烟火表演
垂死梦中惊坐起,膜拜神犇王梦迪 #include #include #include using namespace std; typedef long long ll; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread原创 2016-08-28 18:42:59 · 1936 阅读 · 0 评论