BZOJ1564 NOI2009二叉查找树(区间dp)
2024-09-28 02:04:20
首先按数据值排序,那么连续一段区间的dfs序一定也是连续的。
将权值离散化,设f[i][j][k]为i到j区间内所有点的权值都>=k的最小代价,转移时枚举根考虑是否修改权值即可。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 75
int n,m,b[N],f[N][N][N],sum[N];
struct data
{
int x,y,z;
bool operator <(const data&a) const
{
return x<a.x;
}
}a[N];
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj1564.in","r",stdin);
freopen("bzoj1564.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
n=read(),m=read();
for (int i=;i<=n;i++) a[i].x=read();
for (int i=;i<=n;i++) b[i]=a[i].y=read();
for (int i=;i<=n;i++) a[i].z=read();
sort(a+,a+n+);sort(b+,b+n+);
for (int i=;i<=n;i++) a[i].y=lower_bound(b+,b+n+,a[i].y)-b;
for (int i=;i<=n;i++) sum[i]=sum[i-]+a[i].z;
memset(f,,sizeof(f));
for (int i=;i<=n;i++)
{
for (int k=;k<=n;k++)
f[i][i-][k]=;
for (int k=;k<=a[i].y;k++)
f[i][i][k]=a[i].z;
for (int k=a[i].y+;k<=n;k++)
f[i][i][k]=a[i].z+m;
}
for (int k=;k<=n;k++) f[n+][n][k]=;
for (int k=;k<=n;k++)
for (int i=;i<=n-k+;i++)
{
int j=i+k-;
for (int root=i;root<=j;root++)
{
f[i][j][a[root].y]=min(f[i][j][a[root].y],f[i][root-][a[root].y]+f[root+][j][a[root].y]+sum[j]-sum[i-]);
for (int d=;d<=n;d++)
f[i][j][d]=min(f[i][j][d],f[i][root-][d]+f[root+][j][d]+sum[j]-sum[i-]+m);
}
for (int d=n;d>=;d--) f[i][j][d]=min(f[i][j][d],f[i][j][d+]);
}
cout<<f[][n][];
return ;
}
最新文章
- 函数指针_typedef
- 修改dedecms默认文章来源 ";未知";改为关键词
- nginx https使用
- Ubuntu/linux 安装 kernel-devel
- C++Primer 第九章
- android 学习随笔二十六(动画:属性动画)
- Qt之QHeaderView添加复选框
- [dp]POJ2559 &;&; HDOJ1506 Largest Rectangle in a Histogram
- NChome导出补丁包需要注意的东西
- 【转】HTML5的语音输入 渐进使用HTML5语言识别, so easy!
- Linux 开机自检的设置(tune2fs和fsck)
- HOJ———丢手绢
- [笔记]机器学习(Machine Learning) - 01.线性回归(Linear Regression)
- Spring - Spring容器概念及其初始化过程
- JS中var和let
- CentOS7搭建时间服务器-chrony(不坑)
- [JCIP笔记] (一)多线程的起源
- List集合中元素排序
- SQL Server之深入理解STUFF
- php判断用户是否关注微信公众号
热门文章
- 我们一起学习WCF 第一篇初识WCF(附源码供对照学习)
- Maven学习(十二)-----Maven POM
- Android Studio 3.1.2 Device File Explorer nothing to show
- Python中的解决中文字符编码的问题
- grunt requireJS 的基础配置
- scrapy+selenium+chromedriver解析动态渲染页面
- 印度电商Snapdeal获投$1.34亿 eBay领投
- DOM实战
- angularjs工作原理解析
- CSS布局之圣杯布局和双飞翼布局