[USACO09JAN]气象测量The Baric Bovine

为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并按顺序记录了结果M_1...M_N(1 <= M_i <= 1,000,000). Betsy想找出一部分测量结果来总结整天的气压分布. 她想用K(1 <= K <= N)个数s_j (1 <= s_1 < s_2 < ... < s_K <= N)来概括所有测量结果. 她想限制如下的误差: 对于任何测量结果子集,每一个非此子集中的结果都会产生误差.总误差是所有测量结果的误差之和 .更明确第说, 对于每一个和所有s_j都不同的i:

* 如果 i 小于 s_1, 误差是: 2 * | M_i - M_(s_1) | * 如果i在s_j和s_(j+1)之间,误差是: | 2 * M_i - Sum(s_j, s_(j+1)) | 注:Sum(x, y) = M_x + M_y; (M_x 和 M_y 之和)

* 如果i大于s_K,误差为: 2 * | M_i - M_(s_K) | Besty给了最大允许的误差E (1 <= E <= 1,000,000),找出最小的一部分结果史得误差最多为E.

输入输出格式

输入格式:

* Line 1: Two space-separated integers: N and E

* Lines 2..N+1: Line i+1 contains a single integer: M_i

输出格式:

* Line 1: Two space-separated integers: the size of the smallest subset of measurements that produces an error of at most E and the least possible error for the subset of that size.

输入样例#1: 
4 20 
10 
3 
20 
40 
输出样例#1: 

2 17

思路:

  题意困扰了我很长时间,这翻译实在是不适合我这样的蒟蒻   BZOJ还没有这道题。。。。

  经过参考别人的题解,终于弄懂了这道题的意思。

  考虑这样的一种Dp F[I][J]代表选了J个,并且一定选I这个数据的最小误差。这样可以通过暴力枚举K的方式来更新状态,题里的状态贡献描述实在是很恶心,总之就是分成三类 ,我们通过一次预处理来确定贡献,在Dp的时候进行转移即可。

  值得注意的是本题要开LongLong

代码就不上了,上了也是别人的

猜你喜欢

转载自www.cnblogs.com/Tobichi/p/9056767.html