2019.10.03题解

10min:打完T1,为了不滑天下之大稽,打了一个对拍

50min:打完了T2T3的暴力,准备推一推T2。

2h:打完T2的正解和对拍。

3h:T3写了一个O(n*log2(n)*log2(n))的40分算法。

最后调T3的60分线段树调到考试结束也没过对拍。

期望分数:240

实际得分:200

就是因为这一个智障级的错误!

 

题解:

T1

对于每个a[i],O(sqrt(a[i]))预处理出ta的所有约数,用map或hashmap存起来即可。

 

T2

把商品和询问离线并按时间排序,枚举时间,是商品就跑背包,是询问则二分答案,背包是一维的,空间复杂度很低,

时间复杂度O(n^2*max(val)+m*log2(n*max(val));

 

T3

开一颗线段树,把操作扔到线段树里,再把线段树扫一遍,用并查集维护最长链(分类讨论6种情况),注意因为回溯时要删除操作,所以并查集要按秩合并。

posted @ 2019-10-04 07:18  ATHOSD  阅读(131)  评论(5编辑  收藏  举报