#2009. 「SCOI2015」小凸玩密室

内存限制:256 MiB时间限制:1000 ms标准输入输出
题目类型:传统评测方式:文本比较
上传者: 匿名

题目描述

小凸和小方相约玩密室逃脱,这个密室是一棵有 n nn 个节点的完全二叉树,每个节点有一个灯泡。点亮所有灯泡即可逃出密室。每个灯泡有个权值 Ai A_iA​i​​,每条边也有个权值 bi b_ib​i​​。

点亮第 1 11 个灯泡不需要花费,之后每点亮一个新的灯泡 V VV 的花费,等于上一个被点亮的灯泡 U UU 到这个点 V VV 的距离 D(u,v) D(u, v)D(u,v),乘以这个点的权值 Av A_vA​v​​。

在点灯的过程中,要保证任意时刻所有被点亮的灯泡必须连通,在点亮一个灯泡后必须先点亮其子树所有灯泡才能点亮其他灯泡。请告诉他们,逃出密室的最少花费是多少。

输入格式

第一行包含一个数 n nn,代表节点的个数。
第二行包含 n nn 个数,代表每个节点的权值 ai a_ia​i​​。
第三行包含 n−1 n - 1n−1 个数,代表每条边的权值 bi b_ib​i​​,第 i ii 号边是由第 i+12 \frac{i + 1}{2}​2​​i+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×10​5​​,1<A​i​​,B​i​​≤10​5​​

#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」小凸玩密室的更多相关文章

  1. loj#2009.「SCOI2015」小凸玩密室

    题目链接 loj#2009. 「SCOI2015」小凸玩密室 题解 树高不会很高<=20 点亮灯泡x,点亮x的一个子树,再点亮x另外的子树, 然后回到x的父节点,点亮父节点之后再点亮父节点的其他 ...

  2. #2009. 「SCOI2015」小凸玩密室

    神仙题啊.完全想不出 首先看方案.可以从任意一个点开始,在这个点要先走完子树,然后走到父亲,再走兄弟,再走父亲的父亲,父亲的兄弟..一直走到1,1的另外一个子树,结束. 完全不会鸭.jpg 设f[i] ...

  3. 【LOJ】 #2009. 「SCOI2015」小凸玩密室

    题解 神仙dp啊QAQ 我们发现我们需要枚举一个起点,遍历完它所有的儿子然后向上爬 设\(f[i][j]\)表示第i个点的子树全部处理完之后到达i深度为j的祖先的兄弟处 我们只需要对叶子节点和只有一个 ...

  4. 「SCOI2015」小凸玩密室 解题报告

    「SCOI2015」小凸玩密室 虽然有心里在想一些奇奇怪怪的事情的原因,不过还是写太久了.. 不过这个题本身也挺厉害的 注意第一个被点亮的是任意选的,我最开始压根没注意到 \(dp_{i,j}\)代表 ...

  5. loj2009. 「SCOI2015」小凸玩密室

    「SCOI2015」小凸玩密室 小凸和小方相约玩密室逃脱,这个密室是一棵有 $ n $ 个节点的完全二叉树,每个节点有一个灯泡.点亮所有灯泡即可逃出密室.每个灯泡有个权值 $ A_i $,每条边也有个 ...

  6. 「SCOI2015」小凸玩矩阵 解题报告

    「SCOI2015」小凸玩矩阵 我好沙茶啊 把点当边连接行和列,在外面二分答案跑图的匹配就行了 我最开始二分方向搞反了,样例没过. 脑袋一抽,这绝壁要费用流,连忙打了个KM 然后wa了,一想这个不是完 ...

  7. LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配

    #2006. 「SCOI2015」小凸玩矩阵 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 ...

  8. AC日记——「SCOI2015」小凸玩矩阵 LiBreOJ 2006

    「SCOI2015」小凸玩矩阵 思路: 二分+最大流: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300 ...

  9. loj #2006. 「SCOI2015」小凸玩矩阵

    #2006. 「SCOI2015」小凸玩矩阵   题目描述 小凸和小方是好朋友,小方给小凸一个 N×M N \times MN×M(N≤M N \leq MN≤M)的矩阵 A AA,要求小凸从其中选出 ...

随机推荐

  1. JavaScript原理学习

    悟透JavaScript(理解JS面向对象的好文章) http://www.cnblogs.com/leadzen/archive/2008/02/25/1073404.html Javascript ...

  2. docker 网络模式研究了许久,其实我们需要的是docker run -p 80:80命令

    我们只是希望能够从外部访问到docker而已,并不需要去折腾该死的网络模式,桥接,host等等. -p: 端口映射,格式为:主机(宿主)端口:容器端口 sudo docker run -t -i  - ...

  3. 使用wepy 小程序授权点击取消授权失败的方案

    在wepy里使用进行小程序页面授权,里面包含了用户点击取消的重新授权方案: //auth.js /* * @Author: Porco_Mar * @Date: 2018-04-11 15:49:55 ...

  4. HTML5/CSS3动画下拉菜单

    在线演示 本地下载

  5. 打开Vs2010时,卡在加载工具箱内容 不动了

    我是直接打开Visual Studio 2010,而不是以打开解决方案的方式打开.然后就在左下角显示“正在从包‘Microsoft.VisualStudio.IDE.ToolboxControlsIn ...

  6. SDUT 2766 小明传奇2

    小明传奇2 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 小明不但创建了自己的商店而且选择了建立了自己的货币系统. 传统地,一个 ...

  7. js中得~~是什么意思/JS按位非(~)运算符与~~运算符的理解分析

    其实是一种利用符号进行的类型转换,转换成数字类型 ~~true == 1 ~~false == 0 ~~"" == 0 ~~[] == 0 ~~undefined ==0 ~~!u ...

  8. 分享知识-快乐自己:2017IDEA破解教程

    首先 修改host文件: 文件路径:C:\Windows\System32\drivers\etc\hosts 修改:将“0.0.0.0 account.jetbrains.com”追加到hosts文 ...

  9. css:before和after中的content属性

    css有一个属性叫做content.content只能使用在:after和:before之中.它用于在元素之前或者元素之后加上一些内容 就像这样: .email-address:before { co ...

  10. MCI支持的格式在注册表中的位置

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion