T1 聪明的奶龙
很经典的 01 01 01背包问题。
首先我们来看第一个问题,这个问题应该很好想出做法,按照容积从大到小排序,然后暴力装水就行。
先求出最少的瓶子数,我们要知道第一问是第二问的基础,即:
- k k k的转移实际上是与 t t t无关的。
- t t t转移的第一要素实际上是 k k k
现在来看第二问,总的倒入时间=水的总体积-选定最后要倒入的瓶子的剩余的水的总体积。
水的总体积是一个定值,所以我们要最小化最后要倒入的瓶子的剩余时间的水的总体积,也就是选定的瓶子的 ∑ a i \sum a_i ∑ai。
设水的总体积为 V V V。现在题目就转化成了从 n n n个瓶子里选定 t t t个瓶子使得 ∑ b i ≥ V \sum b_i \ge V ∑bi≥V,最小化 ∑ a i \sum a_i ∑ai。
这就是很经典 01 01 01背包问题。设 f ( i , j , k ) f(i,j,k) f(i,j,k)表示前 i i i个瓶子选定了 k k k个瓶子且 ∑ b i = j \sum b_i=j ∑bi=j的最大 ∑ a i \sum a_i ∑ai。
我们就会得到状态转移方程 f ( i , j , k ) = max ( f ( i − 1 , j , k ) , f ( i − 1 , j − b i , k − 1 ) + a i ) f(i,j,k)=\max(f(i-1,j,k) , f(i-1,j-b_i,k-1)+a_i) f(i,j,k)=max(f(i−1,j,k),f(i−1,j−bi,k−1)+ai)。
T2 P11037 【MX-X3-T4】「RiOI-4」上课
我们得知道方差的定义(附件已给出,不再一一赘述)
最重要的就是得先将方差的式子转化一下:
μ = 1 n ∑ i = 1 n a i \mu =\frac{1}{n}\sum_{i=1}^n a_i μ=n1∑i=