kitayuta zhengjun 506e gift

一类特殊的 dp 模型--zhengjun

这类问题大概长这样: 求一个排列 $p_{1\sim n}$,最小(大)化如下值: $$ \sum\limits_{i=1}^{n-1}f(p_i,p_{i+1})\\ f(i,j)= \left\{ \begin{array}{**lr**} g(i)+h(j),ij \end{array} \r ......
zhengjun 模型 dp

AT_agc002_f [AGC002F] Leftmost Ball 思考--zhengjun

思维 + dp。 如果像题意那样先放球再染色的话不是很好做。 所以考虑有 $n$ 个白球,$n$ 种其他颜色的球各 $k-1$ 个。 那么限制就是说对于每个前缀,白球的个数 $\ge$ 其他颜色球的种数。 所以就可以设 $f_{i,j}$ 为放了 $i$ 个白球,$j$ 种颜色的 $k-1$ 个球的 ......
002 Leftmost zhengjun AT_agc 002F

UOJ #37. 【清华集训2014】主旋律 整理--zhengjun

好像没做过 DAG 计数的题。 首先看到数据范围,考虑状压。 方便起见,记 $cnt_{S,T}=\sum\limits_{(u,v)\in E}[u\in S \and v \in T]$。 设 $f_S$ 表示 $S$ 为强连通分量的选边方案数,由于正面很难算。 考虑反面: $$ f_S=2^{ ......
主旋律 zhengjun 2014 UOJ 37

CF1155F Delivery Oligopoly 警告与思考--zhengjun

警告: - 注意区分【强连通分量】,【边双联通分量】,【点双连通分量】。 思考: - 之前没有做到过边双连通分量的拆解; - 一个边双联通分量可以看作一个基环上不断加一条链; - 注意,这里加的链首尾可以为同一个位置。 到这步代码就好弄了。 ### 代码 ```cpp #include using ......
Oligopoly Delivery zhengjun 1155F 1155

AT_arc101_d [ARC101F] Robots and Exits 题解--zhengjun

思路不错。 首先考虑把每个机器人转化为 $(a_i,b_i)$ 两个参数。 表示向左 $a_i$ 步会进入左边的出口,向右 $b_i$ 会进入右边的出口。 > 注:此时其他只能进入唯一的出口的机器人不影响答案,不考虑。 记 $c_i=0/1$ 表示 $i$ 号机器人是进入左边还是右边出口。 然后考虑 ......
题解 101 zhengjun AT_arc Robots

CF512D Fox And Travelling 题解--zhengjun

计数好题。 首先对于每个连通块独立考虑,最后合并答案。 发现 点数超过 1 的强连通分量一定删不掉。 - 若连通块中存在 点数超过 1 的强连通分量 - tarjan 缩点之后,称这些点数超过 1 的强连通分量为关键点; - 那么两关键点之间的点也不能删; - 于是对于剩下的点直接 dp 即可,由于 ......
题解 Travelling zhengjun 512D 512

关于 dp 套 dp 的一些思考--zhengjun

dp 套 dp 一般有三种形式: - 暴力搜出一种东西的状态,发现数量不大,建出自动机开始跑; - 有关字符串的匹配问题,例如 kmp 或 AC 自动机上; - 有关 LIS 问题的可以使用一种特殊的内层 dp 优化状态。 前两个没什么好讲的,讲一下第三个。 记 $f_i$ 为 $1\sim i$ ......
zhengjun dp

HHHOJ #1252. 「NOIP 2023 模拟赛 20230716 B」打怪兽 思考--zhengjun

赛时卡了很久,没想出来怎么做。 随便乱搞了个优先级队列,过拍直接走人,然后成为了唯一的 100 分,无语了。 完事后发现这样做确实是对的,而且好写,简单讲一下。 首先需要能够判断打两个怪 $i,j$ 的优先级: - $a_i\le b_i,a_j\le b_j$,则优先攻击 $a$ 较小的那个; - ......
模拟赛 怪兽 20230716 zhengjun HHHOJ

LOJ #6160. 「美团 CodeM 初赛 Round A」二分图染色 思考--zhengjun

[link](https://loj.ac/p/6160) 思维+容斥计数。 首先的转化比较妙,二分图转化为 $n\times n$ 的网格图染色。 > 与网络流的转化方向相反,值得注意。 然后发现两种颜色(红、蓝)如果独立染色,同一个格子可能会重复染色。 考虑容斥,式子很好列,直接容斥即可。 $$ ......
初赛 zhengjun CodeM Round 6160

HHHOJ #1247. 「NOIP 2023 模拟赛 20230715 A」1 题解--zhengjun

> 法老找来的题,说是找了三道 其他模拟赛的 T4 拼成 T1~T3,另外搞了道 T4。 思维好题,但是放在 T1 有点搞心态,但是还好大样例够强,400 没挂。 > 然而 T3 大样例输出错了,浪费了我 0.5h,~~差评~~。 首先发现向左走之后向右走是一定不优的,所以最短路的情况只能先向右再向 ......
模拟赛 题解 20230715 zhengjun HHHOJ

[YDRG#001] 提瓦特环游记 · 云斗杯 · 七月 Golden 组模拟赛 整理分析--zhengjun

[link](https://yundouxueyuan.com/contest/64ad2248301edd5a35fdba9d) > 总体评价:~~因为 K 了,所以好评,~~练一下思维蛮好的,质量不错 比赛 2.5h K 的。 ## #A. 诗人小 G 初进 OI 界 标准送分,输出 $\fr ......
模拟赛 183 zhengjun 游记 Golden

P5044 [IOI2018] meetings 会议 思考--zhengjun

在 NFLS 模拟赛上遇到的,赛后订正过的。 隔了蛮长时间的,总结一下。 - 首先转化为笛卡尔树上后缀前缀的问题。 - 然后考虑如何转移,发现转移形如 $f(x)=\min\{f(x)+C,kx+b\}$ 的形式。 - 可以直接线段树维护每个点的最优直线,在 update 的时候: - 如果 $f( ......
meetings zhengjun 会议 P5044 5044

CF1220F Gardener Alex 题解--zhengjun

发现根节点一定是 $1$,所以考虑两边的子树深度,然后发现只需要考虑一段后缀或前缀的深度即可。 所以循环位移后,可以从中间往两边构建笛卡尔树,实时维护深度即可。 ### 代码 ```cpp #include using namespace std; using ll=long long; const ......
题解 Gardener zhengjun 1220F 1220

CF1175F The Number of Subpermutations 对自己的警告--zhengjun

太久没见过启发式合并了,然后没想出做法。 首先笛卡尔树建出来。 然后直接枚举跨过 $mid$ 的长度为 $a_{mid}$ 的区间,RMQ $O(1)$ 验证即可。 发现这样的区间个数不超过左右区间大小的较小值,时间复杂度:$O(n\log n)$。 ### 代码 ```cpp #include u ......
Subpermutations zhengjun Number 1175F 1175

HHHOJ #1242. 「NOIP 2023 模拟赛 20230713 D」星海巡航 总结与思考--zhengjun

> 随机排列的最长上升子序列长度的期望是 $O(\sqrt{n})$。 这个结论知道最好,不知道也问题不大,赛时随一个跑一下也行。 警告: - 一直考虑正着做,产生了思维定式 - 正难则反啊,反着做发现只需考虑第一次覆盖的数就行了。 - 接下来的贪心也没想到:序列中不应该出现不在 $LIS$ 中的数 ......
模拟赛 20230713 zhengjun HHHOJ 1242

HHHOJ #1241. 「NOIP 2023 模拟赛 20230713 C」后会有期 总结--zhengjun

赛时想了很久,可能是比较久没做这样的经典状压枚举子集的 dp 题了。 > 赛时大样例输出是错的,调了 40min 对的代码没看出来哪里错,写个对拍拍不出来,结果是 cxr 题面里的模数写错了,最后改了数据…… - 正难则反,求反面的方案数,即【1,2能到达的点无交集】的方案数 - 设 $f_S$ 表 ......

P5979 [PA2014] Druzyny 总结--zhengjun

思维妙妙题。 首先发现 $d$ 的限制满足单调性,所以可以转化为 $l\ge p_r$ 的限制。 > 注意:$p$ 是单调不降的 然后就是 $p_r\le l\le r,\max\limits_{i=l}^r\{c_i\}\le r-l+1$。 这个 $\max$ 想到转化到笛卡尔树上操作。 然而这 ......
zhengjun Druzyny P5979 5979 2014

CF1290E Cartesian Tree 注意点--zhengjun

### 解题思路 容易想到从小到大加数,维护每个点的子树大小。 可转化为维护每个点为 $\max$ 时的 $[L,R]$ 区间。 然后需要写一个支持 【区间+1】、【区间取min】、单点加入、全局查询。 上个吉司机线段树即可。 ### 注意点 - 吉司机线段树下推 $fi$ 的标记的时候要注意 $f ......
Cartesian zhengjun 1290E 1290 Tree

P8339 [AHOI2022] 钥匙 思考--zhengjun

很容易考虑到计算贡献。 > 该问题的关键在于——如何使得钥匙和宝箱的对应关系不算重 > Warning:有这样的二元对应关系,可以考虑一下转化为括号序列! 转化为括号序列之后,发现路径上括号串的对应关系能够预处理出来。 套个虚树和扫描线,就做完了。 ### 代码 ```cpp #include us ......
zhengjun 钥匙 P8339 8339 2022

HHHOJ #1237. 「NOIP 2023 模拟赛 20230712 C」论剑 总结--zhengjun

- 赛时想了 1.5h 没想出来做法,然后写了个随机化乱搞过了,有点侥幸。 ### 思路 赛时想到: - 答案上界为 $n$。 需要进阶: - 变化超过 $1$ 的数的个数 $\le \lfloor\frac{n}{2}\rfloor$。 - 所以随机一个数,这个数变化不超过 $1$ 的概率 $\g ......
模拟赛 20230712 zhengjun HHHOJ 1237

CF1486F Pairs of Paths 总结--zhengjun

需要保持: - 写代码前先仔细考虑一下细节,分类讨论清楚再开始码。 警告: - namespace 里面写了个 n,想调用全局 n 的时候没加 2*冒号。 思路大概就是分类讨论然后计数就完事了。 ### 代码 ```cpp #include using namespace std; using ll ......
zhengjun 1486F Pairs Paths 1486

P4606 [SDOI2018] 战略游戏 对自己的警告--zhengjun

>tarjan 多测的时候 dfn 数组要清空!!! >树剖多测的时候 son 数组要清空!!! > 点双 tarjan 时可用 vector 建边,边双时用 vector 需要无重边 本题直接建圆方树,然后答案就是关键点构成的虚树上非关键原点个数。 ### 代码 ```cpp #include u ......
zhengjun 战略 P4606 4606 2018

HHHOJ #1238. 「NOIP 2023 模拟赛 20230712 D」但战斗还未结束 思考--zhengjun

赛时想写 60pts,结果 cxr 似乎少算了一点空间,导致我一直没把空间卡过去QWQ。 当时不会 dfs 求拓扑序,这里讲一下。 枚举所有非访问过的点依次 dfs,每次进行下列操作: - 找出 $v$ 的一个未访问过的入点 $u$,调用 `dfs(u)`; - 找不到 $u$ 的时候,把 $v$ ......
模拟赛 20230712 zhengjun HHHOJ 1238

AT_agc062_c [AGC062C] Mex of Subset Sum 思维妙妙题--zhengjun

思路比较巧妙。 首先排序。 考虑目前维护出 $a_{1 \sim i}$ 不能表示的数的集合 $S$。 考虑如何加入 $a_{i+1}$。 如果当前 $sum$ $$S'=S\cup [sum+1,a_{i+1}-1] \cup \{x+a_{i+1}|x\in S\}$$ - 若 $|S\cup ......
062 zhengjun 思维 AT_agc Subset

AT_agc062_b [AGC062B] Split and Insert 对自己的警告--zhengjun

做题时想出来的东西: - 时光倒流 做题时的思维定式: - 按照操作顺序,挨个算出拿几个数到最后 - 没有想到在原序列上进行区间 dp。 - 反复只想到从小到大划分区间,每个区间计算贡献,具有一定局限性 > 需要发现,在考虑不同的值的时候,选择哪些操作顺序是独立的 ### 代码 ```cpp #in ......
062 zhengjun AT_agc Insert Split

AT_agc062_a [AGC062A] Right Side Character 对自己的警告--zhengjun

自己推性质的能力是真的差。 - 如果最后一个字符是 `A`,那么答案就是 `A`(分为全是 `A` 和存在 `B` 两种情况证明即可) - 否则如果最后一个字符是 `B`,检查是否会变为以 `A` 结尾 - 如果原串为 `AA...ABB...B` 的话,答案为 `B` - 否则最后的 `B` 会不 ......
062 Character zhengjun AT_agc Right

CF1601F Two Sorts 题解--zhengjun

[link](https://www.luogu.com.cn/problem/CF1601F) 这里提供一种不用 meet in middle 的方法,速度比较可观。 #### 发现性质 开始简单的推一下式子。 $\sum (i-a_i)\bmod p=\sum (rk_i-i+p\times\l ......
题解 zhengjun 1601F Sorts 1601

平面图学习笔记--zhengjun

要点不多,记一下即可。 $G$ 的对偶图记为 $G^*$。 - $G^*$ 为连通图,若 $G$ 联通,则 $G^{*}{^*}=G$ - $G^*$ 中的简单环对应着 $G$ 中的极小割,(简单对应极小),利用该性质,可以把平面图上的最小割问题转化为对偶图上的最短路问题 - 平面图欧拉公式:$V- ......
平面图 zhengjun 平面 笔记

P6545 [CEOI2014] The Wall 总结记录--zhengjun

[link](https://www.luogu.com.cn/problem/P6545) 思维好题。 - 找到结论,即包住所有点的充要条件 两次最短路的思想确实很妙。 > 结论:找到 $(0,0)$ 到每个标记方格左上角的最短路,那么一定存在包住这些路径的最优解。 证明考虑反证,比较好证的。 # ......
zhengjun P6545 6545 2014 CEOI

QOJ 5500. Bars / NOIP 模拟赛 20230706 B 进阶版--zhengjun

> 本题转化为梯形面积就已经不是很好想了(赛时切掉,开心!) 进阶为静态区间查询。 使用不删除莫队+凸包合并 - 凸包合并就是把散块和整块的凸包合并 - 注意这里两个凸包的横坐标值域是无交的 - 于是可以使用二分套二分解决此问题 > 代码咕着,感觉非常难写 ......
模拟赛 20230706 zhengjun 5500 Bars