http://www.lydsy.com/JudgeOnline/problem.php?id=1261

dp[l][r][dep]  区间[l,r]内的节点,根在dep层的最小代价

枚举根i,dp[l][r][dep]=min(dp[l][i-1][dep+1]+dp[i+1][r][dep]+f[i]*h[i])

#include<cstdio>
#include<algorithm> using namespace std; double k,c; int a[];
double f[]; double dp[][][];
bool vis[][][]; double dfs(int l,int r,int dep)
{
if(l>r) return ;
if(vis[l][r][dep]) return dp[l][r][dep];
vis[l][r][dep]=true;
dp[l][r][dep]=1e9;
for(int i=l;i<=r;++i)
dp[l][r][dep]=min(dp[l][r][dep],dfs(l,i-,dep+)+dfs(i+,r,dep+)+(k*(dep+)+c)*f[i]);
return dp[l][r][dep];
} int main()
{
int n;
scanf("%d%lf%lf",&n,&k,&c);
int m=;
for(int i=;i<=n;++i) scanf("%d",&a[i]),m+=a[i];
for(int i=;i<=n;++i) f[i]=1.0*a[i]/m;
printf("%.3lf",dfs(,n,));
}

1261: [SCOI2006]zh_tree

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 384  Solved: 259
[Submit][Status][Discuss]

Description

张老师根据自己工作的需要,设计了一种特殊的二叉搜索树。他把这种二叉树起名为zh_tree,对于具有n个结点的zh_tree,其中序遍历恰好为(1,2,3,…,n),其中数字1,2,3,…,n 是每个结点的编号。n个结点恰好对应于一组学术论文中出现的n个不同的单词。第j个单词在该组论文中出现的次数记为dj,例如,d2=10表示第2个结点所对应的单词在该组论文中出现了10次。设该组论文中出现的单词总数为S,显然,S=d1+d2+…+dn。记fj=dj/S为第j个单词在该组论文中出现的概率(频率)。 张老师把根结点深度规定为0,如果第j个结点的深度为r,则访问该结点的代价hj为hj=k(r+1)+c,其中k,c为已知的不超过100的正常数。 则zh_tree是满足以下条件的一棵二叉树:它使 h1f1+h2f2+…+hnfn 达到最小。我们称上式为访问zh_tree的平均代价。 请你根据已知数据为张老师设计一棵zh_tree。

Input

第1行:3个用空格隔开的正数: n k c 其中n<30,为整数,k,c为不超过100的正实数。 第2行:n个用空格隔开的正整数,为每个单词出现的次数(次数<200)。

Output

第1行:(5分)一个正实数,保留3位小数,为访问Zh_tree的最小平均代价。 第2行:(5分)n个用空格隔开的整数,为该树的前序遍历。一般地,作为最优解的前序遍历不一定唯一,只输出一个解。

Sample Input

4 2 3.5
20 30 50 20

Sample Output

7.000

bzoj千题计划184:bzoj1261: [SCOI2006]zh_tree的更多相关文章

  1. bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  2. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔

    http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...

  3. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  4. bzoj千题计划177:bzoj1858: [Scoi2010]序列操作

    http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...

  5. bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...

  6. bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...

  7. bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹

    http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...

  8. bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机

    http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...

  9. bzoj千题计划250:bzoj3670: [Noi2014]动物园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...

随机推荐

  1. 软件工程第三次作业(One who wants to wear the crown, Bears the crown.)

    最大连续子数组和 题目 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值.当所给的整数均为负数时定义子段和 ...

  2. 物理机通过http访问eNSP虚拟Server

    由于测试需要,本文主要通过一个简单的例子介绍通过物理机的浏览器访问华为eNSP虚拟Server,访问网页. 1.首先配置虚拟网卡的地址 2.通过华为的eNSP模拟软件,做出如下拓扑结构图,配置地址如图 ...

  3. PHP Laravel 连接并访问数据库

    第一次连接数据库 数据库配置位于config/database.php数据库用户名及密码等敏感信息位于.env文件创建一个测试表laravel_course <?php namespace Ap ...

  4. PAT甲题题解-1051. Pop Sequence (25)-堆栈

    将1~n压入最多为m元素的栈 给出k个出栈序列,问你是否能够实现. 能输出YES 否则NO 模拟一遍即可,水题. #include <iostream> #include <cstd ...

  5. Python3的bytes和str之别

    Python3不会以任意隐式的方式混用str和bytes,正是这使得:两者的区分特别清晰,在使用Python时不能拼接字符串和字节包,也无法搜索字节包里面的字符串(反之亦然),也不能讲字符串传入参数为 ...

  6. msgpack生成lib,vs新建lib等

    记录导师交给的任务 新建一个c++项目,运行老师的msgpack的cpp文件,然后会生成相应的lib,我做的东西需要调用到它(这是老师改写后的msgpack的lib) 我的任务是建一个静态库,将客户端 ...

  7. 使用Samba服务程序,让linux系统之间共享文件

    yum  install -y   cifs-utils mkdir  /database    创建挂载目录 在root家目录创建认证文件(依次为SMB用户名.SMB用户密码.SMB共享域)   v ...

  8. php实现文件上传,下载的常见文件配置

    配置文件,php.ini uploadfile  post_max_size 规定表单上传的最大文件:

  9. JS基础(四)运算符

    一.比较运算符 1.== : 判断两边值是否相等 2.>= : 判断左边的值是否大于或等于右边的值 3.<= : 判断左边边的值是否小于或等于右边的值 4.>   : 判断左边的值是 ...

  10. jsonp 接口

    一.请求接口 <script type="text/javascript" src="js/jquery.min.js"></script&g ...