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

转载需注明出处。
原文地址:https://www.cnblogs.com/jz929/p/13404285.html