[ABC216H]Random Robots

2024-03-16 22:48
文章标签 robots random abc216h

本文主要是介绍[ABC216H]Random Robots,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Random Robots

题解

首先看到 k ⩽ 10 k\leqslant 10 k10的数据范围限制,应该很容易联想到状压。
同时题目有时要求路径无交,很容易想到通过容斥来转移。
我们定义 d p S dp_{S} dpS为对于集合为 S S S的点的合法方法数,考虑怎么对其进行转移。
我们如何处理两点的路径是否有交,可以直接根据两点的终点进行判断。
我们可以从左到右枚举点作为终点,加入状态,我们 d p dp dp会按照终点的顺序将机械人加入状态。
当我们枚举点 p p p作为机械人 x x x的终点,如果有比机械人 x x x编号大的机械人已经加入状态,那么那个机械人一定与我们的机械人 x x x有交点。
但并非编号比他小的机械人终点在它后面就与它没有交点,可能会有这种情况:
在这里插入图片描述
但这种情况我们可以将两者的终点交换一下,得到
在这里插入图片描述

相当于我们同样可以用不合法的情况将其容斥掉。
不如说当我们先加入红色节点,再加入蓝色节点时会产生上面的情况,而下面的情况自身是不会加入到状态中的,只会有我们在先加入蓝色节点,再加入红色节点时将其减去,以除掉上面的不合法状态。
事实上,我们一个机械人会与许多机械人产生交点,所以我们同样需要通过容斥来维护我们的 d p dp dp答案,一面重复减去同一方案。
如果一个机械人与奇数个机械人在终点上产生逆序对,我们就要减去该方案,与偶数个机械人产生逆序对就加上该方案。

而一个机械人从起点 a i a_{i} ai走到终点 b i b_{i} bi会走 b i − a i b_{i}-a_{i} bia

这篇关于[ABC216H]Random Robots的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/816980

相关文章

Numpy random.random()函数补充

np.random.random() np.random.random()的作用是生成指定形状的均匀分布的值为[0,1)的随机数 参数为size,也就是用于指定的形状大小 import numpy as npprint(np.random.random(size=(2, 2)))# [[0.19671797 0.85492315]# [0.99609539 0.66437246]]

Midjourney 随机风格 (Style Random),开启奇幻视觉之旅

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话:       Midjourney 最近推出了 "Style Random"(随机风格),这项功能可以让我们使用独特的随机 sref 代码创建图像,从而每次都能获得不同的美感。通过对这些功能的探索和尝试,我发现了一些很棒的风格,我很高兴能与大家分享,这样可以节省大家的时间,不用自己动手测试。在本文中,我将展示十个M

【HDU】 4067 Random Maze 费用流

Random Maze Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1114    Accepted Submission(s): 387 Problem Description In the game “A C

python random和numpy random

numpy是python的一个数值计算库,可是有许多语法和python不兼容。 比如python的random.randint(low,high)使用方法是返回[low,high]之间的整数,官方文档: random.randint(a, b) Return a random integer N such that a <= N <= b. 注意是两边都是闭区间,但在numpy中,rand

取Random范围内的随机数

Random rand = new Random();        int m = rand.nextInt(); //int范围类的随机数        int n = rand.nextInt(100); //0-100范围内的随机数      包含0,不包含100.

NumPy(二):创建数组【生成固定范围的数组:arange、linspace】【生成0和1的数组:zeros()等】【从现有数组生成:array、asarray】【生成随机数组:np.random】

生成0和1的数组 np.ones()np.ones_like()从现有数组中生成 np.array – 深拷贝np.asarray – 浅拷贝 生成固定范围数组 np.linspace() nun – 生成等间隔的多少个 np.arange() step – 每间隔多少生成数据 np.logspace() 生成以10的N次幂的数据 生成随机数组 正态分布 里面需要关注的参数:均值:u

<meta name=“robots“ content=““>介绍

是一个 HTML 元素,用于指示搜索引擎爬虫(如 Googlebot)如何处理网页的索引和抓取。它可以控制搜索引擎对页面的访问和索引行为。 content 属性可以包含以下指令: index:允许搜索引擎索引该页面(默认行为)。noindex:不允许搜索引擎索引该页面。follow:允许搜索引擎跟踪页面上的链接(默认行为)。nofollow:不允许搜索引擎跟踪页面上的链接。 例如: <m

Redis的内存淘汰策略-allkeys-random

`allkeys-random` 策略简介 在 `allkeys-random` 策略下,当 Redis 的内存使用达到配置的上限(`maxmemory`)时,它会随机选择一个键进行删除,直到释放足够的内存。这个策略的核心特征是其简单性和低计算开销,因为它不需要跟踪每个键的使用频率或最近访问时间。 这种策略适用于以下场景: - 不关心具体删除哪个键的应用场景。 - 数据访问模式不固定,所有

基于Python的机器学习系列(14):随机森林(Random Forests)

简介         在上一节中,我们探讨了Bagging方法,并了解到通过构建多个树模型来减少方差是有效的。然而,Bagging方法中树与树之间仍然可能存在一定的相关性,降低了方差减少的效果。为了解决这个问题,我们引入了随机森林(Random Forests),这是一种基于Bagging的增强技术,通过在每个树的每个分割点上随机选择特征来进一步减少树之间的相关性。 1. Out of Bag

数据切分的艺术:使用PyTorch的torch.utils.data.random_split精粹指南

数据切分的艺术:使用PyTorch的torch.utils.data.random_split精粹指南 在机器学习项目中,合理地分割数据集至关重,它不仅关系到模型训练的有效性,还直接影响到模型的泛化能力。PyTorch提供了一个强大的工具torch.utils.data.random_split,它能够以随机的方式将数据集分割成若干个子集。本文将详细介绍如何使用这一工具进行数据集的随机分割。