9.11模拟赛

T1:没怎么看懂题,最开始还以为是签到题,结果发现题看错了浪费了30min。
后来写了一个暴力+贪心,全挂了,也在意料之中,毕竟最后半个点临时写的。

T2:前20分直接dfs暴力生成所有序列,然后暴力查询逆序对数量。

前40分是O(n^2)的dp,转移式写对了但是dp[0][0]设成了0(应该设成1),然后挂了30,最后只有20
(不成立也算是一种情况!!!!)
还好有特判分段,前20分的dfs保住了。

T3:前30分暴搜,但是因为限制了每个点最多只被搜到一次,因此O(n^2)能稳过。因为未知原因挂了。

中间30分,分块思想,因为原图是一堆断链,且每个点最多只有一条出边和一条入边,因此直接当作
序列维护。将同一个联通块中的点染上同一种颜色(赋上联通块编号的大小),因为是从1~n进行这个过程,
因此联通块的编号也是单调递增的。查询[l,r]中的联通块数量只需num[r]-num[l]+1即可。
O(n)预处理,O(1)查询,不管多大的数据都是稳过,比莫队更快。这个写法对条件的应用确实非常充分,
算是一个值得借鉴的优秀的思路。

T4:正解显然是主席树+树上二分。
但是考虑到自己的代码能力,主席树估计debug至少1h起步,直接放弃,改写暴力。

前30分:暴力地取出每一个区间内的所有数,然后直接排序比较即可。复杂度很大,但是因为肯定跑不满所以没什么问题。

最后:T1(0)+T2(20)+T3(30)+T4(30)=sum(80).
暴力挂了T1(20)+T2(20)+T3(30)=70.

T1属于是题没看懂,T2是dp式写错,T3是未知问题,T4没敢写权值线段树。

其实中间还浪费了挺多时间,建议下一次直接四个最简单的暴力写满,完全不考虑正解的问题。全部写满之后再考虑拿更多的部分分,要是部分分都不会的题。。直接放弃罢!

总之其实暴力总共也就1h多一点就能写完,结果2h以上在胡思乱想浪费时间。。。
而且其实暴力打满排名什么的都不会差,因此不要自己吓自己,觉得这题太简单别人肯定都会怎么就我不会什么的。
正常写满就够了。

上一篇:模拟70 考试总结


下一篇:题解 虚构推理