[CQOI2012] 局部极小值

news/2025/1/8 19:58:16/文章来源:https://www.cnblogs.com/YzaCsp/p/18660445

前言

又是重庆题, 继续害怕
最近打算每天少踢点球, 我效率不高, 还是要多堆点时间的
然后就是倒计时要多关注, 别老无视
听讲很重要啊
冷静一点, 不死磕, 不畏难, 太难太偏的直接不管即可

思路

转化题意,

定义一个位置为局部极小值, 当且仅当其在以自己为中心 \(3 \times 3\) 的方格中为最小值, 给出所有局部极小值的位置, 求有多少种方案数满足局部极小值位置的约束
特别的, \(n \times m\) 的矩阵中, 填数仅能为 \(1 \sim n \times m\) 的排列

\(\rm{how}?\)
首先考虑你发现 \(n, m\) 非常小, 可能可以使用状态压缩的技巧
考虑局部极小值的性质, 如果我们从 \(1 \sim n \times m\) 依次填写, 那么局部极小值一定是自己周围 \(3 \times 3\) 大小的方格中最先填写的, 而非局部最小值一定不是
容易发现局部极小值的控制范围一定不重, 你甚至可以建出依赖关系的 \(\rm{DAG}\) 方便理解

容易有朴素的想法是, 只状压局部最小值的处理
这样子容易想到转移

\(f_{i, \mathbb{S}}\) 表示考虑到第 \(i\) 个数, 其中填了的局部最小值的集合为 \(\mathbb{S}\)
容易发现

\[\begin{align*} & f_{i, \mathbb{S}} \to f_{i + 1, \mathbb{S} \cup s} , s \cap \mathbb{S} = \varnothing \\ & f_{i, \mathbb{S}} \cdot (h(\mathbb{S}) - i) \to f_{i + 1, \mathbb{S}} \end{align*} \]

其中 \(h(\mathbb{S})\) 表示局部最小值填到这个情况时, 还可以填的位置个数, 可以 \(\mathcal{O} (2^{x} nm)\) 预处理

这样子计算出来的方案数有重, 具体的, 可能会出现一些非局部最小值比临点先放
考虑容斥, 具体的, 枚举实际上出现的局部极小值

运用超集反演即可

总结

这类约束条件一般分为两种方向

  • 正向约束: 局部极小值比临点先放
  • 反向约束: 非局部最小值比临点后放

约束条件, 可以建图方便思考

一类推出 \(\rm{dp}\) 之后用容斥解决的问题

注意这题最大的性质在于可能的局部最小值个数很少

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/866039.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CTF 之 Crypto (Cryptography) 学习笔记

CTF 之 Crypto (Cryptography) Chapter 0. 前置知识 群 (Group) 给定一个集合 \(G\neq \emptyset\) 以及二元代数运算 \(\circ\),若满足:封闭性 (Closure):\(\forall u,v\in G\),\(u\circ v\in G\); 结合律 (Associativity):\(\forall u,v,w\in G\),\((u\circ v)\circ w…

(2025自测有效!)全网最好的python配置教程【非常非常适合小白】

前几天我的电脑刚刚重装,把python重新配置了一下。 1.Python环境部署Python3 可应用于多平台包括 Windows、Linux 和 Mac OS X。 Python官网:https://www.python.org/ 进入官网在导航栏选择Dowmloads,选择所使用的系统(以Windows为例) 进入Windows下载页之后选择需要下载的…

写一个支持折叠、有缩进、代码高亮、离线的,方便部署的、易用的、优雅的json格式化查看工具(附html完整代码)

缘由 网上的在线json格式化有很多,但我是个有追求的人。在线的很难同时支持折叠、有缩进线、代码高亮、离线的,方便部署的、易用的、不请求后端(为了安全)的json格式化工具。 去Github上找项目,华而不实的东西占半个屏幕,格式化json要点好几下,一个json格式化工具npm安装…

AGC041F Histogram Rooks

我不知道啊,我只是觉得容斥很好玩。一个朴素的想法是容斥:考虑钦定 \(S\) 集合的位置没有被车覆盖,则答案是 \((-1)^{|S|}2^{c}\),其中 \(c\) 是可以放车的位置,可以直接 dp 做到 \(\mathrm{O}(2^n \text{poly}(n))\),但是难以优化。 延续容斥的想法,注意到钦定一个位置…

rust学习十六.1、并发-乱弹和一个简单并发例子

如书本作者所言,并发编程在绝大部分语言中,都是相对复杂和困难的。 所以,涉及的内容会相对多一些,所涵盖的内容绝对不是几篇文章所可以容纳的。 权当一个乱弹琴! 和此系列的其它文章一样,本文的内容绝大部分来自于相关书籍,本人做了一些摘裁的工作,取我所需!一、无畏并…

解决jenkins git 拉取代码超时问题

jenkins默认的是时间是10分钟,在git fetch时候超过10分钟了就报错失败了,可在项目源码管理 新增 advance clone behaviours

Java Bluetooth 蓝牙通讯 BlueCove 扫描附近的蓝牙设备

目录BlueCove项目概述BlueCove API架构API的设计原则和实现方式关键类和方法的功能描述测试代码获取本机(PC)蓝牙扫描蓝牙 BlueCove项目概述 BlueCove是一个开源的蓝牙协议栈实现,旨在为Java开发者提供一个全面的、易于使用的API,从而在应用程序中实现蓝牙功能。该项目支持多…

英伟达世界基础模型 Cosmos,教 AI 理解物理世界;阿里通义与雷鸟合作推出 AI 眼镜丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑的…

.NET 窗口置于最顶层

本文介绍如何将窗口置于最顶层,以及解决在顶层显示时对锁屏登录界面的影响。用于实现类似Launcher、系统工具等应用需要窗口层级比Windows开始菜单以及置顶任务栏还要高的场景 一般情况下的窗口置顶,可以设置WPF窗口属性Topmost=true 也可以使用WIN32-SetWindowPos函数SetWin…

汽修行业的智能化转型:AI赋能员工培训SOP策略

随着智能化技术的飞速发展,汽修行业也迎来了前所未有的变革机遇。在这一背景下,如何构建高效、标准化的员工培训SOP(Standard Operating Procedure)策略,成为汽修企业提升竞争力、实现智能化转型的关键。本文将探讨智能AI在汽修行业员工培训SOP策略构建中的应用,特别是提…

智慧医疗新纪元:帮助中心引领的智能化转型之路

在科技日新月异的今天,智慧医疗已经成为医疗领域发展的重要趋势。智慧医疗不仅意味着医疗设备的智能化,更代表着整个医疗服务流程的数字化转型。在这一变革过程中,如何有效利用帮助中心驱动医疗机构的转型与升级,成为了一个值得深入探讨的课题。本文将探讨智慧医疗的智能跃…

sqlalchemy.exc.OperationalError

最后发现是 密码中含特殊字符@导致的连接报错其他参考: sqlalchemy.exc.OperationalError通常指示Python应用程序与数据库之间的连接出现问题。这里有一些可能的原因和解决方案:数据库连接参数错误:检查你的数据库连接字符串(DSN)。确保主机名、端口、数据库名称、用户名和…