4.29校赛记录
地理微米
题意
给一块 的木板,不重叠地摆放若干 L 型卡片(占 个格子),在中心钉一个钉子。现在给你木板上钉子的位置,求有多少种放置卡片的方式。答案对 取模。
。
题解
先从判断可行性开始。对每个 ,其左右需放一个 ,其上下需放一个 ,且不能重叠。不难想到一种简单的网络流做法,但复杂度不允许。
优化一下模型。左右之间连一条无向边,上下之间同理。若左右有一个也为 ,则另一个连自环;若都为 ,显然不行。此时转化为给无向边定向,使得每个 点入度不超过 。则可行当且仅当每个连通块的边数不大于点数。
接着考虑计数。若连通块为树,有一个点入度为 ,其他均为 。则以入度为 的点为根,每条边指向儿子。共有点数种方式。若连通块为基环树,则环上两种方向为两种方式。但若环为自环,只有一种方式。于是此题得解。
激光塔
题意
给定二维平面上 个激光塔的坐标与朝向(上下左右)。并有贡献,计算方式如下:开始时每个塔贡献 。若两个塔 距离不超过 且 ,则若朝向相同,贡献 ;相反,贡献 ;否则不贡献。
你可以贡献 ,将一座激光塔任意方向旋转 。一座塔可以旋转任意次。旋转后不同塔之间的贡献也会相应改变。求操作后的最大贡献。
。
题解
距离没有什么特殊性质。直接改为塔之间连边。
连边的塔之间的贡献计算方式特殊,从这里入手。发现是长度为 向量的点积。点积的计算方式 启发我们将 隔离考虑。但旋转操作又不方便隔离。
将坐标系旋转 。则 。于是旋转操作变成了将 或 取反。于是可以隔离。以下考虑 。
对于连边的两座塔,若 同号,贡献 ;若异号,贡献 。不妨看作全部贡献 ,若异号,增加 的消耗。将某个 取反,增加 的消耗。目标是最小化消耗。
这是一个网络流模型。源点向 为正的所有点连容量为 的边, 为负的所有点向汇点连容量为 的边。原图中有边的两点,网络中连容量为 的双向边。最小割即为最小消耗。读者自证不难。于是此题得解。
反思
看完题解后,感觉这两题都不算难。尤其是第一题,初二的小朋友都会。但为什么考试时就是做不出来呢?
感觉最大的原因是思维不活跃。这也是老毛病了,必须尽快解决。最近都在学一些套路性强的东西,接下来一段时间的重心应该转移到思维题上。板刷 CF,限时训练。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现