时间安排
8:00~8:20
看题,T1 觉得是区间DP,写了下状态转移方程感觉还蛮复杂的,看了眼数据规模觉得可以用 f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k]来表示 i i i到 j j j区间内 k k k能否是冠军。T2 名字就叫背包问题,看了眼题感觉像分组背包,每一组选取不同的连续段,时间复杂度 O ( v t n 2 ) O(vtn^2) O(vtn2)。T3 的话一眼没有思路,看了眼数据规模发现没部分分的数据有点慌
8:20~8:40
实现T1的区间DP。“咦?!编译器没报错过了??输下样例,过了!?”感觉还挺顺的
8:40~9:00
写T2的分组背包,用前缀和来计算连续子段的大小,算了下复杂度大概在5e8了
9:00~9:15
再去看T3,有种想用 f [ i ] [ a 1 ] [ a 2 ] . . . [ a 12 ] f[i][a_1][a_2]...[a_{12}] f[i][a1][a2]...[a12]统计使用前i个武器并且野怪的状态为后面那一块时的最小花费的冲动,再想了下既然要统计这么多状态干嘛不用状压呢?!于是考虑用 f [ m a s k ] f[mask] f[mask]表示状态为 m a s k mask mask时的最小花费。那么怎么样状态转移呢?可以用已知来推位置,用每一个武器来更新之后的状态,因为当前状态已经使用过的武器再更新只会徒增花费,肯定不会被多次统计,从而可以保证每个武器只用一次!
9:15~9:30
实现T3的上述想法,算了下复杂度还可以!
9:30~10:20
再造点样例看看前面有没有哪里错了(可是还是没查出来 T1 /(ㄒoㄒ)/)
10:20~10:25
检查freopen + + + 交题
预期得分
T1 100 p t s 100pts 100pts + + + T2 100 p t s 100pts 100pts + + + T3 100 p t s 100pts 100pts = = = 300 p t s 300pts 300pts
RESULT
原本还以为终于能AK了呢,T1果然还是有问题/(ㄒoㄒ)/~
T1
20
p
t
s
20pts
20pts,只拿了样例分,状态转移想的太复杂了,思路还是没绕过来,只要枚举前面一段可能是冠军的人和后面一段可能是冠军的人就可以啦
T2,T3 的话思路和正解差不多吧
总结
状态转移很复杂的时候有些细节还是把握的不是很到位,以后要注意这方面的代码实现