BZOJ4585: [Apio2016]烟火表演
Description
Input
所有的输入均为正整数。令 N代表分叉点的数量, M代表烟花的数量。分叉点从1 到N 编
Output
输出调整导火索长度,让所有烟花同时爆炸,所需要的最小代价
Sample Input
1 5
2 5
2 8
3 3
3 2
3 3
2 9
4 4
4 3
Sample Output
HINT
Source
#include <bits/stdc++.h>
using namespace std;const int MAXN = 600060;struct node
{int l, r, dis;long long v;
}e[MAXN];long long p[MAXN], sum;
int n, m, tot, fa[MAXN], len[MAXN], rt[MAXN], d[MAXN], cnt;inline int merge(int x, int y)
{if( !x || !y ) return x + y;if( e[ x ].v < e[ y ].v ) swap( x, y );e[ x ].r = merge( e[ x ].r, y );if( e[ e[ x ].l ].dis < e[ e[ x ].r ].dis ) swap( e[ x ].l, e[ x ].r );if( !e[ x ].r ) e[ x ].dis = 0;else e[ x ].dis = e[ e[ x ].r ].dis + 1;return x;
}inline int pop(int x) { return merge( e[ x ].l, e[ x ].r ); }int main()
{scanf( "%d%d", &n, &m );for( int i = 2 ; i <= n + m ; i++ ){scanf( "%d%d", &fa[ i ], &len[ i ] );sum += len[ i ];d[ fa[ i ] ]++;}for( int i = n + m ; i > 1 ; i-- ){long long l = 0, r = 0;if( i <= n ){while( --d[ i ] ) rt[ i ] = pop( rt[ i ] );r = e[ rt[ i ] ].v; rt[ i ] = pop( rt[ i ] );l = e[ rt[ i ] ].v; rt[ i ] = pop( rt[ i ] );}e[ ++tot ].v = l + len[ i ];e[ ++tot ].v = r + len[ i ];rt[ i ] = merge( rt[ i ], merge( tot, tot - 1 ) );rt[ fa[ i ] ] = merge( rt[ fa[ i ] ], rt[ i ] );}while( d[ 1 ]-- ) rt[ 1 ] = pop( rt[ 1 ] );while( rt[ 1 ] ) p[ ++cnt ] = e[ rt[ 1 ] ].v, rt[ 1 ] = pop( rt[ 1 ] );for( int i = 1 ; i <= cnt ; i++ )sum -= p[ i ];cout << sum << endl;return 0;
}
BZOJ4585: [Apio2016]烟火表演相关推荐
- BZOJ4585 [Apio2016]烟火表演
"这个凸包的形式,妙啊,他妙啊,妙啊" 王梦迪神犇在讲题的时候写的题解挺详细的 我们对每个点,有一个把子树内长度统一的花费关于统一成的长度的函数f(x),易知这个函数是下凸的,对于 ...
- [Luogu P3642] [BZOJ 4585] [APIO2016]烟火表演
洛谷传送门 BZOJ传送门 题目描述 烟花表演是最引人注目的节日活动之一.在表演中,所有的烟花必须同时爆炸.为了确保安全,烟花被安置在远离开关的位置上,通过一些导火索与开关相连.导火索的连接方式形成一 ...
- P3642 [APIO2016]烟火表演(左偏树、函数)
解析 感觉是左偏树的神题了. 首先有一个比较显然的结论,一个合法的方案中,两个叶子到它们 lca\text{lca}lca 的距离必须相等. 考虑设计 dp\text{dp}dp : fi,xf_{i ...
- [APIO2016]烟火表演
链接:https://www.luogu.org/problemnew/show/P3642 跟上一道题类似但更难,首先也是观察出在某个节点代价是下凸的函数,并且得到转移方程: 1.x<=L f ...
- 【LOJ】apio2016烟火表演-可并堆凸包
讲解详见ppt%%%% 代码 #include<cstdio> #include<cstring> #include<iostream> #include<a ...
- luogu P3642 [APIO2016]烟火表演
https://www.luogu.com.cn/problem/P3642 好毒瘤啊!!! 首先按照套路 设f(x)表示以u为根的,距离为x的最小代价设f(x)表示以u为根的,距离为x的最小代价设f ...
- 【APIO2016】烟火表演(可并堆)(折线DP)
传送门 题解: 设fi(x)f_i(x)fi(x)表示在iii的子树中,所有叶子到iii距离为xxx的时候,子树内部修改的最小代价. 显然是个分段一次函数,大力讨论记录下端点就行了. 注意到可能会出 ...
- 【APIO2016】烟火表演
题面 题解 神仙题目啊QwQ 设\(f_i(x)\)表示以第\(i\)个点为根的子树需要\(x\)秒引爆的代价. 我们发现,这个函数是一个下凸的一次分段函数. 考虑这个函数合并到父亲节点时会发生怎样的 ...
- (APIO)烟火表演
- - 不要问我发生了什么- 要问就去这篇博客下面留言,拷问这个博主的良心 于是!我今天来做这道题了- (我也是够会作的-) 题目描述 众所周知,是最引人注目的节日活动之一.在表演中,所有的烟花必须同 ...
最新文章
- 基于MATLAB的数字图像K-L变换,基于DCT变换的图像编码方法研究
- 神策 FM:做一名数据分析师是什么体验?
- sql server 数据脚本生成工具
- [Swift]LeetCode39. 组合总和 | Combination Sum
- 《计算机应用基础》期末试卷.,《计算机应用基础》期末试卷(A卷)《计算机应用基础》期末试卷(A卷).doc...
- android搜索框功能实现_巧用 Trie 树,实现搜索引擎关键词提示功能
- java vert.x_使用Vert.x将JavaScript引入Java企业
- 【采访】腾讯社交广告高校算法大赛第三周周冠军——到底对不队比赛经验及心得分享
- WPF界面设计的模式
- 论文翻译——Skin Lesion Synthesis with Generative Adversarial Networks
- 小谈一下Qt的绘制引擎(结尾有彩蛋)
- 华为手机计算机如何表达平方,华为手机郑平方:荣耀成功源于共享质量体系
- linux shell编程从入门到精通pdf_SHELL脚本编程入门
- A7600C USIM卡接口设计
- 初识python导学案_高中数学 第三章 三角恒等变换 3_2_2 半角的正弦、余弦和正切学案 新人教b版必修4...
- 软件项目外包平台:公司刚刚创业,人手不够怎么办?外包吧
- 可控硅失效现象_晶闸管常见损坏原因分析(全)
- python爬虫三大解析数据方法:bs4 及爬小说网案例
- C#在国内这么惨的么?
- 深度调查:内耗不止,Sushiswap内部究竟发生了什么?|链捕手