8.19 lbw

傻逼题

给一张无向简单连通图,给每一条边定向,使得每一个点出度为偶数,输出任意一种方案或判无解。

n,m105


先随便定向然后调整。记 degree 偶数的点为 BananaNode,奇数的为 MonkeyNode,目标是使所有点都为 BananaNode。

对于两个 MonkeyNode,找到一条路径并翻转每条边,发现路径中的 Node 形态不变,但两个点都会变成 BananaNode。

于是找路径即可。实际上可以建生成树然后树上差分简单维护。MonkeyNode 为奇数时无解。复杂度 O(m+nlogn)

有趣一点的题

给定一棵 n 个节点的树,要求构造出一个点权序列 E,满足以下三个条件:

  1. Ei1

  2. (i,j)(1i<jN)|EiEj|dist(i,j)

  3. E 中的最大值最小。

n2×105


看到 Condition3,可能会考虑二分答案,但是这没有逼用。需要考虑 Condition2。

Ei 从小到大构造(拆绝对值)。记对应编号为 a1,a2,,an。那么有 EiEi1dis(ai1,ai)

其他不相邻的点呢?

实际上并不需要管它们,例如 ij,EiEj=t=j+1iEtEt1=t=j+1idis(at1,at)dis(ai,aj)

于是只用考虑相邻点的限制了。考虑取等:1i<n,EiEi1=dis(ai1,ai)

由 Condition1,令最小值 E1=1,那么有 Ex=1+i=1x1dis(ai,ai+1)

这个时候就能用上 Condition3 了:需要最小化 En=1+i=1n1dis(ai,ai+1)

注意到 dis(a1,a2)+dis(a2,a3)++dis(an1,an)+dis(an,a1)2(n1),可以通过 ai 取 dfs 序达到下界。

En=1+2(n1)dis(a1,an)

只需要最大化 dis(a1,an)a1,an 取树的直径端点,剩下的取 dfs 序即可。

暴力题

n 结点的无向图,初始时没有边,接下来 q 次操作:

  • 1 u v,加入一条连接 u,v 的边。保证操作前 u,v 不在同一个连通块内,换言之这张图总是森林。
  • 2 u v,询问是否存在和 u,v 都相邻的点,若存在输出编号,若不存在输出 0

n,q105


考虑怎样的点才能成为 u,v 的共点:

  • fafau=v,共点即 fau
  • fafav=u,共点即 fav
  • fau=fav,共点即 fau

用启发式合并轻松做到 O(qlogn)

posted @   liangbowen  阅读(83)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示