CF1895
题意:你在数轴原点。有一个宝箱在 \(x\),钥匙在 \(y\)。每移动一单位,耗费 \(1\) 时间。你可以到了 \(x\) 然后抱着宝箱走,但是抱着宝箱走的总路程不能超过 \(k\) 单位。如果某时刻你、钥匙、宝箱在同一个单位上,就能开宝箱。问:最快要多久开宝箱?
要么是拿钥匙,向宝箱走;要么是去抱着宝箱,向钥匙走 \(k\) 单位,或者直接走到钥匙那里。两种情况取 \(\min\) 即可。
给定一个长 \(2n\) 的数组,将其分为 \(n\) 个 pair 表示 \(n\) 个点。定义 \(s_i\) 为第 \(i\) 个点与第 \(i+1\) 个点的曼哈顿距离,请最小化 \(\sum_{i=1}^{n-1} s_i\)。
显然,如果两个点之间插入一个两个坐标都在它们之间的点,答案不会变。
所以数组排序,让 \((a[1],a[2n])\) 作为第一个点,\((a[n],a[n+1])\) 作为最后一个点,答案就是它俩的曼哈顿距离。
题意:给出 \(n\) 个字符串(\(len\le 5\)),每个字符都是数字。问有多少对字符串拼起来之后,前半部分的数字和等于后半部分?(若拼起来不是偶数长度,忽略)
关注:给出的长度 \(\le 5\),直接枚举哪两种长度的字符串拼在一起,用个 \(map\) 记录就行了。
题意:给出一个长 \(n-1\) 的数组 \(b\),\(b_i=a_i\bigoplus a_{i+1}\)。要求能否构造一个数组 \(a\) 满足 \(b\),且 \(a_i\in [0,n-1]\)。
令 \(s_i=b_1\bigoplus\dots\bigoplus b_i\),则 \(s_i=a_1\bigoplus a_{i+1}\)。将 \(s_i\) 插入 01-Trie 中。
枚举 \(a_1:0\sim n-1\),查询此时 \(a_1\) 与哪个 \(s\) 异或最大,看这个最大值是否超过 \(n-1\):如果没超过,\(a_1\) 就决定好了,可以输出。
小 A 和小 B 在打牌,各有 \(n,m\) 张牌。每张牌有自己的攻击力和防御。小 A 先手。
一张牌 \(a\) 能打败另一张牌 \(b\),当且仅当 \(a.attack>b.defence\)。
每当对手打出一张牌,此时的人就必须打出一张能打败它的牌;否则此时的人就输了。当一张牌被打败,它会回到主人手中。
问当两人绝顶聪明,最终的结果是谁赢或者平局。
首先一个局面可以用正打出来的那张牌来代表。把一个局面抽象成一个结点,构建一张有向图。这已经是一个解法,但是是 \(O(nm)\) 的。因为边数是 \(O(nm)\) 的。
尝试优化边数。发现每次打出去的牌,一定是能击败对面的,防御值最高的牌。将两人的牌按攻击排序,求后缀防御最大值,再套一个二分,就可以求出每个人会使用哪张牌来击败对面的哪张牌。
此时的边数就被优化到 \(O(n)\) 级别了,一次 dfs 搞定。
复杂度 \(O(n\log n)\)。(排序、二分的复杂度)
定义一个长度为 \(n\) 的非负整数序列是 Fancy 的,当且仅当:
\(\exists i \in [1,n]\),\(a_i\in[x, x + k - 1]\)。
\(\forall i\in [2, n]\),\(|a_i - a_{i - 1}| \leq k\)。
多测,给定 \(n,x,k\),求有多少 Fancy 序列,答案对 \(10^9 + 7\) 取模。
\(1\leq n,k\leq 10^9\),\(0\leq x\leq 40\)。
直接求两个条件,很难;所以我们改为求满足第二个条件,但是违反第一个条件的个数。
由于第二个条件,所以 \(a\) 要么全部属于 \([0,x)\),要么属于 \((x+k-1,M]\),其中 \(M\) 代表上界,可以视为 \(10^{500}\)。
令 \(f(l,r)\) 为违反第一个条件、满足第二个条件、所有元素都在 \([l,r]\) 内的 \(\{a\}\) 的数量。则我们要求的就是 \(f(0,M)-f(0,x-1)-f(x+k,M)\)。
由条件二的做差,考虑将 \(a\) 转用差分数组表示。记差分数组为 \(\triangle\)。
记 \(cnt(l,r,\triangle)\):固定了差分数组为 \(\triangle\) 后,有多少个 \(a_1\) 使得 \(\{a\}\) 中每个元素都在 \([l,r]\) 之间。
则 \(f(l,r)=\displaystyle\sum_{\triangle}cnt(l,r,\triangle)\)。
随机推荐
- shell读取配置文件中的参数
shell读取配置文件中的参数 配置文件 配置文件config.properties如下: user=bk age=25 ip=192.168.37.1 一.使用cat+awk语句过滤并赋值变量 u ...
- Feign源码解析7:nacos loadbalancer不支持静态ip的负载均衡
背景 在feign中,一般是通过eureka.nacos等获取服务实例,但有时候调用一些服务时,人家给的是ip或域名,我们这时候还能用Feign这一套吗? 可以的. 有两种方式,一种是直接指定url: ...
- c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动
.NET nanoFramework 安装教程 准备材料 esp32单片机(支持wifi蓝牙) 安卓数据线(需要支持传输) 注意!请先安装esp32驱动程序 ESP32驱动链接 安装 .NET n ...
- Ubuntu安装jdk的步骤
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- C# 线程本地存储 为什么线程间值不一样
一:背景 1. 讲故事 有朋友在微信里面问我,为什么用 ThreadStatic 标记的字段,只有第一个线程拿到了初始值,其他线程都是默认值,让我能不能帮他解答一下,尼玛,我也不是神仙什么都懂,既然问 ...
- SpringBoot03:首页国际化
页面国际化 有的时候,我们的网站会去涉及中英文甚至多语言的切换,这时候我们就需要学习国际化! 1.配置文件编写 首先在resources资源文件下新建一个i18n目录,存放国际化配置文件 新建一个lo ...
- [转帖]k8s对接ceph,ceph-csi方式
1.上传ceph-csi-yaml和ceph-csi-image 两个文件夹到服务器 2.加载 ceph-csi-image里面的镜像 3.将加载好的镜像上传到本地harbor上. 4.修改ceph- ...
- [转帖] Linux命令拾遗-查看系统信息
https://www.cnblogs.com/codelogs/p/16060714.html 简介# 作为一名程序员,有时需要关注自己的进程运行在什么样的软硬件环境里,比如几核cpu.固态硬盘还是 ...
- 【转帖】GPT4All开源的聊天机器人
GPT4All是一个开源的聊天机器人,它基于LLaMA的大型语言模型训练而成,使用了大量的干净的助手数据,包括代码.故事和对话.它可以在本地运行,不需要云服务或登录,也可以通过Python或Types ...
- 【转帖】通过pip命令安装好包之后,在pycharm中不显示此库,也不能调用
目录 1. 问题描述 2. 解决方法1 3. 解决方法2 1. 问题描述 在cmd输入pip list 命令可以看到我的库都已经安装好了,但是pycharm中却没有显示. 在PyCharm查找,并没有 ...