听说经常发题解rp++
T1
单调栈
还是一道裸题
真是虎
代码
T1
T2
数据解释就是此题做法
先邀请1
在所有圈子里找有1的
将它去掉
如果有圈子只剩1个了,就继续从它开始找
就是个宽搜
代码
T2
T3
就是一个链表
存一下现在这个状态是从哪里变来的
如果是‘a’,就是从i-1变来的
如果是‘s’,就是从i-1的前驱变来的
如果是‘t’,就是从k-1变来的
代码反复横跳就好了
代码
T3
T4
BFS/DFS
代码
T4
T5
MST(最小生成树)
并查集谁不会谁虎
代码
T5
T6
显然的DP
设dp[i][j]表示到第i步,跑j次的最大值
用a[i]来记录掉落的顺序
例如样例可以转化为1 2 2 2
就是先掉1个,再在另一棵树上掉两个,再在另一棵树上掉两个,再在另一棵树上掉两个。是ctrl_c+ctrl_v
那么,dp[i][j]=max(dp[i][j-1],max(dp[i-2][j],dp[i-1][j-1])+a[i])
代码
T6
T7
无比显然,如果a在另b前面3次,那么在原数列中a一定在b前
于是用个map记录一下排名,再sort一下就好了
代码
T7