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)\)。
随机推荐
- 单线程 Redis 如此快的 4 个原因
本文翻译自国外论坛 medium,原文地址:https://levelup.gitconnected.com/4-reasons-why-single-threaded-redis-is-so-fas ...
- 从零开发一款图片编辑器(使用html5+javascript)
最近开发了一个图片编辑器,类似于photoshop的网页版,源码参考自GitHub上,顺便也总结下使用html+js开发一个编辑器需要用到哪些知识点. 预览地址: https://ps.gitapp. ...
- 小程序:Now you can provide attr `wx:key` for a `wx:for` to improve performance. 的解决方案
在wx:for后面添加wx:key="key" 可消除警告 <view wx:for="{{thisWeekMovies}}" wx:for-index= ...
- Vue-自定义icon实现
在项目中引入了element-ui之后,发现其内置的icon有限,无法满足项目的需求,因此需自定义icon来实现需求. 在vue项目的components下新建SvgIcon目录,在SvgIcon目录 ...
- solr-es
一.lucene 1.是什么 是apache提供的一套java写的用于全文检索工具包,该工具包提供了用于实现全文检索的api类,可用于实现搜索引擎功能. 2.搜索常用方法 顺序扫描法:应用于数据结构固 ...
- Go-单元测试-Test
单元测试 文件名以 _test.go 结尾 函数名以 Test 开头 函数参数固定 t *testing.T 运行单元测试 go test Demo 源文件 package unit import & ...
- TLS1.3的简单学习
TLS1.3的简单学习 TLS的历史 From GTP3.5 TLS(传输层安全)是一种加密协议,旨在确保 Internet 通信的安全性和隐私保护.下面是 TLS 的历史概述: SSL(安全套接层) ...
- [转帖]shell脚本字符串截取的8种方法
https://www.cnblogs.com/zwgblog/p/6031256.html 假设有变量 var=http://www.aaa.com/123.htm. 1. # 号截取,删除左边字符 ...
- [转帖]Linux查看raid1和raid10分别由哪些盘组成,在哪个槽位
查找有问题的盘 MegaCli64 -PDList -aALL |grep "Firmware state" 6个盘,2个坏了 查看raid级别和硬盘的状态 MegaCli64 - ...
- [转帖]vCenter使用 VMCA 续订证书:续订证书时发生意外错误
https://www.dinghui.org/vcenter-sts-certificate.html 起因:有一处客户vCenter告警:STS签名证书即将过期. 处理办法:系统管理-证书-证书管 ...