2017 UESTC Training for Data Structures

http://acm.uestc.edu.cn/#/contest/show/155

对大二来说貌似这套题有点简单了,多是一眼题

发现漏了一题,然而是以前看别人讨论过的:)。

H:线段树+暴力。大概就是如果公差大一点的话,直接暴力扫一次,小的公差就用多个线段树维护起来。

另外线段树还有一道好题,uoj228.

A:线段树水题,最大最小值

B:求连续1的时候考虑分治算法,线段树,记录区间前缀最长0/1和后缀最长0/1和整体最长0/1和一个lazy。

C:线段树经典操作。。注意作乘法的时候,要把addtag也更新,pushdown的时候儿子的addtag要先乘上父亲的mul[0]再加父亲的add,sum处理的时候也类似。

D:先按一维排序,然后下面用树状数组或者线段树维护一下

E:贪心+树状数组

F:01字典树

G:和B有点像吧,也考虑分治算法,线段树记录前缀最大和,后缀最大和


I:贪心+set+并查集吧,对于每个节点都能有两个儿子,每次用set二分找一个恰好小于等于这个值的,然后接在它的后面,如果被接了两次就从set中删掉,并查集维护一下哪几个点在一起。

J:哈夫曼树,用优先队列一直维护就好了

K:顺着来比较难搞,那我们倒着来,并用个前缀和再加并查集什么的维护一下

L:带权并查集

M:二分最小值,贪心用set来维护

N:染色题,并查集和dfs都能搞掉吧

O:分别维护两种操作,第一种dfs序维护,第二种当然是树链剖分。

P:线段树扫描线维护面积并

Q:就是0/1异或啊,二维树状数组搞一下

原文地址:https://www.cnblogs.com/scau-zk/p/6863283.html