合集-题解
摘要:一种似乎更快抽象的解法? 题面。 正文 看这道题,给定序列 \(l,r,c\),要求重构 \(l,r,c\) 使得 \(\sum_{i=1}^n(r_i-l_i) \times c_i\) 最小。 首先可以想到的就是尽量让小的 \(r_i-l_i\) 乘上大的 \(c_i\)。这样子看来 \(c_i
阅读全文
摘要:翻译 初始时你有一个空序列,共 \(m\) 次操作,每次操作读入两个数 \(t_i\),\(v_i\),分为以下两种操作: 当 \(t_i=1\) 时,在空序列中加入 \(2^{v_i}\) 这一元素。(此时 \(0 \le v_i \le 29\)) 当 \(t_i=2\) 时,询问是否存在:取当
阅读全文
摘要:题面。 直接依照题意模拟即可,注意细节。 细节 第一 注意输出分式时分母为 \(1\) 不输出,分子为 \(0\) 直接输出零且不带正负号。 第二 约分时,\(gcd\) 内的两个数应该都是非负实数。 第三 可以单独输出符号,注意别有多余的符号。 第四 当方程有两根且均是有理数时,要根据 \(2a\
阅读全文
摘要:建议凭橙,思路橙,码量红到橙。 题面。 思路 一,暴力 直接依照题意模拟,复杂度 \(O(tqn^2)\),看一眼数据范围,妥妥 T 飞,倒在第三个点。 二,逐步优化 看一眼数据发现,虽然 \(q\) 很大,但实际上 \(x\) 只有三十个值,因此首先预处理出从 \(2^1\) 到 \(2^{30}
阅读全文
摘要:比较简单,建议评橙。 题面。 思路 对于每个给定的字符串,用两个大根堆来分别记录小写字母与大写字母,注意这里记录时不要记录大写的 B 和小写的 b。 每当出现一个 B 时,从记录大写字母的大根堆中取出目前最后录入的大写字母的位置,标记,接着弹出堆顶元素,标记。小写字母同理。 以上操作在遍历一遍字符串
阅读全文
摘要:翻译 给定一个字符串 \(s\),你有两种操作: 删除一个字符。(花费一枚金币) 交换某两个字符的位置。(不花费金币) 假设经过若干次操作后得到的字符串为 \(t\)。 \(t\) 是好的当且仅当对于任意的 \(i\)(\(1 \le i \le |t|\),\(|t|\) 为字符串 \(t\) 的
阅读全文
摘要:题面。 AC,但是不知道为什么 UKE。这哪里是编程题,简直就是阅读理解。 思路 输入的 \(n\),\(m\),\(k\) 分别表示学生数,学校数,阿卡迪想要的天选之子的数量(虽然我不知道为啥会翻译成天选之子)。 注意了,原文中一句话 Unfortunately, not all of them
阅读全文
摘要:传送门 说句实话,如果不是先写了 Showstopper 这道题的话,我应该会在这里卡很久,因为做 Showstopper 我就卡了很久 QwQ。 思路 太像了,实在是太像了,与 Showstopper 想比,仅仅就是换成二维数组,求最大值变为找递增矩阵,处理方法一模一样:将数组 \(a\) 和 \
阅读全文
摘要:题面。 大佬的题解写的太好了,这里给出不同于大佬的做法。 思路 读入后,将 \(b\) 数组按照关键字 \(d\) 从小到大排序,并用前缀和数组记录下前 \(i\) 个 \(d\) 的总和。在对每个 \(a_i\) 进行查询时,二分找出第一个 \(a_i\) 不能攻打的城市 \(l\),此时说明前
阅读全文
摘要:题面。 在考虑如何优化程序时,不要忽略了这题的纯暴力做法。 对于样例 2 此处样例 2 的输入应该是 ++++[>,.<-],也许是翻译问题,但并不重要。 思路 依据题意,将输入的字符串 \(s\) 转为其对应的二进制串 \(str\),在暴力将 \(str\) 由二进制转为十进制即可。 代码 为了
阅读全文
摘要:好久没写题解了,水一篇。 这里主要想讲的是不同的处理方法,在阅读本篇题解前请确保读完题。 详解 一,排序 这很好理解,题目要求将热帖从小到大输出,同时题目中还有相对的时间这一概念,因此将输入的 \(id\) 与 \(ts\) 按照优先 \(id\) 其次 \(ts\) 的排序方式从小到大,排序,这样
阅读全文
摘要:题面。 看到大家都是两个动态规划的写法,来给大家讲一下只用一次动态规划的写法。 思路 设 \(f_{i,j}\) 表示工作效率为 \(i\),获取 \(j\) 点资源所需的最短时间,不以苦工设状态是因为苦工会因为后面购买而改变,不太现实。\(tme\) 表示答案,即到达 \(t\) 点资源所需的最短
阅读全文
摘要:题面。 翻译清晰,这里就不吐槽了。 根据轮盘转动的方法,可以看出这是一个简单的高斯求和。 因为这是一个轮盘,在轮盘中转动了 \(now\) 个格子与转动了 \(now \bmod n\) 所到达的格子是一样的(这就没必要证明了吧),因此我们很容易就能得到一个最朴素的代码: cin >> T; whi
阅读全文
摘要:题面。 直接进入主题吧。 思路 题目要求非递减序列,很明显,由题目给的操作,一定可以将这个序列的前 \(n - 1\) 项能够满足是非递减序列,最后只需要比较第 \(n\) 项是否大于等于第 \(n - 1\) 项即可。 解释一下为什么。对于序列 \(a\),从 \(a_1\) 开始到 \(a_{n
阅读全文
摘要:一道普及-我写了两个半小时 题面。 需要注意的是,每次交换需要将 a 和 b 两个数组同时交换,因此便可以想到唯一可行情况: a , b 序列数字间的大小关系必须一致。 举个例子 2 4 6 21 3 1 3 1 7 9 70 6 1 2 在上面的例子中,两个序列中任意 \(i\) 和 \(j\)
阅读全文
摘要:题面 一道比较简单模拟题,但是要分类讨论 一.读完题你应该知道的 1.输入一共有 T + 1 行,输入含有空格。(处理1) 2.对于每一行变量定义的语句,只会出现一种变量类型,type 只可能是 int 或 long ,只有一个分号。(处理1,处理2) 3.统计内存过程中用 B 做单位,保证一定有输
阅读全文
摘要:题面。 题意描述的很清楚,这里就不多赘述。 思路 看题,对于每个 \(a_i\),若 \(b_j=a_i\),则将 \(b_j\) 与 \(b_{j-1}\) 的值调换(若 \(j=1\),则序列不变)。一开始想的是最直接的暴力,复杂度为 \(O(nm)\),虽然开了三秒的时限,但 \(4\time
阅读全文
摘要:大家好,我不喜欢 string,所以我选择用 char 来写。 题目传送门,但不是洛谷。 吐槽一下,这个翻译翻译的并不好,翻译中并没有说明“爱心”是指 <3,还是得去自己翻。 正文 将读入的单词连在一起,并穿插爱心,注意这里首尾都是爱心,需要手动补充。最后将得到的序列与输入的字符串进行比对即可。 关
阅读全文
摘要:题面。 原先大佬的题解写的很好,但这里想讲一下不同做法。 思路 题目中说的 \(L\) 型有四种情况,很容易就可以想到特殊情况,那就是 \(L\) 型恰好贴在棋盘的四个角上,这时我们发现,这样子棋子只能在棋盘的其中两条边上移动。对于四个角我们进行四次特判。 看普通情况,在手动模拟完样例后发现,棋盘上
阅读全文
摘要:题面。 2023.5.18 修正关于前缀和数组的说法,与代码适配的思路。 题意 给定长度为 \(n\) 一个序列 \(a\) 以及 \(q\) 次询问,每次询问给出 \(l\) 和 \(r\),要求找出序列 \(a\) 在 \([l,r]\) 内最长的几乎递增子序列。 对于几乎递增的定义:如果一个序
阅读全文