思路:

先把权值离散化

按数据值排序

sum[i]为前i个节点频度和

dp[i][j][w]表示把节点[i,j]合并成一颗根节点权值不小于w的子树所需的访问代价与修改代价的最小和

dp[i][j][w]=min(dp[i][k-1][w]+dp[k+1][j][w]+sum[j]-sum[i-1]+K,dp[i][k-1][a[k].weight]+dp[k+1][j][a[k].weight]+sum[j]-sum[i-1](a[k].weight>=w))

(i<=k<=j)

ans=dp[1][n][1];

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<map>
 6 #include<algorithm>
 7 using namespace std;
 8 #define MAXN 80
 9 #define INF 987654321
10 int n,m;
11 struct node
12 {
13     int key,weight,frequence;
14 }a[MAXN];
15 int sum[MAXN];
16 int dp[MAXN][MAXN][MAXN];
17 bool cmp1(const node &A,const node &B)
18 {
19     return A.weight<B.weight;
20 }
21 bool cmp2(const node &A,const node &B)
22 {
23     return A.key<B.key;
24 }
25 int main()
26 {
27     memset(dp,0,sizeof(dp));
28     scanf("%d%d",&n,&m);
29     int i,j,k,w,t;
30     for(i=1;i<=n;i++)
31         scanf("%d",&a[i].key);
32     for(i=1;i<=n;i++)
33         scanf("%d",&a[i].weight);
34     for(i=1;i<=n;i++)
35         scanf("%d",&a[i].frequence);
36     sort(a+1,a+n+1,cmp1);
37     for(i=1;i<=n;i++)
38         a[i].weight=i;
39     sort(a+1,a+n+1,cmp2);
40     sum[0]=0;
41     for(i=1;i<=n;i++)
42         sum[i]=sum[i-1]+a[i].frequence;
43     for(i=1;i<=n;i++)
44         for(j=1;j<=n;j++)
45         {
46             if(a[i].weight>=j)
47                 dp[i][i][j]=a[i].frequence;
48             else
49                 dp[i][i][j]=a[i].frequence+m;
50         }
51     for(w=n;w>=1;w--)
52     for(t=1;t<n;t++)
53     for(i=1;i+t<=n;i++)
54     {
55         j=i+t;
56         int s=INF;
57         for(k=i;k<=j;k++)
58         {
59                 s=min(s,dp[i][k-1][w]+dp[k+1][j][w]+sum[j]-sum[i-1]+m);
60                 if(a[k].weight>=w)
61                     s=min(s,dp[i][k-1][a[k].weight]+dp[k+1][j][a[k].weight]+sum[j]-sum[i-1]);
62         }
63         dp[i][j][w]=s;
64     }
65     int s=INF;
66     printf("%d\n",dp[1][n][1]);
67     return 0;
68 }

转载于:https://www.cnblogs.com/myoi/archive/2012/07/16/2592942.html

noi 2009 二叉查找树 动态规划相关推荐

  1. 【NOI 2009】诗人小G

    [NOI 2009]诗人小G Problem Description 小 \(G\) 是一个出色的诗人,经常作诗自娱自乐.但是,他一直被一件事情所困扰,那就是诗的排版问题. 一首诗包含了若干个句子,对 ...

  2. NOI 2.6 动态规划 6045:开餐馆

    题目来源:http://noi.openjudge.cn/ch0206/6045/ 6045:开餐馆 总时间限制: 1000ms   内存限制: 65536kB 描述 北大信息学院的同学小明毕业之后打 ...

  3. NOI 4.5 动态规划 1980: 陪审团的人选

    题目来源:http://noi.openjudge.cn/ch0405/1980/ 1980: 陪审团的人选 总时间限制: 1000ms    内存限制: 65536kB 描述 在遥远的国家佛罗布尼亚 ...

  4. NOI 2009 题解

    变换序列 (传送门) 题意 对于0-N-1共N个整数,给一个距离序列D0-DN-1,定义一个变换序列T0-TN-1使得每个i,Ti的环上距离等于Di.一个合法的变换序列应是0-N-1的一个排列,任务是 ...

  5. 最优二叉查找树—动态规划C++

    最优二叉查找树 一.问题描述 二.动态规划算法解题思路 三.解题思路图形化 四.思考:为什么输入概率相同(无序),输出结果不一样 流程图 实例 示例代码 一.问题描述 1.问题描述: 基于统计先验知识 ...

  6. CSP-J NOIP NOI数学与动态规划

    NOIP数学 NOIp数学_M_oisture的博客-CSDN博客_noip数学 https://www.cnblogs.com/zzyh/p/7241897.html [总结]noip数学汇总 [总 ...

  7. NOI 4.5 动态规划 4979:海贼王之伟大航路(深搜剪枝)

    题目来源:http://noi.openjudge.cn/ch0405/4979/ 4979:海贼王之伟大航路 总时间限制: 1000ms 内存限制: 65536kB 描述 "我是要成为海贼 ...

  8. 省选+NOI 第一部分 动态规划DP

    期望概率DP [整理]简单的数学期望和概率DP [整理]简单的数学期望和概率DP - nimphy - 博客园 期望&概率dp总结 期望&概率dp总结_十分残念的博客-CSDN博客 期 ...

  9. POJ-2155 Matrix 二维线段树 | 树状数组

    题目链接:http://poj.org/problem?id=2155 比较典型的二维线段树题目,直接永久更新即可,在询问的时候,要询问每个x区间的子树,复杂度O(log(n)^2). 也可以用树状数 ...

最新文章

  1. Ubuntu 16.04 install NVDIA display driver
  2. 与微信、APP正面刚?三大运营商联合发布5G消息白皮书
  3. 完全搞懂傅里叶变换和小波(3)——泰勒公式及其证明
  4. 关于React-native的介绍以及环境搭建
  5. jquery.validate
  6. IDC:无线数字化转型持续进行 第二季度全球企业WLAN市场强劲增长
  7. mysql centos_centos7mysql安装
  8. springcloud之config配置中心
  9. Dism++ 一款传说中的系统工具,使用简介
  10. C++ 读取和写入txt文件
  11. ML之SHAP:机器学习可解释性之SHAP值之理解单样本单特征预测
  12. 乾颐堂安德华为数通HCNA真题解析版(第2部分)
  13. 浏览器提示网站证书过期或还未生效
  14. php 变量 打字费劲,电脑自己打字停不下来
  15. 灰狼算法(GWO)优化长短期记忆神经网络的数据回归预测,GWO-LSTM回归预测,多输入单输出模型。
  16. Revit开发之载入族的创建小技巧
  17. 各种OJ网站,刷题必备
  18. font-family、font-style、font-weight、font-variant的区别「In CSS」
  19. 计算机专业英语谐音读法,英语48个音标中文谐音读法大全
  20. 电信网通的IP地址分布

热门文章

  1. php查找以xx结尾的的字符串单词,Javascript中查找不以XX字符结尾的单词示例代码_javascript技巧...
  2. php get 数据类型,PHP基础-数据类型-integet
  3. express html文件接收路由参数,express 获取post 请求参数
  4. sed mysql配置文件_shell解析my.cnf配置文件
  5. HTML+CSS+JS实现 ❤️520爱心背景表白网页动画特效❤️
  6. mysql sphinx 中文搜索_sphinx+mysql+mmseg 实现中文全站搜索 安装配置文档
  7. java从数组中删除元素(数组的缩容)
  8. java中.of,java中instanceof的用法
  9. Spring基于Annotation装配Bean
  10. Java字符流的使用