2020.07.30【省选B组】模拟 总结

今天真\(TM\)又菜鸡了,无路赛无路赛。
估分:\(100 + 0 + 40 = 140\)
考场:\(30 + 0 + 40 = 70\)

\(T1\)

算错时间复杂度了。。。我的莫队+倍增(看上去很高级的做法)是\(O(n*sqrt(n)*logn)\),极限\(19s\)。。。
无语了,正解是线段树或者分块+\(O(2)\)\(XQdalao\)%%%),或者主席树(\(RHXdalao\)%%%)。
我们对于两种贡献分别搞搞,对于\(i\)找到左边第一个比它大的和右边的,记作\(l[i],r[i]\)
然后像扫描线一样扫并用线段树维护即可。\(p2\)的贡献是区间的,\(p1\)单点修改即可。

\(T2\)

看着题目感觉像是要上\(splay\)的节奏,然后弃了。。。
正解线段树,还未消化。

\(T3\)

考场很有感觉(真的)
很容易想到用\(DP\)解出最多能用多少天来搞\(dalao\)\(attack\) \(Ta\)
然后考场我用了一个递归来能得到的\(C\),以为每次都只乘质数,结果发现其实是不对的。
反例:对于\(2*3*7^2\),我们显然可以用\(6*7^2\),这样做更优。
然后呢,等我打完再说吧。\(See you\)~
打 完 啦~
我们发现所有可以用讽刺技能得到的数(\(1<=x<=10^8\))最多只有90多万个数。
所以我们可以用\(bfs+hash\)或者用\(map\)来乱搞一下,得到了以后我们将两个讽刺的看看条件:
设讽刺的扣血量为\(x\),花费天数为\(d\)
\(x1+x2<=C\) && \(x1+x2+hav_time-d1-d2>=C\)
得到\(x1-d1+hav_time>=C-x2+d2\)
两个指针首尾分别移动并记录\(x1-d1\)最大值即可。

总结

\(emmm\),感觉自己打题时没有十分的严谨。
时间复杂度都没怎么仔细算,下次要好好算!!!
然后不要看到题有点复杂就弃掉。
做题是要整个做完的!完成了部分其实没有用!
所以要坚持下去,直到完成一题。

posted @ 2020-07-30 15:56  jz929  阅读(99)  评论(0)    收藏  举报