首页 > 其他 > 详细

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

时间:2019-08-23 21:51:31      阅读:81      评论:0      收藏:0      [点我收藏+]

传送门 password:12345ssdlh

T1

贪心 

不想写了

T2

bfs啊

枚举现将所有y<=1000的点加入一个队列,dis设为1

然后往后更新就好了

代码

技术分享图片T2

T3

一个差分

先将修改边转化为修改点,即边<fa,son>++定义为d[son]++

然后树上差分,链(i,j)++相当于d[i]++,d[j]++,d[lca(i,j)]-=2

查询边<fa,son>相当于查询son的字数大小

由于同一子树dfs序连续,所以维护dfs序就可以了

代码

技术分享图片T3

T4

bfs……

还要加优化

就是现在加入的那个点如果他的dis比队头的dis还小,就把他放入队头,否则放入队尾

代码

技术分享图片T4

T5

区间dp

设dp[l][r][0/1]表示在l---r这段区间取完左/右端点后所需的最短时间

那么,可以得到dp式

dp[l][r][0/1]=min(max(dp(l-1,r,0)+abs(p[l-1].pos-p[l/r].pos),p[l/r].tim),max(dp(l,r+1,1)+abs(p[r+1].pos-p[pl/r].pos),p[l/r].tim))

代码

技术分享图片T5

T6

带权并查集

以最下面的节点为根节点,维护点到根的距离,同时维护点集大小即可

代码

技术分享图片T6

T7

tdp

设dp[u][k]表示以u的子树中取k个含u连续节点最多需要断掉多少条边

根据题意

dp[u][k]=min(dp[to1][k1]+dp[to2][k2]+......+dp[ton][kn])

然后用一些晓手段维护一发就好了

代码

技术分享图片T7

 

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

原文:https://www.cnblogs.com/yanghaokun/p/11402614.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!