东师附中B层团队冲刺NOIP2019知识点模拟(3)题解版

听说经常发题解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

猜你喜欢

转载自www.cnblogs.com/yanghaokun/p/10959985.html