1月24日考试(ftp密码)

错因分析

♦对文件的保存不够恰当,例如第一题和第三题的题目,我是真的很愤怒,第一题在我写了一个多小时,终于样例成功.可是当我再一次打开文件时,里面只有我最开始的代码,谁可以告诉我这是为什么(我绝对保存了,还试了样例),还有第三题,也是莫名失踪,那个躺拿35分的题,我也是0分,真是愤怒(;′⌒`)

♦对字符串及其相应的应用掌握不够,例如今天的第二题,如果想简单一点,还是很好实现的,但是我由于对字符串掌握不牢靠,对那些简单的问题处理起来特别麻烦,写了好久还是放弃了

学习方法

♦今天学习了GQL大佬的写题方法,首先把自己的思路给写了出来,然后在大致思路的基础上去敲题,感觉思路清晰明快了了许多,找起错误来也更加快了,所以今天第一题我本来都放弃了,可我绝对思路很清晰,就照思路一步一步改,错误也还找的快

♦我今天改了我好久以来的一个习惯,以前我做题都是从第一题做起,然后死磕到最后一题,导致后面的即使很容易实现也没有做,今天我敲了一下第一,二题,发现总不能一遍过,由于我在题目下写了思路,我也就不怕到时候回来看题时不知道自己写的是什么,于是我就放心大胆的去看后面的题目,发现最后以题特别简单,然后就对啦(也就只有最后一题让我今天得了分(;′⌒`))

题目分析:

第一题: Bags (Bags)

题目描述

ldl和好朋友们要去爬山啦!他们一共有 K 个人,每个人都会背一个包。这些包的容量是相同的,都是 V。可以装进背包里的一共有 N 种物品,每种物品都有给定的体积和价值。在 ldl 看来,合理的背包安排方案是这样的:
1.每个人背包里装的物品的总体积恰等于包的容量。
2.每个包里的每种物品最多只有一件,但两个不同的包中可以存在相同的物品。
3.任意两个人,他们包里的物品清单不能完全相同。
在满足以上要求的前提下,所有包里的所有物品的总价值最大是多少

输入数据

第一行有三个整数:K、V、N
第二行开始的 N 行,每行有两个整数,分别代表这件物品的体积和价值。

输出数据

只需输出一个整数,即在满足以上要求的前提下所有物品的总价值的最大值。

输入样例

2 10 5
3 12
7 20
2 4
5 6
1 1

输出样例

57

数据约定

总人数 K<=50。
每个背包的容量 V<=5000。
物品种类数 N<=200。
其它正整数都不超过 5000。
输入数据保证存在满足要求的方案。

思路

这种类型的题有一个固定的名称,叫多人背包,意思就是让你求前k个优解,那很显然的这个就是要用DP来解

1.状态设置

f[i][k]

其中i表示是装到了第几个物品,而k代表的是第几优解

2.转移方程

if(f[j][c1]>f[j-V[i]][c2]+W[i])

now[++cnt]=f[j][c1++];

else now[++cnt]=f[j-V[i]][c2++]+W[i];

这是一个解决最优解和次优解的方式

你当前的最优解是取f[j-V[i]]的最优解+w[i]与当前最优解f[j][c1]的max,如果确定是由之前最优解推出来的,则次优解就是在f[j-V[i]]的次优解+w[i]和当前最优解之间取max,依次类推.......(tips由于我换了一个now数组来储存这次的最优解及k优解,所以在f数组中的上一步最优解和k优解是没有变化的,这也便于我们去寻找这一步1~k优解)

3.循环方式和背包是差不多的,只是在内部多加了一个1~k优解的确定

4.我输出1~k优解之和就可以了

 

第二题:Substr (Substr)

 

posted @ 2019-01-24 15:31  K&S&T  阅读(207)  评论(0编辑  收藏  举报