Solution Set -「NOIP Simu.」20221111
\(\mathscr{A}\sim\) 遗忘十字路
Cover:「CF 1746D」Paths on the Tree.
Tag:「C.性质/结论」
最原始的思路自然是 DP. 令 \(f(u,k)\) 表示从 \(u\) 开始向子树内探险 \(k\) 次的最大收益, 那么每个孩子被探险的次数一定在 \(\{0,1\}+|\text{son}(u)|\) 中. 猜测需要的 \(k\) 的数量挺小, 直接上记忆化搜索就过了.
后来冷静想想, 可以证明一个 \(u\) 的确最多用上 \(2\) 个 \(k\). 利用 std::nth_element 计算转移可以做到每组数据 \(\mathcal O(n)\).
\(\mathscr{B}\sim\) 鹿角虫道 *
Cover:「Gym 102331C」Counting Cactus.
Tags:「A.DP-计数 DP」「A.DP-状压/插头 DP」「B.Tricks」
赛上搓了个 \(76\text{pt}\) 类似耳分解的东西, 标算的实际上就是对分解过程做精细优化.
我们先来做一些规定: 如何画出一株仙人掌? 类比于树, 我们可以按 "子仙人掌" 来画. 具体地, 令 \(f(S,r)~(r\in S)\) 表示用点集 \(S\) 构成一棵以 \(r\) 为根的仙人掌的方案. 类比耳分解, 我们可以画圈圈. 令 \(g(S,s,t)\) 表示用点集 \(S\) 构成一堆被链 \((s,t)\) 串起来的仙人掌的方案数. 为方便转移, 可以引入辅助状态 \(f'\) 和 \(g'\), 分别表示 \(r,t\) 是叶子时的方案. 然后浅讨论一下各种转移即可. 复杂度 \(\mathcal O(3^nn^2)\).
\(\mathscr{C}\sim\) 泪水之城
Cover:「Gym 102268I」Interesting Graph.
Tag:「C.性质/结论」
挺好玩儿的题, 但在一个无关紧要的地方把复杂度写假了 qwq.
关于连通块的限制等价于所有点双大小不超过 \(6\). 当然求染色数是 NPC, 不过既然 \(n=6\) 时 Bell 数只有 \(203\), 所以可以猜测算法应该是小范围暴力搜索拼大范围树形染色.
点双 ... 先拍一个广义圆方数吧. 对于每个方点, 我们有时间暴力搜索周围圆点的染色情况, 但是如何将这些小规模的情况放到整体上?
先暂停, 我们回忆一下树上染色的结论. 对于含有 \(n\) 个点的树, 其色多项式为 \((x-1)x^{n-1}\). 怎么推? 根随便选一个颜色, 其他点只要不与父亲同色就行.
回到圆方数. 我们可以这样计数: 从上自下考虑, 每到一个方点时, 其头顶圆点应当已被染色, 搜索周围方点的颜色最小表示, 为孩子方点染色, 然后递归. 立马发现, 这和圆方树的树形根本没关系, 因为每个方点的临域贡献是完全独立的!
一个去方点父亲的方点临域 \(D\) 的色多项式是 \(f_D(x)\), 假设图连通, 那么整张图的色多项式 \(F(x)=x\prod_{D}f_D(x)\). 注意这里有 \(\deg f_D\le6\). 一个非常下头的做法是 NTT 卷出来然后多点求值. 组题人的评价是 "你高兴就好".
怎么办? 注意点双大小 \(\le 6\), 而 \(f_D(x)=\boldsymbol{c}\cdot\begin{bmatrix}(x-1)^{\underline 0}&(x-1)^{\underline 1}&\cdots&(x-1)^{\underline 5}\end{bmatrix}\), 我们有端猜测向量 \(\boldsymbol{c}\) 的种类是极少的. 直接按照 \(\boldsymbol{c}\) 对 \(f_D(x)\) 分类, 每次暴力带入 \(x=1..n\) 算出每种 \(f_D(x)\) 然后带上其出现次数的指数. (忽略枚举点双内部边的时候写假复杂度的情况) 直接过啦!
暴力枚举算一算, 或者 Burnside 一发, 这个本质不同 \(f_D(x)\) 数不超过 \(10^2\) 量级, 所以很是正确. 复杂度自己看看吧, 不方便一个式子说清楚.
\(\mathscr{D}\sim\) 生命血 *
Cover:「Gym 102268D」Dates.
Tags:「A.拟阵/拟阵交」「A.数据结构-线段树」「B.贪心」
以为是模拟费用流啥的, 然后发现自己根本不会. 加上写完网络流没有充足的时间, 于是就弃了.
好吧, 点开题解: \(U\) 为方案集合, \(\mathcal I\) 为合法方案集族, \(\mathcal M=(U,\mathcal I)\) 为拟阵.
Proof.
遗传性显然, 来看看交换性. 取 $A,B\in\mathcal I$, 其中 $|A|<|B|$, 我们需要说明 $\exists x\in B,~A\cup\{x\}\in\mathcal I$. 令 $C=A\cap B$, 设在 $B$ 方案中, $B\setminus C$ 所选取的灯笼编号集合为 $P$. 考虑从 $A\setminus C\to A$ 的过程, 每加入一个 $x$, $|P|$ 至多 $-1$, 因此 $A$ 对应的 $|P|\neq0$, 则取这样的一个灯笼和对应于它的 $x\in B$ 就能增广 $A$.
根据拟阵的性质, 将选择按照价值排序, 最优方案一定能通过贪心选取高价值选择生成. 我们需要做的是快速判断某个选择加入集合后集合是否仍然独立. 注意这就是一个 Hall 定理. 令 \(s\) 为 \(a\) 的前缀和, 则 \(S\) 独立当且仅当
\]
区间包含这个条件可以拆开. 令 \(p_i=s_i-\sum_{[l',r']\in S}[l'\le i]\), \(q_i=s_i-\sum_{[l',r']\in S}[r'\le i]\), 则独立条件变为
\]
加入一个区间 \([l_0,r_0]\), 最可能不合法的 \((l,r)\) 自然是包含 \([l_0,r_0]\) 的, 此时选择最大的 \(p\) 和最小的 \(q\) 就能检查合法性. 线段树维护这一过程, 可以做到 \(\mathcal O(n+m\log n)\).
Solution Set -「NOIP Simu.」20221111的更多相关文章
- 「NOIP 2017」列队
题目大意:给定一个 $n times m$ 的方阵,初始时第 $i$ 行第 $j$ 列的人的编号为 $(i-1) times m + j$,$q$ 次给出 $x,y$,让第 $x$ 行 $y$ 列的人 ...
- 「NOIP 2020」微信步数(计数)
「NOIP 2020」微信步数(Luogu P7116) 题意: 有一个 \(k\) 维场地,第 \(i\) 维宽为 \(w_i\),即第 \(i\) 维的合法坐标为 \(1, 2, \cdots, ...
- Diary / Solution Set -「WC 2022」线上冬眠做噩梦
大概只有比较有意思又不过分超出能力范围的题叭. 可是兔子的"能力范围" \(=\varnothing\) qwq. 「CF 1267G」Game Relics 任意一个 ...
- Solution Set -「ARC 107」
「ARC 107A」Simple Math Link. 答案为: \[\frac{a(a+1)\cdot b(b+1)\cdot c(c+1)}{8} \] 「ARC 107B」Quadrup ...
- 「NOIP 2013」 货车运输
题目链接 戳我 \(Solution\) 这一道题直接用\(kruskal\)重构树就好了,这里就不详细解释\(kruskal\)重构树了,如果不会直接去网上搜就好了.接下来讲讲详细过程. 首先构建\ ...
- Solution Set -「ABC 217」
大家好屑兔子又来啦! [A - Lexicographic Order] 说个笑话,\(\color{black}{\text{W}}\color{red}{\text{alkingDead} ...
- Note -「动态 DP」学习笔记
目录 「CF 750E」New Year and Old Subsequence 「洛谷 P4719」「模板」"动态 DP" & 动态树分治 「洛谷 P6021」洪水 「S ...
- Note -「Lagrange 插值」学习笔记
目录 问题引入 思考 Lagrange 插值法 插值过程 代码实现 实际应用 「洛谷 P4781」「模板」拉格朗日插值 「洛谷 P4463」calc 题意简述 数据规模 Solution Step 1 ...
- Solution -「ARC 104E」Random LIS
\(\mathcal{Description}\) Link. 给定整数序列 \(\{a_n\}\),对于整数序列 \(\{b_n\}\),\(b_i\) 在 \([1,a_i]\) 中等概率 ...
- LOJ #2026「JLOI / SHOI2016」成绩比较
很好的锻炼推柿子能力的题目 LOJ #2026 题意 有$n$个人$ m$门学科,第$ i$门的分数为不大于$U_i$的一个正整数 定义A「打爆」B当且仅当A的每门学科的分数都不低于B的该门学科的分数 ...
随机推荐
- h5+ 检测 APP 是否开启应用通知权限
h5+ 检测 APP 是否开启应用通知权限 原文可查看此处,搜索 h5+ 检测 APP 是否开启应用通知权限 https://mp.weixin.qq.com/mp/profile_ext?actio ...
- Uniswap V2 核心 合约代码
Uniswap V2 核心 UniswapV2Factory UniswapV2Pair UniswapV2ERC20 IUniswapV2Router02 1. UniswapV2Factory 合 ...
- MySQL无开通SQL全审计下的故障分析方法
几年前MySQL数据库出现突然的从库延迟故障和CPU爆高时,如何排查具体原因,可能说已在腾讯云的MySQL库里开启了SQL全审计,记录了全部执行的SQL,再通过下面的方法就可以很容易找到原因: 1,实 ...
- Java根据前端返回的字段名进行查询数据的方法
在Java后端开发中,根据前端返回的字段名动态查询数据库是一种常见的需求.这种需求通常通过使用反射和动态SQL来实现.下面是一个完整的代码示例,它展示了如何根据前端返回的字段名动态查询数据库中的数据. ...
- ES6 延展操作符
延展操作符(Spread operator) 延展操作符 = ...可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开,还可以在构造对象时,将对象表达式按key-value的方式展 ...
- JAVA MemCache 史无前例的详细讲解!看完包精通MEMCACHE!
Memcach什么是Memcache Memcache集群环境下缓存解决方案 Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式 ...
- Python:pygame游戏编程之旅三(玩家控制的小球)
上一节实现了小球自由移动,本节在上节基础上增加通过方向键控制小球运动,并为游戏增加了背景图片. 一.实现: # -*- coding:utf-8 -*- import os import sys im ...
- Jenkins篇-安装与使用
Jenkins是一个开源自动化服务器,可以自动执行持续集成和交付软件所涉及的重复技术任务.Jenkins是基于Java的,可以从Ubuntu软件包安装,也可以通过下载和运行其Web应用程序存档(WAR ...
- uni-app 坑
1.fixed定位 在H5中,tabbar,顶部导航栏,系统状态栏(手机信号,电量显示等)包含在内容区,H5在定位时,需要算上这些高度(如果页面中存在这个元素的话) 解决办法:使用条件编译,针对不同的 ...
- .NET Core 堆结构(Heap)底层原理浅谈
.Net托管堆布局 加载堆 主要是供CLR内部使用,作为承载程序的元数据. HighFrequencyHeap 存放CLR高频使用的内部数据,比如MethodTable,MethodDesc. 通过i ...