[BZOJ1575] [Usaco2009 Jan]气象牛Baric(DP)
DP
f[i][j]表示前i个中选j个的最优解
预处理g[i][j]表示选i~j对答案的贡献
那么就可以n^3乱搞了!
注意边界
#include <cstdio>
#include <cstring>
#include <iostream>
#define N 110
#define abs(x) ((x) < 0 ? -(x) : (x))
#define min(x, y) ((x) < (y) ? (x) : (y)) int n, e, ans;
int a[N], f[N][N], g[N][N]; inline int read()
{
int x = 0, f = 1;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
return x * f;
} int main()
{
int i, j, k;
n = read();
e = read();
for(i = 1; i <= n; i++) a[i] = read();
for(i = 1; i < n; i++)
for(j = 1; j <= i; j++)
g[1][i] += 2 * abs(a[j] - a[i + 1]);
for(i = 2; i <= n; i++)
for(j = i; j <= n; j++)
g[i][n] += 2 * abs(a[j] - a[i - 1]);
for(i = 2; i < n; i++)
for(j = i; j < n; j++)
for(k = i; k <= j; k++)
g[i][j] += abs(2 * a[k] - (a[i - 1] + a[j + 1]));
memset(f, 127, sizeof(f));
for(i = 1; i <= n; i++)
{
f[i][1] = g[1][i - 1] + g[i + 1][n];
for(j = 2; j <= i; j++)
for(k = 1; k < i; k++)
if(f[k][j - 1] ^ f[0][0])
f[i][j] = min(f[i][j], f[k][j - 1] - g[k + 1][n] + g[k + 1][i - 1] + g[i + 1][n]);
}
for(i = 1; i <= n; i++)
{
ans = ~(1 << 31);
for(j = i; j <= n; j++)
ans = min(ans, f[j][i]);
if(ans <= e)
{
printf("%d %d\n", i, ans);
break;
}
}
return 0;
}
[BZOJ1575] [Usaco2009 Jan]气象牛Baric(DP)的更多相关文章
- bzoj1575 [Usaco2009 Jan]气象牛Baric
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1575 [题解] 动态规划,令f[i,j]表示前i个选了j个,且第i个必选的最小值. 转移就枚 ...
- 【动态规划】bzoj1575: [Usaco2009 Jan]气象牛Baric
预处理普通动态规划:庆祝1A三连 Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并按顺序记录了结果M_1...M_N( ...
- bzoj 1575: [Usaco2009 Jan]气象牛Baric【dp】
完了不会dp了 设f[i][j]为以i结尾,有j个时的最优值,辅助数组g[i][j]为s选了i和j,i~j中的误差值 转移是f[j][i]=min(f[k][i-1]+g[k][j]) #includ ...
- bzoj:1575: [Usaco2009 Jan]气象牛Baric
Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并按顺序记录了结果M_1...M_N(1 <= M_i <= ...
- [usaco jan 09] 气象牛 baric [dp]
题面: 传送门 思路: 题意有点绕,实际上就是给你一个计算规则,让你取最少的元素,通过这个计算方式,得到一个小于指定误差上限的结果 这个规则分为三个部分,这里分别用pre,sum,suf表示 因为给定 ...
- [JZOJ]1293.气象牛[区间DP]
Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并按顺序记录了结果M_1-M_N(1 <= M_i <= 1 ...
- bzoj 1576: [Usaco2009 Jan]安全路经Travel 树链剖分
1576: [Usaco2009 Jan]安全路经Travel Time Limit: 10 Sec Memory Limit: 64 MB Submit: 665 Solved: 227[Sub ...
- 1574: [Usaco2009 Jan]地震损坏Damage
1574: [Usaco2009 Jan]地震损坏Damage Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 425 Solved: 232[Subm ...
- 【BZOJ1576】[Usaco2009 Jan]安全路经Travel 最短路+并查集
[BZOJ1576][Usaco2009 Jan]安全路经Travel Description Input * 第一行: 两个空格分开的数, N和M * 第2..M+1行: 三个空格分开的数a_i, ...
随机推荐
- OutOfMemory
查看图片格式,如果为PNG,可更改为jpg.图片会变小. 停止activity 当activity调用onStop()方法, activity不再可见,并且应该释放那些不再需要的所有资源.一旦acti ...
- Hadoop集群_VSFTP安装配置
原作者写的太好了,我这个菜鸟不自觉就转载了,原文链接:http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503864.html 如果,您认为阅读这 ...
- echarts getAttribute”的值: 对象为 null 或未定义 错误解决方法,
echarts.js引用放在head中或者放在body中HTML代码的前面了,造成加载时阻塞后面的html. 解决方法就是将echarts.js的引用放在</body>之前就可以了,完美解 ...
- sourceTree配置bitbucket
1. 为github增加账号信息 选择添加远程库 选择添加一个账号 输入用户名: 按照提示输入密码 选择bitbuchet为默认 选中搜索克隆
- O2O的十八个细分市场,运营模式如何?
社区O2O,这个行业也被媒体热炒有三年多时间了,有没有做的还算不错的案例呢?万科.龙湖.恒大.保利.易居中国.彩生活.拉卡拉.顺丰?哪个可以称得上是成功案例?战略变来变去,方向换来换去,基本上都是雷声 ...
- Centos7 安装python3.5.3
使用root用户安装:切换到root用户 su 回车,然后输入密码,切换到root用户. 新建一个脚本,如installPython.sh #!/bin/bash yum -y install zli ...
- Python 解压序列、可迭代对象并赋值给多个变量
Python数据结构和类型 1.1 解压序列赋值给多个变量 现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? 解决思路:先通过简单的解压赋值给多个变量,前提是变量的数 ...
- MFC:AfxLoadLibrary-将指定的 DLL 映射到调用进程的地址空间
Visual Studio 2012 - Visual C++ LoadLibrary 和 AfxLoadLibrary 进程调用 LoadLibrary (或 AfxLoadLibrary) 以显式 ...
- Codeforces Round #273 (Div. 2)-A. Initial Bet
http://codeforces.com/contest/478/problem/A A. Initial Bet time limit per test 1 second memory limit ...
- shell脚本,一个shell的启动流程。
#一个shell的启动流程 #shell有一些变量,叫做环境变量,这些变量是可以继承的, #比如父shell有$UID,子shell也可以有,而且继承父shell的. #正常我们声明一个变量,a=,在 ...