北京Day 22

T1 agc017f zigzag

题目大意:写出 m 个长度为 n 的二进制序列,有一些形如“第 i 个的第 j 位 必须为 x”的限制 对于后面的二进制要 ≥ 前面的任意一个二进制。n,m<=20

题解:

每一个二进制只和和前面的一个二进制有关系,自然想到状压前面的一个二进制然后枚举当前的二进制再判断是否合法。

考虑优化,如何判断两个二进制哪一个大哪一个小,发现有前面的若干位相同,某一位其中一个是 0 一个是 1,后面的位任意

f[i][j][S] 表示做到第 i 个二进制,前 j 位和 S 相同的方案数,如果下一位我们要选的和 S 一样就直接转移到 f[i][j+1][S],如果下一位我们想拿 0,但是 S 的下一位是 1,那就不合法。如果下一位我们想拿 1,但是 S 的下一位是 0 我们有两种方法(前移/添加),并且上面已经说明要先尽量前移,无法前移再考虑添加,所以看一看 S 后面有没有可以往前移的 1,有就前移没有就添加,最后把 f[i][n][S] 转移到 f[i+1][0][S] 就可以了。

T2 arc069f Flags

题目大意:N 个旗,第 i 个旗可以被插在 xi 或 yi 处,最大化他插的旗间的最小距离。n<=1e4。

题解:二分答案,用2-SAT判断答案是否合法,用线段树优化建图即可通过本题。

T3 arc079f Namori Grundy

题目大意:有一个 N 个点 N 条边的有向图,顶点标号从 1 到 N。 这个图的 N 条边分别是 (p1, 1),(p2, 2)……(pN, N),并且图是弱连通的。我们需要为这个图中的每个点分配一个权值,并保证满足以下的条件:ai 代表为点 i 分配的权值。 ai 是非负整数,对于每一条边 (i, j),有 ai ̸= aj,对于任意的 i 和整数 x(0 ≤ x < ai),存在点 j,使得 (i, j) 存在并且 aj = x,判断是否存在合法的分配方案。N<=2e5。

题解:题目要求就是求 mex,首先考虑树的情况:树上 sg即可。先把树上部分做完,剩下一个环。

如果所有点的 ai 值都相同: 把这个环断成一条链,然后编号,然后把所有偶数位上的点的值 +1 即可,发现偶环没有问题,奇环 无解。

如果并非所有点的 ai 值都相同:,则依次考虑每条 u 指向 v 的边:

au > av: 不调整          au < av: 不调整              au = av: au+ = 1

也就是说,对于两个相邻的点我们总能通过调整使其满足条件, 然后因为一旦不等便不需要调整,所以不会出现大情况 1 中奇环 情况下的那种一直加根本停不下来的情况,所以这时是一定有解的。

T4 agc019f Yes or No

题目大意:有 N + M 个问题,每个问题的答案是 Yes 或 No,你知道答案为 Yes 的问题恰好有 N 个,答案为 No 的问题恰好有 M 个,但是问题是随机给出的, 你不知道每个问题的答案分别是多少。 你现在可以逐个去猜每个问题的答案,每猜完一个问题的答案, 你就会立刻知道这个问题真正的答案。求出你猜对的次数的最大的期望值。n,m<=5e5

题解:最优策略自然是每次答剩下数目多的。 每次回答问题要么答对要么答错,且使对应题数-1,可以用坐标表示。左下角为 (0, 0),右上角为 (n, m)(设 n ≥ m)。题目的每种排列都对应一条从 (n,m) 走到 (0,0) 的路径。 那么我们从 (n, m) 走到 (0, 0),

走一条横边代表答对一题,可以发现走的横边是max(n,m)。当走到对角线时,会随便猜一个。这时答对的概率为 1/2。即对于每个对角线上的点,每次经过期望答对题数都为 1/2。那么我们对每个对角线上的点统计经过它的路径有多少条 算一算贡献即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值