20151017模拟赛总结

这次模拟赛运气还不错

浏览完三题并做完第一题花了40分钟,慢了点,但还是不至于影响节奏。

第二题开始想了这个图的性质,和逆序对有什么关系,然后抱着撞运气的心态想了下最长上升子序列,发现这样很科学。。想到这里一共花了接近二十分钟。。然后就写了个线段树优化的LIS,然后第二问想不到比较好的方法了。。然后就拼尽全力对N^2算法进行常数优化,代码写了100行,花了接近一个小时。最后还是老老实实地得了N^2的60分。。但是我把时限放长,每个点都差不多1.5秒过。。本地开上O2后每个点都是0.2秒就出来了。。

第三题纯属运气,写了个骗分程序就乱弄了60分。。

二三题都用了比较类似的一个思路。二题判断一个数是否在一个LIS上,方法是正反跑两次DP,充要条件是以a[i]为开始的最长上升和以a[i]为结束最长上升序列长度之和-1等于全局LIS。三题判断一条边<a,b>是否在最短路上,方法是正向从S和反向从T跑最短路,然后看dis1[a]+<a,b>+dis2[b]是否等于全局S到T的最短路。

以后对于这种问题,模式就是从两边分别跑一次,然后分段组合一下就可以判断了。这种思路比较巧妙。

这次第三题出题人恶意卡SPFA,最后两个点SPFA被卡到几十秒,让我怀疑自己是不是SPFA打错了。。还是堆优化的dijkstra效果最稳定,以后尽量写这个,毕竟不用手打堆还是很方便。

你可能感兴趣的:(20151017模拟赛总结)