LOJ2568

按照这类折线题的套路,我们分析加入一个点引起的图像变化
设f(x)f(x)f(x)表示最终长度为xxx的最小代价
则需要考虑一个点的儿子对它有什么影响
显然f(x)f(x)f(x)为斜率变化为1的分段一次函数,考虑一个点加入到父亲的边之后产生的变化,设f(x)f(x)f(x)斜率为0的区间为[L,R][L,R][L,R],到父亲的边的权值为www,则有如下四种情况:
x≤L:f′(x)=f(x)+wx\le L:f'(x)=f(x)+wx≤L:f′(x)=f(x)+w,显然直接继承f(x−w)f(x-w)f(x−w)不比删掉www优,因为前面这段函数的斜率都≤−1\le-1≤−1
L≤x≤L+w:f′(x)=f(L)+w−(x−L)L\le x \le L+w:f'(x)=f(L)+w-(x-L)L≤x≤L+w:f′(x)=f(L)+w−(x−L),道理同上
L+w≤x≤R+w:f′(x)=f(L)L+w\le x \le R+w:f'(x)=f(L)L+w≤x≤R+w:f′(x)=f(L),直接继承最小值
R+w≤x:f′(x)=f(R)+x−(R−w)R+w\le x:f'(x)=f(R)+x-(R-w)R+w≤x:f′(x)=f(R)+x−(R−w),和第一种类似
并且我们每次只会改变右侧的点, 而这些点可以直接删除,所以用个可并堆就好了

Code:

#include<bits/stdc++.h>
#include<ext/pb_ds/priority_queue.hpp>
#define ll long long
using namespace std;
inline int read(){int res=0,f=1;char ch=getchar();while(!isdigit(ch)) {if(ch=='-') f-=f;ch=getchar();}while(isdigit(ch)) {res=(res<<1)+(res<<3)+(ch^48);ch=getchar();}return res*f;
}
const int N=1e6+5;
ll ans;
int fa[N],siz[N],w[N];
__gnu_pbds::priority_queue<ll>q[N];
int main(){int n=read(),m=read();for(int i=2;i<=n+m;i++){fa[i]=read(),w[i]=read();siz[fa[i]]++;ans+=w[i];}for(int i=n+m;i>=2;i--){ll x=0,y=0;if(i<=n){for(int j=1;j<siz[i];j++) q[i].pop();x=q[i].top();q[i].pop();y=q[i].top();q[i].pop();}q[fa[i]].push(x+w[i]);q[fa[i]].push(y+w[i]);q[fa[i]].join(q[i]);}for(int i=1;i<=siz[1];i++) q[1].pop();while(!q[1].empty()) ans-=q[1].top(),q[1].pop();cout<<ans;return 0;
}

[LOJ2568][可并堆]APIO2016:烟花表演相关推荐

  1. Loj #2568. 「APIO2016」烟花表演

    Loj #2568. 「APIO2016」烟花表演 题目描述 烟花表演是最引人注目的节日活动之一.在表演中,所有的烟花必须同时爆炸.为了确保安全,烟花被安置在远离开关的位置上,通过一些导火索与开关相连 ...

  2. 「APIO2016」烟花表演

    「APIO2016」烟花表演 解题思路 又是一道 solpe trick 题,观察出图像变化后不找一些性质还是挺难做的. 首先令 \(dp[u][i]\) 为节点 \(u\) 极其子树所有叶子到 \( ...

  3. BZOJ4585: [Apio2016]烟火表演

    Description 烟花表演是最引人注目的节日活动之一.在表演中,所有的烟花必须同时爆炸.为了确保安 全,烟花被安置在远离开关的位置上,通过一些导火索与开关相连.导火索的连接方式形成 一棵树,烟花 ...

  4. [Luogu P3642] [BZOJ 4585] [APIO2016]烟火表演

    洛谷传送门 BZOJ传送门 题目描述 烟花表演是最引人注目的节日活动之一.在表演中,所有的烟花必须同时爆炸.为了确保安全,烟花被安置在远离开关的位置上,通过一些导火索与开关相连.导火索的连接方式形成一 ...

  5. 【地球上最欢乐跑步活动】第四届草原马拉松彩跑节▪舞动青春 跑出色彩 千人篝火狂欢大型烟花表演

    ​ 这不是一场比赛 是一场色彩的暴走 COLOUR 坝上草原彩跑 坝上草原,可以说得上是适宜各类人群! 坐落于京北丰宁坝上草原,距北京158km,这里水草丰美.风吹草低.牛羊满地.堪称北京后花园. 彩 ...

  6. 【LOJ】apio2016烟火表演-可并堆凸包

    讲解详见ppt%%%% 代码 #include<cstdio> #include<cstring> #include<iostream> #include<a ...

  7. 【LOJ】#2568. 「APIO2016」烟花表演

    题解 这个听起来很毒瘤的想法写起来却非常休闲,理解起来可能很费劲 例如,我们首先到猜到答案是个下凸包 然后是不是要三分???然而并不是orz 我们通过归纳证明这个下凸包的结论来总结出了一个算法 也就是 ...

  8. P3642 [APIO2016]烟火表演(左偏树、函数)

    解析 感觉是左偏树的神题了. 首先有一个比较显然的结论,一个合法的方案中,两个叶子到它们 lca\text{lca}lca 的距离必须相等. 考虑设计 dp\text{dp}dp : fi,xf_{i ...

  9. [APIO2016]烟火表演

    链接:https://www.luogu.org/problemnew/show/P3642 跟上一道题类似但更难,首先也是观察出在某个节点代价是下凸的函数,并且得到转移方程: 1.x<=L f ...

最新文章

  1. nRF51800 蓝牙学习 进程记录 2:关于二维数组 执念执战
  2. python虚拟环境迁移及代码实现
  3. loadrunner-2-12日志解析
  4. C# Levenshtein计算字符串的相似度
  5. VS2013的项目转到VS2010需要修改的
  6. 浅析网站与网址二者之间的差别
  7. Node.js笔记 - 修改文件后自动重启node服务
  8. mysql防注入 php_PHP使用PDO实现mysql防注入功能详解
  9. 系统升级页面html,页面访问界面升级
  10. 三星s8和android auto,手机资讯导报:穿上马甲也认得三星GalaxyS8与LGG6再曝光
  11. 记一次TCP连接异常故障解决
  12. RabbitMQ简介和六种工作模式详解
  13. 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告
  14. libtool的作用及应用【转载】
  15. 2019年java全栈工程师学习大全
  16. 简单Python爬取链接二手房信息
  17. Axure-RP8 介绍
  18. PHP公众号商家收银台微信扫码付款支付源码
  19. 【网络】java密码安全
  20. Linux内核 失速(STALL) 警告说明文档翻译

热门文章

  1. 打印不超过n的自恋数(水仙花数)C语言实现
  2. 计算机图形学(一)——辐照度学概述
  3. abi:用json解析和对比linux平台下elf文件
  4. Java连接Mysql数据库详细步骤(超级详细)
  5. java角谷_Java:利用递归方法实现角谷定理
  6. 2020西式面点师(高级)模拟考试及西式面点师(高级)考试试题
  7. 斯坦福大学机器学习——K-means算法
  8. MYSQL 2059问题的解决
  9. nor和nand的区别 emmc 字符设备和块设备
  10. 《Towards Generative Aspect-Based Sentiment Analysis》论文阅读