【11.19 NOIP模拟赛】总结

【11.19 NOIP模拟赛】总结#

T1 集合#

给定 n,求 {1...n} 所有非空子集的和的积。

n200

DP 求和为 i 的方案数 fi,答案为 i=1n(n+1)/2ifi

注意 fi 为指数,应对 P1 取模(费马小定理)

T2 出租#

n 栋楼,每栋楼有 k 个房间,有 m 次操作,每次操作加入或移除 yi 个理想位置为 xi 的人,这 yi 个人必须安排在 [xi,xi+d] 的楼中,问每次操作后存不存在合法方案。

1n,m,d5×105,0k,y109,1xnd

一道很厉害的猜结论题(那么是谁场上想了将近两个小时呢)

不难发现无解的一个充分条件:vi>n×k

这样约束性显然太弱了,那么先区间缩小看看?

一个区间 [l,r] 无解的充分条件:i=lrvi>(rl+1+d)×k

注意: 区间内靠右的人可以放在区间外面的 d 个位置,所以要 +d

然而这样的约束还是太弱了,不妨猜测

当前局面无解,当且仅当 存在子区间 [l,r],满足:i=lrvi>(rl+1+d)×k

看起来又对又不对的,然而自己手搓几个样例,会发现举不出反例()

于是就好做了,移项得:i=lr(vik)>k×d

那么线段树维护一下最大子段和就做完了 qwq

T3 连通块#

求一颗树的最大权连通块,但必须满足 m 条形如 ” u,vdfs 序在连通块内不能连续 “ 的限制条件。

每个点的儿子遍历顺序给定,n105,m21,|vi|109

首先讲下 80pts(保证树随机生成)的神仙做法:(后面有图)


什么意思呢?就是拆点后把连通块的 dfs 序转化成一个 DAG



对着图自行理解一下,总复杂度 O(nmlogn) 级别

接下来是正解:

fi,j 表示 i 子树内,最后一个 dfs 序为 j 的答案。

直接上图吧



所以我们可以直接这么转,类似于树形背包,对于每个顺序遍历的儿子 v

fu,i=max(fu,i,max{fu,j+fv,i|the (i, j) is legal})

dp 中直接记录 n 个点的 dfn 肯定是不行的,于是我们发现与约束条件无关的点我们并不关心,再注意到 m 很小,于是可以 只给有约束点编号 (类似虚树),无关点编号 0

时空复杂度 O(nm),可以通过此题

posted @   慕斯ひいきする  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示