P2933 [USACO09JAN]气象测量The Baric Bovine
挺显然的 $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的更多相关文章
- [USACO09JAN] 气象测量/气象牛The Baric Bovine 解题报告(DP)
题目链接:https://www.luogu.org/problemnew/show/P2933 Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N &l ...
- <USACO09JAN>气象测量/气象牛The Baric Bovineの思路
我..莫名其妙搞出来的 随便搞搞..幻想中的dp结果对了 我也很迷茫 Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并 ...
- head first 设计模式笔记2-观察者模式:气象观测站
设计原则:为了交互对象之间的松耦合设计而努力. 1.设计模式的一些理解 1)知道OO基础,并不足以让你设计出良好的OO系统 2)良好的OO设计必须具备可复用.可扩充.可维护三个特性 3)模式可以让我们 ...
- 6.28日模拟考试总结(T1:翻转游戏;T2:抢掠计划,T3:测绘,T4:奖学金)
今天的考试有结束了,又一次被右边的同桌虐了(额,排名第三的大佬)但是考试还是进步了一名,算是有进步吧 成绩: 那个12名就是我,一个AC都没有,太难受了. T1: 题目链接:http://hzoi.c ...
- Head First 设计模式之观察者模式(Observer Pattern)
前言: 这一节开始学习观察者模式,开始讲之前会先像第一节那样通过一个应用场景来引入该模式.具体场景为:气象站提供了一个WeatherData对象,该对象可以追踪获取天气的温度.气压.湿度信息,Weat ...
- java_设计模式_观察者模式_Observer Pattern(2016-07-27)
看了好几篇文章,最终还是觉得<Head First 设计模式>举得例子比较符合观察者模式. 观察者模式概述: 观察者模式有时被称作发布/订阅模式,它定义了一种一对多的依赖关系,让多个观察者 ...
- Soj题目分类
-----------------------------最优化问题------------------------------------- ----------------------常规动态规划 ...
- 设计模式学习之“观察者模式” [C#]
<深入浅出设计模式>学习笔记第二章 需求: 开发一套气象监测应用,如图: 气象站,目前有三种装置,温度.湿度和气压感应装置. WeatherData对象追踪气象站的数据,并更新到布告板,布 ...
- HeadFirst学习笔记-2.观察者(Observer)模式
认识观察者模式 我们用报纸和杂志的订阅为例来介绍: 报社的业务就是出版报纸. 向某家报社订阅报纸,只要他们有新报纸出版,就会给你送来.只要你是他们的订户,你就会一直收到新报纸. 当你不想再看报纸的时候 ...
随机推荐
- Git之仓库管理
介绍以及安装: Git 是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发.Git ...
- 【usaco 2013 open yinyang】阴阳
题目 Farmer John 正在在计划自己的农场漫步.他的农场的结构就像一棵树:农场有N个谷仓(1<= N <=100,000),分别由N-1条路链接.这样,他便可以通过这些谷仓间的道路 ...
- C 实现 创建多个txt文件,并以自然数列命名,然后将产生的十进制数据写入txt文档
首先:以自然数列为txt命名. 这在C++中很容易实现,之间诶to_string(int num)+".txt"就可以,但是在C中没有string,只有char,那怎么办? 这里需 ...
- linux运维、架构之路-CentOS7
一.CentOS7介绍 1.CentOS7使用起来最大的变化就是服务管理 2.systemd是linux下的一种init软件,开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化 ...
- js-进度条-动画
效果图如下: HTML: <h1>js实现进度条</h1> <div id="warp"> <div id="inn ...
- nasm不是内部或外部命令
使用nasm编译汇编的源文件: nasm -f bin first.asm -o first.bin 报错:nasm不是内部或外部命令,这种错误一看就知道,是没有配置环境变量. 点开后,选择path, ...
- web上传大文件(>4G)有什么解决方案?
众所皆知,web上传大文件,一直是一个痛.上传文件大小限制,页面响应时间超时.这些都是web开发所必须直面的. 本文给出的解决方案是:前端实现数据流分片长传,后面接收完毕后合并文件的思路. 实现文件夹 ...
- Leetcode 17. Letter Combinations of a Phone Number(水)
17. Letter Combinations of a Phone Number Medium Given a string containing digits from 2-9 inclusive ...
- 洛谷P1309 瑞士轮——题解
题目传送 思路非常简单,只要开始时把结构体排个序,每次给赢的加分再排序,共r次,最后再输出分数第q大的就行了. (天真的我估错时间复杂度用每次用sort暴力排序结果60分...)实际上这道题估算时间复 ...
- pl/sql的安装使用详解
一. 先安装 orcale10.1客户端 setup右键属性,按下图设置 net manager 设置,不设置 pl/sql developer没办法连接 二.再安装 pl/sql develo ...