Gravatar
hsl_beat
积分:225
提交:39 / 57

题意

$n$ 只猫娘,每只猫娘每天要么自己举行了排队,要么会追随自己最好的朋友去参加她要去的派对。


举办的派对有 $3$ 种类型,在每一天晚上都会有一只猫娘举办了某种类型的派对,这只猫娘会一直举行下去直到自己换类型,问每天晚上这三种类型的派对都几只猫娘参加。


思路

首先把猫 $i$ 与自己的朋友连一条有向边,那么整张图就是一个内向基环树。每当一只猫娘举行了派对,这个结点相当于把自己和父亲结点的连边断开了,我们就需要统计每个举办派对的结点子树大小。


如果我们直接对着每一天的修改一个一个做,那么要处理分裂的问题,也能做但是不是很好写,所以我们考虑倒着做。


具体来说,每一天把当前猫娘举办的派对的答案回溯到这只猫娘举办的上一个派对那里(因为这只猫娘从上一个派对到举行当前派对这段时间一直都没变),但是如果这是这只猫娘举办的第一个派对了,那么来她排队里的猫娘和她自己都会跟随她的父亲结点,相当于连上了一条边,可以直接用dsu做,假如当前父亲节点追随的结点举办了派对,那么我们需要把当前结点子树的大小统计进这个派对的类型中。


差点忘了,我们既然从后往前做了,那需要初始化每种类型在最后时刻的人数,可以直接把一直都没举行派对的猫娘直接和她们的父亲节点连起来,然后对于有派对的把对应类型类加上自己子树的大小,然后从后往前一步一步更新当前答案这题做完了。


有一个注意的点在于并查集合并方向要写对,不然只能得 $4$ pts(也可能是我写法问题)。


这题洛谷评蓝是不是太夸张了(


Gravatar
LikableP
积分:1660
提交:388 / 1046

题目很明显是一个最小割问题。对于题目描述中的“通知一个分部,在其所有下辖的铁路上设立检查站”操作,我们需要对如下问题进行网络流建模:给定网络流图以及对其边的划分,一次可以以 $1$ 的代价割掉一个划分集合中的所有边。特别地,在同一个划分集合中的所有边都与某个点相邻。

考虑某个形如 $A_i \to x_i \to B_i$ 的划分集合,其中 $A_i$ 和 $B_i$ 为任意点集。考虑如下建模:

  • 建立虚点 $p_i, q_i$;
  • 有边 $(p_i,q_i,1)$、$(A_i, p_i, 1)$、$(x_i, p_i, 1)$、$(q_i,x_i,1)$、$(q_i,B_i,1)$。

注意到在这个建模中,若所有边都不被割掉,其连通关系恰好为 $A_i \to x \to B_i$,而割掉 $p_i \to q_i$ 之后这个连通关系就消失了,符合我们的需求。

再注意到网络流图上的所有边边权均为 1,直接运行 dinic 算法求解最大流的复杂度为 $O(n \sqrt{m})$,足以通过本题。


Gravatar
LikableP
积分:1660
提交:388 / 1046

CRT或是简单枚举即可得到答案 $83$


题目4277  [THUPC 2025 pre] 好成绩 A      评论
2026-01-24 20:27:40    
Gravatar
LikableP
积分:1660
提交:388 / 1046

给定三种记号:

  • $s_i\text{#}s_{i+1}$ 表示读完 $s_i$ 后应紧跟 $s_{i+1}$,且优先级高于其它两种符号;
  • $s_i\text{*}s_{i+1}$ 表示读完 $s_{i+1}$ 后再读 $s_i$;
  • $s_i\text{p-q}$ 表示(在不考虑的情况下)(如果有则)先读对应的 $\text{p-(q-1)}$ 前的文字,读完 $s_i$,再读对应的 $\text{p-(q+1)}$ 前的文字。

给出一个排列 $p_i$,求一组记号使得阅读 $p_i$ 的顺序恰好将其还原为 $1 \sim K$ 的排列。

1 \le K \le 10^6


先考虑只有最复杂的 \text{p-q} 时应该怎么处理。

可以想到用栈来保存当前的遥远跳转结构,如果碰到可以直接阅读的则将栈清空。

如果有多个遥远跳转结构怎么办?栈套栈!每弹出一个栈,更新新栈顶的栈的嵌套层数。

在此基础上可以实现另外两种符号,其中 \text{*}(及其连续段)需要根据头尾情况简单分类讨论一下。想清楚了实现起来并不复杂。

复杂度 $O(K)$


Gravatar
LikableP
积分:1660
提交:388 / 1046

出题人:abruce

做法:考虑不能出现新的黑点,那么每个与黑点相邻的点要么它自己一开始染白,要么与其相邻的灰点,即其父亲或儿子一开始被染白。

考虑如下 dp:$f_{u,0},f_{u,1},f_{u,2},f_{u,3}$ 分别表示在 $u$ 染白点,$u$ 儿子染白点,$u$ 留给父亲染白点,$u$ 什么也没干。转移考虑 $u$ 的每种情况和 $u$ 的儿子的每种情况是否适配即可。


Gravatar
LikableP
积分:1660
提交:388 / 1046

Sol1:直接分类讨论,如果 $n\leq 20$ 则最终比分一定是 $11:n-11$,如果 $>20$ 一定是 $n/2+1:n/2-1$,这也代表 $n>20$ 的时候一定是偶数。

令已知信息依次为 $(a_{i_1},b_{i_1})\dots (a_{i_k},b_{i,k})$,注意我们认为初始比分 $0:0$ 和上述的最终比分也是已知信息。那我们可以发现每一个 $(a_{i_j},b_{i_j})$ 变化到 $(a_{i_{j+1}},b_{i_{j+1}})$ 的过程是独立的,可以分别计算。

若 $n>20$,我们将 $10:10$ 也当成一条信息加入,那么 $10:10$ 之前相当于网格路径计数从,是一个组合数形式(注意有序对这里是否乘 $2$ 的细节),对于后序每一局的比分实际上都是确定的,在 $x:x$ 变成 $x+1:x$ 时乘 $2$ 即可。

Sol2:DP,注意到任意时刻比分差不超过 $11$,所以直接 $f_{i,j}$ 表示前 $i$ 局比分差为 $j$ 的方案数,然后写一个判定状态是否合法的函数即可,避免很多细节。