bzoj1575 [Usaco2009 Jan]气象牛Baric
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1575
【题解】
动态规划,令f[i,j]表示前i个选了j个,且第i个必选的最小值。
转移就枚举上一个,再暴力算贡献即可。
复杂度O(n^4)
# include <stdio.h>
# include <string.h>
# include <iostream>
# include <algorithm>
// # include <bits/stdc++.h> using namespace std; typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const int M = + ;
const int mod = 1e9+, inf = 1e9; # define RG register
# define ST static
# define ABS(x) ((x) >= ? (x) : -(x)) int n, E, s[M], f[M][M]; int main() {
cin >> n >> E;
for (int i=; i<=n; ++i) scanf("%d", s+i);
// sort(s+1, s+n+1); for (int i=; i<=n; ++i)
for (int j=; j<=n; ++j)
f[i][j] = inf; for (int i=; i<=n; ++i) {
// f[i,1]
f[i][] = ;
for (int j=; j<=i-; ++j)
f[i][] = f[i][] + * ABS(s[i]-s[j]);
for (int j=i+; j<=n; ++j)
f[i][] = f[i][] + * ABS(s[i]-s[j]);
} for (int i=; i<=n; ++i)
for (int j=; j<=i; ++j) {
f[i][j] = inf;
for (int k=j-; k<i; ++k) {
int cur = f[k][j-];
if(cur == inf) continue;
for (int l=k+; l<=n; ++l)
cur = cur - * ABS(s[l] - s[k]);
for (int l=k+; l<=i-; ++l)
cur = cur + ABS(*s[l] - s[i] - s[k]);
for (int l=i+; l<=n; ++l)
cur = cur + * ABS(s[l] - s[i]);
f[i][j] = min(f[i][j], cur);
}
} for (int j=; j<=n; ++j) {
int ans = inf;
for (int i=j; i<=n; ++i)
ans = min(ans, f[i][j]);
// cout << j << ' ' << ans << endl;
if(ans <= E) {
printf("%d %d\n", j, ans);
return ;
}
} return ;
}
bzoj1575 [Usaco2009 Jan]气象牛Baric的更多相关文章
- 【动态规划】bzoj1575: [Usaco2009 Jan]气象牛Baric
预处理普通动态规划:庆祝1A三连 Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并按顺序记录了结果M_1...M_N( ...
- [BZOJ1575] [Usaco2009 Jan]气象牛Baric(DP)
传送门 DP f[i][j]表示前i个中选j个的最优解 预处理g[i][j]表示选i~j对答案的贡献 那么就可以n^3乱搞了! 注意边界 #include <cstdio> #includ ...
- bzoj:1575: [Usaco2009 Jan]气象牛Baric
Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并按顺序记录了结果M_1...M_N(1 <= M_i <= ...
- 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 ...
- [usaco jan 09] 气象牛 baric [dp]
题面: 传送门 思路: 题意有点绕,实际上就是给你一个计算规则,让你取最少的元素,通过这个计算方式,得到一个小于指定误差上限的结果 这个规则分为三个部分,这里分别用pre,sum,suf表示 因为给定 ...
- 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, ...
- 【思维题 并查集 图论】bzoj1576: [Usaco2009 Jan]安全路经Travel
有趣的思考题 Description Input * 第一行: 两个空格分开的数, N和M * 第2..M+1行: 三个空格分开的数a_i, b_i,和t_i Output * 第1..N-1行: 第 ...
随机推荐
- 【MVC】 小问题
[MVC] 小问题 1. url 传参中文乱码 : encodeURIComponent 转码 2. RedirectToAction 重定向 : ajax 调用无效, 直接 url 访问有效 3. ...
- 《数据结构与算法分析:C语言描述》读书笔记
我们数据结构的课用了这本英文教材,作者是Mark Allen Weiss.总体来说比<算法导论>简单很多,但内容上交集非常大.其实是因为去掉了大多数证明和数学,对于没有耐心看符号和公式的人 ...
- 源码-集合:ArrayList
只是文章摘录,还未研究 JAVA ArrayList详细介绍(示例) http://www.jb51.net/article/42764.htm Jdk1.6 JUC源码解析汇总 - 永远保持敬畏之心 ...
- js学习日记-常用正则符号参考
预定义类 量词 贪婪.惰性.支配性量词 前瞻 边界 RegExp是全局对象,RegExp.$1...$9是全局属性.当执行任意正则表达式匹配操作时,JavaScript会自动更新全局对象RegExp上 ...
- js滚动及可视区域的相关的操作
element.getBoundingClientRect 判断指定元素相对于页面可视窗口的位置信息,通常结合windows.onScroll方法使用,当element.getBoundingClie ...
- Percona-Tookit工具包之pt-find
Preface We used to use "find" command in linux or AIX when we need to get a certai ...
- 关于python的闭包与装饰器的实验
首先看闭包,在嵌套函数内添加返回值,可以通过外部函数读取内部函数信息 #encoding=utf-8 #闭包应用 #先定义闭包函数,并使用 def outer(func): def inner(): ...
- python 基础篇 15 内置函数和匿名函数
------------------------>>>>>>>>>>>>>>>内置函数<<< ...
- 《python机器学习—预测分析核心算法》:构建预测模型的一般流程
参见原书1.5节 构建预测模型的一般流程 问题的日常语言表述->问题的数学语言重述重述问题.提取特征.训练算法.评估算法 熟悉不同算法的输入数据结构:1.提取或组合预测所需的特征2.设定训练目标 ...
- [USACO18DEC]Cowpatibility(容斥 or bitset优化暴力)
题面 题意: 给出n个五元组(一个五元组的五个数互不相同),我们称两个五元组不和谐,当且仅当任意元素都不相同,求有多少对五元组不和谐. \(Solution:\) 很容易想到 Ans = 总共对数-和 ...