关闭

[堆] hihoCoder Challenge 29 D. 不上升序列

出烂了的原题,有可并堆的做法 然而昨晚翻原题的时候发现了精妙的做法看这里 令fi(x)f_i(x)为前ii个数,调整出最大值不超过xx的最小代价 那么fif_i是一条不升的折线 考虑转移 fi(x)=∑y≤xfi−1(y)+|ai−y|f_i(x)=\sum_{y\le x}f_{i-1}(y)+|a_i-y| 这实际上是两条折线合并一下 我们讨论两者的位置关系 实现的话只需要在堆中记下...
阅读(407) 评论(5)

[可持久化可并堆 || ST表 点分治] BZOJ 3784 树上的路径

显然是用堆来维护 每弹出一个解 加入其后继 怎么定义后继 经典做法是点分后维护一个类似超级钢琴的东西 首先对这棵树进行点分治,在分治的时候将所有点到根的距离依次放入一 个数组qq中 对于一棵子树里的点,合法的路径一定是qlql到qrqr的某个数加上自己到重心的距离 定义五元组(v,l,m,r,w)(v,l,m,r,w),表示当前路径长度为vv,在[l,r][l,r]里选出最...
阅读(179) 评论(0)

[K短路 可持久化堆] HDU 5960 Subsequence

建图不难 然后直接上K短路 A*被完虐 #include #include #include #include #include #include #define cl(x) memset(x,0,sizeof(x)); using namespace std; typedef long long ll; inline char nc(){ static char buf[1000...
阅读(213) 评论(0)

[K短路 可持久化堆 最短路径树] JDFZ 2978 第k短路(强)

链接:https://oj.jdfz.com.cn/oldoj/problem.php?id=2978 鼎爷的【课件】堆的可持久化和k短路 #include #include #include #include #include #include #define cl(x) memset(x,0,sizeof(x)); using namespace std; ty...
阅读(164) 评论(0)

[哈夫曼树 堆] BZOJ 2923 [Poi1998]The lightest language

详见BYVOID大神的blog 可以看出这是一棵哈夫曼树的若干叶子节点  那么我们开始考虑从一棵空树扩展 如果叶节点数小于n 那么取最小的扩展 否则 如果取最小的扩展 答案更优的话继续 不优的话之后同样不会变优  扩展时记得删去一些最大的数 保持堆的大小 #include #include #include #include using namespace std; inli...
阅读(128) 评论(0)

[堆] POJ 3481 Double Queue

就是很基础的两个堆 无聊了打打 据说有人用平衡树? #include #include #include #include #include using namespace std; typedef pair abcd; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p...
阅读(115) 评论(0)

[堆 贪心] Canada Cup 2016 D. Contest Balloons

不想多说 #include #include #include #include using namespace std; typedef long long ll; typedef pair abcd; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fr...
阅读(107) 评论(0)

[KD-TREE 堆] BZOJ 2626 JZPFAR

求第k远的点 大暴力啊 #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,1...
阅读(199) 评论(0)

[KD-TREE 堆] BZOJ 4520 [Cqoi2016]K远点对

题意:k远点对 不难想 用堆维护 #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...
阅读(248) 评论(0)

[主席树套堆 区间修改 标记永久化] BZOJ 3489 A simple rmq problem

“因为是OJ上的题,就简单点好了。” Orz 看看贴吧吧:http://tieba.baidu.com/p/2947256742#47989538012l 记一下next  从左到右 删了之前的标记 再从这个点到next-1都打标记 然后就可以查询了 按一个坐标离线做强制转在线么 用主席树好了 第一次打主席树区间修改 空间两个log 不过这个的前提是标记永久化 不然就是n2了...
阅读(489) 评论(0)

[A* K短路 || 可持久化堆] POJ 2449 Remmarguts' Date

这就是裸的k短路了  学习一发A*的姿势:http://yzmduncan.iteye.com/blog/1162759 这个S==T的坑要注意 #include #include #include #include #include #define V G[p].v using namespace std; inline char nc() { static char buf[...
阅读(188) 评论(0)

[贪心 堆 链表] BZOJ 3502 PA2012 Tanie linie & 51Nod 1052 最大M子段和

做法同2280 1150 多年前的代码丑 #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...
阅读(304) 评论(0)

[树链剖分 线段树 堆] BZOJ 4538 [Hnoi2016]网络

裸的树链剖分 线段树里套个堆 最暴力的打法 还有一种做法是考虑二分答案,如果大于答案的边都经过询问点,则往小的二分否则往大的二分。这样我们只要维护路径的交集。用rmq求lca的话可以做到O(1)求出两条路径的交集。可以离散后用线段树维护二分结构,并在对应的节点上记录路径交集 O(logn)内回答询问了。...
阅读(258) 评论(0)

[堆 思路题] BZOJ 4524 [Cqoi2016]伪光滑数

可持久化可并堆+DP:http://blog.csdn.net/liuguangzhe1999/article/details/51132255 我也不想这个有趣的方法就这么绝迹了呢 但是我不会打 堆:http://blog.csdn.net/dropd/article/details/51138254 #include #include #include #incl...
阅读(295) 评论(0)

[倍增 堆] BZOJ 4458 GTY的OJ

题解:JudgeOnline/upload/201604/Solution-4458.rar By jinlifu1999 超级钢琴...都已经成经典了 本来想打树链剖分和ST表的,后来看题解发现倍增更好打,膜打树链的Evan 题目后跟个题解链接是SMG #include #include #include #include using namespace std;...
阅读(310) 评论(0)

[乱搞 || 可持久化字典树 堆] BZOJ3689 异或之

%%hzwer:http://hzwer.com/3657.html 好可怕,暴力大法好 什么可持久化字典树,蒟蒻不会 #include #include #include using namespace std; typedef long long ll; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (...
阅读(358) 评论(0)
    个人资料
    • 访问:261085次
    • 积分:11910
    • 等级:
    • 排名:第1320名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:49条
    最新评论