
配对堆
文章平均质量分 77
Flaze_
一只蒟蒻【扑通扑通跪laekov 扑通扑通跪yjqqqaq 扑通扑通跪mhy12345 扑通扑通跪zms_
展开
-
BZOJ 2809 [Apio2012]dispatching【可并堆(贪心
开了很久的坑,显然对于每个节点,选择以它为根的最小的那几个最优,于是每个节点开一个大根堆,从叶子往上合并就好,如果不合法就弹掉最大的元素#include#define MAXN 100005using namespace std; int n,m;inline int read(){ register char ch = getchar(); while(!isdigit(ch))原创 2016-11-29 17:29:33 · 461 阅读 · 0 评论 -
BZOJ 1455 罗马游戏【可并堆+并查集
对于每个集合维护一个堆,merge就合并,注意已经死了的不会被操作……【因为这个wa了一年2333总觉得1e6跑起来很虚?结果快的飞起#include#define MAXN 1000005using namespace std; int n,m;inline int read(){ register char ch = getchar(); while(!isdigit(ch)原创 2016-11-29 17:31:32 · 391 阅读 · 0 评论 -
BZOJ 1367 [Baltic2004]sequence【脑洞+可并堆
在黄学长博客看到似乎是某国集大爷的论文例题?先考虑不严格递增的考虑对于一段数,如果是递增的,那么应该z[i]=t[i]最优,如果是递减显然应该区间中的z都等于这个递减区间的中位数最优,于是可以把整个数列分成一堆递减的,用堆维护中位数;对于得到的中位数序列重复上面的操作,显然可以不断合并相邻的堆直到全部递增然后发现并不需要每次把整个数列分割成递减区间,可以直接把每个数当成原创 2016-11-30 14:31:22 · 450 阅读 · 0 评论