2016.9.24
考试思路:
这次因为偷懒没有比赛,所以没有考试思路。
正确思路:
T1
这一题就是一道比较普通的dp,思路和方法大致和01背包一样,就是加入了一个空间的条件,所以可以用三维数组进行dp,f[i,j,k]表示选到第i个药材,总质量为j,总体积k的最大价值,状态转移方程也显而易见,就是f[i,j,k]:=max(f[i,j,k],f[i-1,j-质量[i],k-体积[i]]),最后答案就是f[n,m,v],但要注意数据大小,要用到int64。
T2
这题相对来说比较简单,就是暴力枚举(不用加太多优化)加上快速排序,就可以了。
T3
这题是个递推,f[i,j]表示选到第i种物品,一共抽了j个物品的方案总数,可以利用杨辉三角,三个循环,初始化f[i,0]:=1,然后递推公式也显而易见,所以送上程序核心部分
for i:=1 to max do //max是物品里最大的序号
for j:=1 to n do
for l:=0 to min(a[i],j) do
f[i,j]:=f[i,j]+f[i-1,j-l];
最后输出f[max,k]就可以了。
T4
这题也是个递推,但只能从上往下,从左往右推,应为这样才可以结合之前的答案,大部分的情况都是f[i,j]:=min(f[i-1,j],f[i,j-1])+a[i,j],a[i,j]为i,j位置原本的好奇程度,而还有些边界情况自己想想就可以得出来啦。