A

题意:你在数轴原点。有一个宝箱在 \(x\),钥匙在 \(y\)。每移动一单位,耗费 \(1\) 时间。你可以到了 \(x\) 然后抱着宝箱走,但是抱着宝箱走的总路程不能超过 \(k\) 单位。如果某时刻你、钥匙、宝箱在同一个单位上,就能开宝箱。问:最快要多久开宝箱?

要么是拿钥匙,向宝箱走;要么是去抱着宝箱,向钥匙走 \(k\) 单位,或者直接走到钥匙那里。两种情况取 \(\min\) 即可。

B

给定一个长 \(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])\) 作为最后一个点,答案就是它俩的曼哈顿距离。

C

题意:给出 \(n\) 个字符串(\(len\le 5\)),每个字符都是数字。问有多少对字符串拼起来之后,前半部分的数字和等于后半部分?(若拼起来不是偶数长度,忽略)

关注:给出的长度 \(\le 5\),直接枚举哪两种长度的字符串拼在一起,用个 \(map\) 记录就行了。

D

题意:给出一个长 \(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\) 就决定好了,可以输出。

E

小 A 和小 B 在打牌,各有 \(n,m\) 张牌。每张牌有自己的攻击力和防御。小 A 先手。

一张牌 \(a\) 能打败另一张牌 \(b\),当且仅当 \(a.attack>b.defence\)。

每当对手打出一张牌,此时的人就必须打出一张能打败它的牌;否则此时的人就输了。当一张牌被打败,它会回到主人手中。

问当两人绝顶聪明,最终的结果是谁赢或者平局。

首先一个局面可以用正打出来的那张牌来代表。把一个局面抽象成一个结点,构建一张有向图。这已经是一个解法,但是是 \(O(nm)\) 的。因为边数是 \(O(nm)\) 的。

尝试优化边数。发现每次打出去的牌,一定是能击败对面的,防御值最高的牌。将两人的牌按攻击排序,求后缀防御最大值,再套一个二分,就可以求出每个人会使用哪张牌来击败对面的哪张牌。

此时的边数就被优化到 \(O(n)\) 级别了,一次 dfs 搞定。

复杂度 \(O(n\log n)\)。(排序、二分的复杂度)

F

定义一个长度为 \(n\) 的非负整数序列是 Fancy 的,当且仅当:

  1. \(\exists i \in [1,n]\),\(a_i\in[x, x + k - 1]\)。

  2. \(\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)\)。

随机推荐

  1. Linux系统CPU异常占用(minerd 、tplink等挖矿进程)

    转载请注明出处: 云服务器ECS(Linux) CPU使用率超过70%,严重时可达到100%,服务器响应越来越慢.  服务器中存在恶意minerd.tplink进程 该进程是服务器被入侵后,被恶意安装 ...

  2. 项目启动一直 DruidDataSource inited,启动很慢

    解决方案: 由于在调试过程中,代码中设置了断点,在启动的时候,服务就一直卡住了,当关闭断点,重新启动就ok了.

  3. Chrome/Edge 设置黑色主题

    Chrome chrome://flags/#enable-force-dark Edge edge://flags/#enable-force-dark

  4. css - 伪元素清除浮动

    .clearfix:after{ content:""; /*设置内容为空*/ height:0; /*高度为0*/ line-height:0; /*行高为0*/ display ...

  5. [转帖]解决Java/MySQL性能问题的思路

    https://plantegg.github.io/2023/08/28/%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98%E6%80%9D%E8%B7%AF/ 10年前写的 ...

  6. [转帖]一文理清 TiDB 与 MySQL 中的常用字符集及排序规则

    https://tidb.net/blog/0c5b6025   1.1. 字符集与编码规则 字符集(character set)即为众多字符的集合.字符集为每个字符分配一个唯一的 ID,称为 &qu ...

  7. [转帖]linux shell 中数组的定义和for循环遍历的方法

    https://www.cnblogs.com/ysk123/p/11510718.html linux 中定义一个数据的语法为: variable=(arg1 arg2 arg3 ....) 中间用 ...

  8. 【转帖】ChatGPT重塑Windows!微软王炸更新:操作系统全面接入,Bing也能用插件了

    https://cloud.tencent.com/developer/article/2291078?areaSource=&traceId= 金磊 丰色 西风 发自 凹非寺 量子位 | 公 ...

  9. Oracle19c 单节点ASM 存储模式数据库实例搭建过程

    1. 建议使用OEL进行安装. 2. 可以优先在Oracle的yum上面下载必须的rpm包. 地址为: http://yum.oracle.com/repo/OracleLinux/OL7/lates ...

  10. SHA加密在实际应用中的优势与局限

    SHA加密算法简介 SHA(Secure Hash Algorithm)加密算法是一种单向加密算法,常用于加密数据的完整性校验和加密签名.它是由美国国家安全局(NSA)设计并广泛应用于各种安全场景.S ...