摘要:
这个题挺厉害的,一道线性规划和网络流结合的经典模型。那样例来解释吧:Min->X1+5*X2+6*X3+3*X4+4*X5X2+X3≥1X1+X2+X3+X4+X5≥4X3+X4+X5≥2X1,X2,X3,X4,X5≥0我们可以利用对偶原理把它转化成标准形式:Max->Y1+4*Y2+2*Y3Y2≤1Y1+Y2≤5Y1+Y2+Y3≤6Y2+Y3≤3Y2+Y3≤4增加松弛变量,把标准形式变成松弛形式Max->Z=Y1+4*Y2+2*Y3Y2+Y4=1Y1+Y2+Y5=5Y1+Y2+Y3+Y6=6Y2+Y3+Y7=3Y2+Y3+Y8=4到这里,其实我们已经可以利用单纯形来解决了。 阅读全文
摘要:
很容易想出O(NMT)的算法,枚举时间,然后枚举位置,转移就好了,大概是f[t][i][j]=max(f[t-1][i][j],f[t-1][i-dx[t]][j-dy[t]]+1) dx,dy表示某时刻的滑行方向。这样显然过不了,但是看到每一时间段滑行的方向是相同的,也就是只会在一条直线上转移,于是可以用单调队列维护这一条线上的最优值。当某位置是障碍的时候,这个点不能转移或者被转移,那么清空队列;当转移长度大于时间段长度的时候,当前值不合法,需要后移队首指针;当不动比队尾还要优的时候,队尾永远不可能成为最优值,那么前移队尾指针。这样枚举时间段,枚举位置就可以了,O(NMK)。adv1900 阅读全文