loj2009. 「SCOI2015」小凸玩密室
「SCOI2015」小凸玩密室
Sol
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxn 200005
#define ll long long
#define ls (x<<1)
#define rs (x<<1|1)
using namespace std;
int n,a[maxn],deep[maxn],w[maxn];
ll f[maxn][],g[maxn][],sw[maxn],ans=1e16;
int main()
{
cin>>n;
for(int i=;i<=n;i++)scanf("%d",&a[i]);
for(int i=;i<=n;i++)scanf("%d",&w[i]);
for(int i=;i<=n;i++)sw[i]=sw[i/]+w[i];
for(int i=;i<=n;i++)deep[i]=deep[i/]+;
for(int x=n;x>=;x--){
int y=x^,fa=x/;
for(int i=deep[x]-;i>=;i--){
if(ls>n){
f[x][i]=(sw[x]+sw[y]-*sw[fa])*a[y];
g[x][i]=(sw[x]-sw[fa])*a[fa];
}
else {
if(rs>n){
f[x][i]=f[ls][i]+w[ls]*a[ls];
g[x][i]=g[ls][i]+w[ls]*a[ls];
}
else {
f[x][i]=min(
f[ls][deep[x]]+w[ls]*a[ls]+f[rs][i],
f[rs][deep[x]]+w[rs]*a[rs]+f[ls][i]
);
g[x][i]=min(
f[ls][deep[x]]+w[ls]*a[ls]+g[rs][i],
f[rs][deep[x]]+w[rs]*a[rs]+g[ls][i]
);
}
}
y=(y/)^;fa=fa/;
}
} for(int x=;x<=n;x++){
int y=x;ll sum=g[y][deep[y]-];
while(deep[y]>){
if((y^)<=n)sum+=w[y^]*a[y^]+g[y^][deep[y]-];
else sum+=w[y/]*a[y/];
y/=;
}
ans=min(ans,sum);
}
cout<<ans<<endl;
return ;
}
loj2009. 「SCOI2015」小凸玩密室的更多相关文章
- 「SCOI2015」小凸玩密室 解题报告
「SCOI2015」小凸玩密室 虽然有心里在想一些奇奇怪怪的事情的原因,不过还是写太久了.. 不过这个题本身也挺厉害的 注意第一个被点亮的是任意选的,我最开始压根没注意到 \(dp_{i,j}\)代表 ...
- loj#2009.「SCOI2015」小凸玩密室
题目链接 loj#2009. 「SCOI2015」小凸玩密室 题解 树高不会很高<=20 点亮灯泡x,点亮x的一个子树,再点亮x另外的子树, 然后回到x的父节点,点亮父节点之后再点亮父节点的其他 ...
- —Libre#2009. 「SCOI2015」小凸玩密室
#2009. 「SCOI2015」小凸玩密室 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 ...
- #2009. 「SCOI2015」小凸玩密室
神仙题啊.完全想不出 首先看方案.可以从任意一个点开始,在这个点要先走完子树,然后走到父亲,再走兄弟,再走父亲的父亲,父亲的兄弟..一直走到1,1的另外一个子树,结束. 完全不会鸭.jpg 设f[i] ...
- 【LOJ】 #2009. 「SCOI2015」小凸玩密室
题解 神仙dp啊QAQ 我们发现我们需要枚举一个起点,遍历完它所有的儿子然后向上爬 设\(f[i][j]\)表示第i个点的子树全部处理完之后到达i深度为j的祖先的兄弟处 我们只需要对叶子节点和只有一个 ...
- 「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,要求小凸从其中选出 ...
随机推荐
- 【CF1210D】Konrad and Company Evaluation(vector,图论)
题意:有i个人,m对两两之间的关系,第i个人初始的薪水为i,有q次操作,第i次操作会把v[i]号的薪水提升成n+i 如果两个人之间存在关系,薪水高的会向薪水低的炫耀 定义u,v,w为一个三元组,当u向 ...
- MacOS Catalina 导致bash命令失效的一些总结
欢天喜地的升级了最新的OS后,第一个发现bash失效的是使用pod命令出现: -bash: pod: command not found 这个不会导致cocoapods无法正常使用,可以使用绝对路径里 ...
- python-zx笔记2-help
在cmd运行 查看模块的方法: help—查看模块的函数 1 help()
- (转)Kubernetes设计架构
转:https://www.kubernetes.org.cn/kubernetes设计架构 Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, ...
- laravel框架手动删除迁移文件后再次创建报错
手动删除laravel框架数据表迁移文件后再次创建报错 如下图: 执行创建操作之后会在autoload_static.php及autoload_classmap.php这两个文件中添加迁移文件的目录. ...
- printf ("%*.*s")
小数点.后“*”表示输出位数,具体的数据来自参数表printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个“*”代替那个常量,然后在后面提供变量给“*”. 同样,小数点 ...
- Sublime Text 3 快捷键总结(Mac)
Command + Shift + L 光标同时定位多行 Command + Enter 在下一行插入新行.举个栗子:即使光标不在行尾,也能快速向下插入一行.
- 开源 NAS 操作系统不完全汇总
市面上能见到的 NAS 操作系统很多,有如 FreeNAS 这样意气风发的开源免费版,也有完全商业的闭源版本,更有如黑群晖之类的破解版本.NAS 系统的迭代是一个大浪淘沙的过程,活下来的系统在功能上逐 ...
- 家用NAS配置方案
对家用用户而言,NAS即一台下载机,硬件需要满足以下几点: 1.稳定性:24×7稳定无故障运行. 2.拓展性:较多的硬盘槽位,便于容量扩容: 3.体积小巧:占地面积小,便于放置. 4.方便远程管理:无 ...
- http常见7种请求
抛砖引玉,聊下概念性的东西先: HTTP协议 (Hyper Text Transfer Protocol) HTTP是一个基于TCP/IP通信协议来传递数据,包括html文件.图像.结果等,即是一个客 ...