【做题记录】Atcoder 做题记录

链接放的是洛谷上的链接。

<details>

<summary>$\texttt{solution}$</summary>

</details>

ARC083F

\(n\times n\) 的正方形上有 \(2n\) 个小球,第 \(i\) 个在 \((x_i,y_i)\)

\(n\) 个 A 类机器人,第 \(i\) 个在 \((0,i)\),有 \(n\) 个 B 类机器人,第 \(i\) 个在 \((i,0)\)

启动一个 A 类机器人后,它会向右走,将碰到的第一个球收集起来,并返回起点。启动一个 B 类机器人后,它会向上走,将碰到的第一个球收集起来,并返回起点。

只有上一个机器人返回起点后,下一个机器人才会被启动。机器人一旦被使用过一次就不能被再次使用。

问你有多少种启动机器人的顺序,能够收集完所有小球。方案数对 \(10^9+7\) 取模 。

\(n\leq 10^5\)

$\texttt{solution}$

不会做,看题解去了。。每个机器人都会认领一个球,放到图上,发现这就是个基环树森林。

  • 对于点对 \((x_i,y_i)\),在 \(x_i\)\(y_i\) 之间连边,相当于每个机器人都要认领一条边,发现如果不是基环树无法实现。
  • 一条边可以被 \(x_i\) 处的或 \(y_i\) 处的机器人认领,不妨将每条边定向,那么每个点都会有一个出度,是一个内向基环树。

这样就将题目转化为在内向基环树森林上取点的方案数。

如果将这棵树上按照覆盖的顺序拎出来,可以发现这是一棵内向树,内向树拓扑排序数量如下,\(|S|\) 为森林的大小,\(siz_i\) 是子树 \(i\) 的大小:

\[\dfrac{|S|!}{\prod_{i}siz_i} \]

那么求出每棵树的方案乘起来就行了(基环树的环有两种方向!,加起来后乘起来)

AGC002F

给你 \(n\) 种颜色的球,每个球有 \(k\) 个,把这 \(n\times k\) 个球排成一排,把每一种颜色的最左边出现的球涂成白色(初始球不包含白色),求有多少种不同的颜色序列,答案对 \(10^9+7\) 取模。

\(n,k\le 2000\)

$\texttt{solution}$

考虑这样一个 dp:设 \(dp(i,j)\) 表示已经放了 \(i\) 中颜色,放了 \(j\) 的球的方案数。

我们在放置一种颜色的球时,考虑直接放完这种颜色的所有球,那么就不会对接下来放球造成影响。

  • 如果我们选择放置一个白球,直接放在能够放置的最前一个位置。
  • 否则,需要先选择出这次放置的颜色,再选出放置的位置,直接转移。

当然,我们需要保证 \(i\le j\),这保证我们的放置符合题意。

AGC003E

一串数,初始为 \(1\sim n\),现在给 \(Q\) 个操作,每次操作把数组长度变为 \(q_i\),新增的数为上一个操作后的数组的重复。问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值