—Libre#2009. 「SCOI2015」小凸玩密室
#2009. 「SCOI2015」小凸玩密室
题目描述
小凸和小方相约玩密室逃脱,这个密室是一棵有 n nn 个节点的完全二叉树,每个节点有一个灯泡。点亮所有灯泡即可逃出密室。每个灯泡有个权值 Ai A_iAi,每条边也有个权值 bi b_ibi。
点亮第 1 11 个灯泡不需要花费,之后每点亮一个新的灯泡 V VV 的花费,等于上一个被点亮的灯泡 U UU 到这个点 V VV 的距离 D(u,v) D(u, v)D(u,v),乘以这个点的权值 Av A_vAv。
在点灯的过程中,要保证任意时刻所有被点亮的灯泡必须连通,在点亮一个灯泡后必须先点亮其子树所有灯泡才能点亮其他灯泡。请告诉他们,逃出密室的最少花费是多少。
输入格式
第一行包含一个数 n nn,代表节点的个数。
第二行包含 n nn 个数,代表每个节点的权值 ai a_iai。
第三行包含 n−1 n - 1n−1 个数,代表每条边的权值 bi b_ibi,第 i ii 号边是由第 i+12 \frac{i + 1}{2}2i+1 号点连向第 i+1 i + 1i+1 号点的边。
输出格式
输出包含一个数,代表最少的花费。
样例
样例输入
3
5 1 2
2 1
样例输出
5
数据范围与提示
1≤N≤2×105,1<Ai,Bi≤105 1 \leq N \leq 2 \times 10 ^ 5, 1 < A_i, B_i \leq 10 ^ 51≤N≤2×105,1<Ai,Bi≤105
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=,M=;
typedef long long LL;
int n;
LL a[N],b[N],dep[N],dis[N];
LL f[N][M],g[N][M],ans;
char c;
int read()
{
for (c=getchar();c<'' || c>'';c=getchar());
int x=c-;
for (c=getchar();c>='' && c<='';c=getchar()) x=x*+c-;
return x;
}
int main(){
n=read();
for (int i=;i<=n;i++) a[i]=read();
dep[]=;
for (int i=;i<=n;i++){
b[i]=read();
dep[i]=dep[i>>]+; dis[i]=dis[i>>]+b[i];
}
for (int i=n;i;i--){
for (int j=;j<dep[i];j++){
int lca=(i>>(dep[i]-j)),x=(i>>(dep[i]-j-))^,lt=i<<;
if (lt>n) f[i][j]=(LL)a[x]*(dis[i]+dis[x]-dis[lca]*);
else if (lt==n) f[i][j]=(LL)a[lt]*b[lt]+f[lt][j];
else f[i][j]=min((LL)a[lt]*b[lt]+f[lt][dep[i]]+f[lt|][j],(LL)a[lt|]*b[lt|]+f[lt|][dep[i]]+f[lt][j]);
}
}
for (int i=n;i;i--){
for (int j=;j<dep[i];j++){
int x=i>>(dep[i]-j),lt=i<<;
if (lt>n) g[i][j]=(LL)a[x]*(dis[i]-dis[x]);
else if (lt==n) g[i][j]=(LL)a[lt]*b[lt]+g[lt][j];
else g[i][j]=min((LL)a[lt]*b[lt]+f[lt][dep[i]]+g[lt|][j],(LL)a[lt|]*b[lt|]+f[lt|][dep[i]]+g[lt][j]);
}
}
ans=g[][];
for (int i=;i<=n;i++){
LL s=g[i][dep[i]-];
for (int j=i;j>;j>>=){
int x=j^,y=j>>; if (x>n) s+=(LL)a[y>>]*b[y];
else s+=(LL)a[x]*b[x]+g[x][dep[y]-];
}
if (s<ans) ans=s;
}
printf("%lld\n",ans);
return ;
}
—Libre#2009. 「SCOI2015」小凸玩密室的更多相关文章
- loj#2009.「SCOI2015」小凸玩密室
题目链接 loj#2009. 「SCOI2015」小凸玩密室 题解 树高不会很高<=20 点亮灯泡x,点亮x的一个子树,再点亮x另外的子树, 然后回到x的父节点,点亮父节点之后再点亮父节点的其他 ...
- #2009. 「SCOI2015」小凸玩密室
神仙题啊.完全想不出 首先看方案.可以从任意一个点开始,在这个点要先走完子树,然后走到父亲,再走兄弟,再走父亲的父亲,父亲的兄弟..一直走到1,1的另外一个子树,结束. 完全不会鸭.jpg 设f[i] ...
- 【LOJ】 #2009. 「SCOI2015」小凸玩密室
题解 神仙dp啊QAQ 我们发现我们需要枚举一个起点,遍历完它所有的儿子然后向上爬 设\(f[i][j]\)表示第i个点的子树全部处理完之后到达i深度为j的祖先的兄弟处 我们只需要对叶子节点和只有一个 ...
- 「SCOI2015」小凸玩密室 解题报告
「SCOI2015」小凸玩密室 虽然有心里在想一些奇奇怪怪的事情的原因,不过还是写太久了.. 不过这个题本身也挺厉害的 注意第一个被点亮的是任意选的,我最开始压根没注意到 \(dp_{i,j}\)代表 ...
- loj2009. 「SCOI2015」小凸玩密室
「SCOI2015」小凸玩密室 小凸和小方相约玩密室逃脱,这个密室是一棵有 $ n $ 个节点的完全二叉树,每个节点有一个灯泡.点亮所有灯泡即可逃出密室.每个灯泡有个权值 $ A_i $,每条边也有个 ...
- 「SCOI2015」小凸玩矩阵 解题报告
「SCOI2015」小凸玩矩阵 我好沙茶啊 把点当边连接行和列,在外面二分答案跑图的匹配就行了 我最开始二分方向搞反了,样例没过. 脑袋一抽,这绝壁要费用流,连忙打了个KM 然后wa了,一想这个不是完 ...
- LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配
#2006. 「SCOI2015」小凸玩矩阵 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- AC日记——「SCOI2015」小凸玩矩阵 LiBreOJ 2006
「SCOI2015」小凸玩矩阵 思路: 二分+最大流: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300 ...
- loj #2006. 「SCOI2015」小凸玩矩阵
#2006. 「SCOI2015」小凸玩矩阵 题目描述 小凸和小方是好朋友,小方给小凸一个 N×M N \times MN×M(N≤M N \leq MN≤M)的矩阵 A AA,要求小凸从其中选出 ...
随机推荐
- CUDA: 常量内存与事件
常量内存: 常量内存用于保存在核函数执行期间不会发生变化的数据,在变量面前添加 __constant__ 修饰符: __constant__ Sphere s[SPHERES]; cudaMe ...
- Pandas一些小技巧
Pandas有一些不频繁使用容易忘记的小技巧 1.将不同Dataframe写在一个Excel的不同Sheet,或添加到已有Excel的不同Sheet(同名Sheet会覆盖) from pandas i ...
- jQuery:[2]百度地图开发平台实战
jQuery:[2]百度地图开发平台实战 原文链接: http://blog.csdn.net/moniteryao/article/details/51078779 快速开始 开发平台地址 ht ...
- JAVA- String类练习
JAVA- String类练习 需求1:去除字符串两边空格的函数,写一个自己的trim(); public class TestTrim { public static void main(Strin ...
- css(5)
我觉得css中的margin:10px 0 0 4px; 先是margin-top生效,而margin-bottom则不生效.
- [原创]java在线打开PDF文档
步骤一:(涉及到的工具) 访问:http://www.zhuozhengsoft.com/dowm/,从官网下载PageOffice for Java. 步骤二:(配置工程) 1. 解压PageOff ...
- sql中使用timestamp增量抽取数据
网址:http://www.cnblogs.com/shuaifei/p/4469526.html 最近的项目中需要对上百万级的数据进行增量抽取操作,因此了解了一下TIMESTAMP的应用,特此记录 ...
- oracle 11g 常用命令
sqlplus system/123@ORCL; 查看oracle字符集: select * from nls_database_parameters where parameter ='NLS_CH ...
- HihoCoder1642 : 三角形面积和([Offer收割]编程练习赛37)(求面积)(扫描线||暴力)(占位)
描述 如下图所示,在X轴上方一共有N个等腰直角三角形.这些三角形的斜边与X轴重合,斜边的对顶点坐标是(Xi, Yi). (11,5) (4,4) /\ /\(7,3) \ / \/\/ \ / /\/ ...
- Spring笔记07(Spring AOP的通知advice和顾问advisor)
1.Spring AOP的通知advice 01.接口代码: package cn.pb.dao; public interface UserDao { //主业务 String add(); //主 ...