摘要:
BZOJ_1915 如果我们把一对相邻的来去经过的格子看成一个研究对象的话,那么相邻研究对象之间距离不超过K,而且相邻研究对象之间所有正数的格子都可以在向前跳的过程中经过。抽象成这样的模型之后就可以用单调队列+dp搞定最后一个研究对象在位置i时的最优解。这时由于在向前跳的过程中还可能经过最右边研究对象的右边的一些距离不超过K-1的正数的格子,最后扫一遍dp出的最优解,将这些格子一并加起来即可。#include<stdio.h>#include<string.h>#include<algorithm>#define MAXD 250010#define inf 阅读全文
摘要:
BZOJ_1916 对于这种题目,我向来是很头晕的,不过按dp的套路来的话还是可以解决的。 不妨用dp[i][j]表示在第i个点时,已经失控了j次,至少能得到的开心值。我们不妨只讨论j<K的情况,这时一共有两种选择,要么被失控,要么能主动选择。如果能主动选择的话,肯定会选接下来至少能得到的开心值最大的决策,而被失控的话,就要考虑至少能得到的开心值最小的决策了。最后再综合二者取最小值就是当前状态下至少能得到的开心值,写成状态转移方程就是dp[i][j]=min{max{dp[k][j] + w[i][k]},min{dp[k][j+1] + w[i][k]}},其中w[i][k]表示i到k 阅读全文