151209总结

T1


和一般的题(DP、贪心)不一样,每项工作可以不用一次性做完,所以可以想到网络流

建图方法:v为离散化后的时间段,u为工作

S → vi  流量 = 时间段长度 * 机器数量 (即在该时间段的最大工作量)

vi → ui 流量 = 时间段长度 (即在该时间段对该工作的最大工作量)

ui → T 流量 = 完成该项工作所需时间

判断 :若max_flow = Σ ti 则可以完成

// 150404做过的原题,不该错TAT


【错因】 考虑不仔细,想了个错误的算法,对网络流不熟悉,还要加强网络流的学习训练


需要的知识:网络流



T2


/*贴题解*/

进行一次记忆化搜索,对于每一层枚举2^M种情况,并且:

1、 如果某个连通分支完全没有被连接,则这个状态无效

2、 这一层一个格子都没选,除非之前也没有选,否则连通部分选择完毕,后面的各层都不能选了。

3、否则就维护一下连通情况,并使用最小表示。

Hash判重


【错因】dp无法做到无后效性,搜索写挂*1


T3


求动态逆序对

对每次修改区间的复杂度为O(L)

考虑:如果已知区间在待修改点的前面/后面 ,若该区间有序,则可以O(logL)的时间复杂度内二分计算出对答案的影响

将区间分为长度为 L = 2000 (题解说是最优的) n / L 个部分 对其前、后的区间可以二分计算出答案,对于所在的区间可以O(L)枚举

其实就是用了分块的思想降低复杂度

//注意:二分要写两次(注意边界)


【错因】没想到这种思想,开始想的是树套树,但是时间空间都超出了限制,然后因为是离线,又想cdq分治→→,但没有找到合适的方法使得它不会产生不必要的影响

暴力写挂++


需要的知识:求逆序对、二分答案


T4

不会游戏策略,还要学习。。。


【小结】要熟练掌握网络流这类常考的知识点,不要把问题想太复杂,尽量用常用的算法,

暴力、搜索、debug一定要加强!!!

你可能感兴趣的:(总结)