传送门

挺显然的 $dp$ ,然鹅一开始想的是 $dfs$

乱剪剪枝搞了 $70$ 分...

设 $f[i][j]$ 表示切了 $i$ 次,当前切的位置为 $j$ 的最小误差

那么转移显然枚举上一个切的位置 $k \in [0,j)$ ,有 $f[i][j]=min(f[i][j],f[i-1][k]+g[k][j])$

其中 $g[k][j]$ 是分的两端为 $k,j$ 时中间产生的误差,这个可以 $n^3$ 预处理好

然后转移复杂度也是 $n^3$,总复杂度 $O(n^3)$

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
typedef long double ldb;
inline ll read()
{
ll x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=;
ll n,E,a[N],F[N][N],g[N][N],ans;
int main()
{
n=read(),E=read();
for(int i=;i<=n;i++) a[i]=read();
for(int i=;i<=n;i++)
for(int j=i;j<=n+;j++)
{
if(!i) for(int k=;k<j;k++) g[i][j]+=*abs(a[k]-a[j]);
if(j>n) for(int k=i+;k<=n;k++) g[i][j]+=*abs(a[k]-a[i]);
if(i&&j<=n) for(int k=i+;k<j;k++) g[i][j]+=abs(*a[k]-a[i]-a[j]);
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++) F[i][j]=E+;
F[][]=;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
for(int k=;k<j;k++) F[i][j]=min(F[i][j],F[i-][k]+g[k][j]);
for(int i=;i<=n;i++)
{
ans=E+;
for(int j=;j<=n;j++) ans=min(ans,F[i][j]+g[j][n+]);
if(ans<=E)
{
printf("%d %lld\n",i,ans);
break;
}
}
return ;
}

P2933 [USACO09JAN]气象测量The Baric Bovine的更多相关文章

  1. [USACO09JAN] 气象测量/气象牛The Baric Bovine 解题报告(DP)

    题目链接:https://www.luogu.org/problemnew/show/P2933 Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N &l ...

  2. <USACO09JAN>气象测量/气象牛The Baric Bovineの思路

    我..莫名其妙搞出来的 随便搞搞..幻想中的dp结果对了 我也很迷茫 Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并 ...

  3. head first 设计模式笔记2-观察者模式:气象观测站

    设计原则:为了交互对象之间的松耦合设计而努力. 1.设计模式的一些理解 1)知道OO基础,并不足以让你设计出良好的OO系统 2)良好的OO设计必须具备可复用.可扩充.可维护三个特性 3)模式可以让我们 ...

  4. 6.28日模拟考试总结(T1:翻转游戏;T2:抢掠计划,T3:测绘,T4:奖学金)

    今天的考试有结束了,又一次被右边的同桌虐了(额,排名第三的大佬)但是考试还是进步了一名,算是有进步吧 成绩: 那个12名就是我,一个AC都没有,太难受了. T1: 题目链接:http://hzoi.c ...

  5. Head First 设计模式之观察者模式(Observer Pattern)

    前言: 这一节开始学习观察者模式,开始讲之前会先像第一节那样通过一个应用场景来引入该模式.具体场景为:气象站提供了一个WeatherData对象,该对象可以追踪获取天气的温度.气压.湿度信息,Weat ...

  6. java_设计模式_观察者模式_Observer Pattern(2016-07-27)

    看了好几篇文章,最终还是觉得<Head First 设计模式>举得例子比较符合观察者模式. 观察者模式概述: 观察者模式有时被称作发布/订阅模式,它定义了一种一对多的依赖关系,让多个观察者 ...

  7. Soj题目分类

    -----------------------------最优化问题------------------------------------- ----------------------常规动态规划 ...

  8. 设计模式学习之“观察者模式” [C#]

    <深入浅出设计模式>学习笔记第二章 需求: 开发一套气象监测应用,如图: 气象站,目前有三种装置,温度.湿度和气压感应装置. WeatherData对象追踪气象站的数据,并更新到布告板,布 ...

  9. HeadFirst学习笔记-2.观察者(Observer)模式

    认识观察者模式 我们用报纸和杂志的订阅为例来介绍: 报社的业务就是出版报纸. 向某家报社订阅报纸,只要他们有新报纸出版,就会给你送来.只要你是他们的订户,你就会一直收到新报纸. 当你不想再看报纸的时候 ...

随机推荐

  1. 面试题常考&必考之--js中的对象的浅拷贝和深拷贝(克隆,复制)(下)

    这里主要是讲深拷贝: 深拷贝:个人理解就是拷贝所有的层级 1.像对象里再放数组和对象这些叫引用值.开始我们先判断大对象中是否有引用值(数组和小对象), 然后在判断引用值是数组还是对象 2.开始啦: 1 ...

  2. android 8.0 适配(总结)

    android 8.0 对应的 sdk 版本  26 1. 通知栏 Android 8.0 引入了通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道.用户界面将通知渠道称之为通知类别. 针 ...

  3. php实现大文件上传带进度条

    1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使 ...

  4. [USACO08FEB]连线游戏Game of Lines

    题目背景 Farmer John最近发明了一个游戏,来考验自命不凡的贝茜. 题目描述 Farmer John has challenged Bessie to the following game: ...

  5. Qt android 配置

    http://www.cnblogs.com/ztzheng/p/3703716.html

  6. AI移动,缓慢转身设置(针对AI Character)

    AICharacter自身: Use Controller Rotation Yaw设为False Auto Possess AI 设为 Placed in World or Spawned Char ...

  7. 170911-关于maven的知识点

    简介:    什么是maven 是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的. Maven的好处? 节省空间 就是对jar包的统一管理就是对jar包的统一管理,依赖 ...

  8. es的脑裂

    一个正常es集群中只有一个主节点,主节点负责管理整个集群,集群的所有节点都会选择同一个节点作为主节点:所以无论访问那个节点都可以查看集群的状态信息. 而脑裂问题的出现就是因为从节点在选择主节点上出现分 ...

  9. Gradle 学习笔记

    配置 Gradle 的环境变量 export GRADLE_HOME=/opt/software/java/gradle-3.1 export PATH=\(PATH:\)GRADLE_HOME/bi ...

  10. Linux下修改mysql root密码

    1.修改MySQL的配置文件(默认为/etc/my.cnf),在[mysqld]下添加一行skip-grant-tables 2.保存配置文件后,重启MySQL服务 service mysqld re ...