博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【题解】Luogu P5290 [十二省联考2019]春节十二响
阅读量:4449 次
发布时间:2019-06-07

本文共 1252 字,大约阅读时间需要 4 分钟。

每个点维护一个堆,表示这个点及其子树所需的每段内存的空间

搜索时从下向上做启发式合并堆中信息,最后根节点堆中所有内存空间之和就是答案

#include 
#define N 200005#define ll long long#define getchar ncusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}inline int read(){ register int x=0,f=1;register char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar(); return x*f;}inline void write(register ll x){ if(!x)putchar('0');if(x<0)x=-x,putchar('-'); static int sta[20];register int tot=0; while(x)sta[tot++]=x%10,x/=10; while(tot)putchar(sta[--tot]+48);}inline int Max(register int a,register int b){ return a>b?a:b;}struct node{ int to,next;}e[N<<1];int head[N],cnt;inline void add(register int u,register int v){ e[++cnt]=(node){v,head[u]}; head[u]=cnt;}int n,a[N],dfn[N],tim=0,tmp[N];priority_queue
q[N];ll ans=0;inline void dfs(register int x){ dfn[x]=++tim; for(register int i=head[x];i;i=e[i].next) { int v=e[i].to; if(dfn[v]) continue; dfs(v); if(q[dfn[x]].size()

转载于:https://www.cnblogs.com/yzhang-rp-inf/p/10976625.html

你可能感兴趣的文章
算法笔记_075:蓝桥杯练习 最短路(Java)
查看>>
TCP的三次握手/建立连接
查看>>
Python 教程阅读笔记(一):使用解释器
查看>>
运算符重载
查看>>
SDWebImage 新版接口使用方法
查看>>
iPhone 和 Galaxy高速拍照原理具体分析
查看>>
简单的jQuery检测注册用户名
查看>>
DataTable导出为word,excel,html,csv,pdf,.txt
查看>>
android ListView详解
查看>>
使用excel估计GARCH模型参数——以GARCH(1,1)为例
查看>>
软件工程 第一次作业
查看>>
Content Server HA搭建
查看>>
vue-textarea 自适应高度
查看>>
(2)数据结构——线性表(链表)实现
查看>>
[leetCode]Linked List Cycle I+II
查看>>
leetcode中的python学习
查看>>
sqlserver打开对象资源管理器管理的帮助文档的快捷键
查看>>
php 解决乱码的通用方法
查看>>
spring aop annotation
查看>>
RSA加密解密及RSA签名和验证
查看>>