04 2024 档案

摘要:A perm 首先若 \((i+j)\) 为奇数则需要满足其中一个是奇数,另一个必须是偶数。 若 \(k=0\),那么要求 \(A_i\) 和 \(A_j\) 同号,也就是所有数必须都是同一奇偶性。若满足则答案为 \(n!\) ,否则为 \(0\) 。 若 \(k=1\) ,那么要求 \(A_i\) 阅读全文
posted @ 2024-04-24 19:49 心海秋的墨木仄 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题面 一道比较简单模拟题,但是要分类讨论 一.读完题你应该知道的 1.输入一共有 T + 1 行,输入含有空格。(处理1) 2.对于每一行变量定义的语句,只会出现一种变量类型,type 只可能是 int 或 long ,只有一个分号。(处理1,处理2) 3.统计内存过程中用 B 做单位,保证一定有输 阅读全文
posted @ 2024-04-10 21:44 心海秋的墨木仄 阅读(15) 评论(0) 推荐(0) 编辑
摘要:一道普及-我写了两个半小时 题面。 需要注意的是,每次交换需要将 a 和 b 两个数组同时交换,因此便可以想到唯一可行情况: a , b 序列数字间的大小关系必须一致。 举个例子 2 4 6 21 3 1 3 1 7 9 70 6 1 2 在上面的例子中,两个序列中任意 \(i\) 和 \(j\) 阅读全文
posted @ 2024-04-10 21:43 心海秋的墨木仄 阅读(41) 评论(0) 推荐(0) 编辑
摘要:大家好,我不喜欢 string,所以我选择用 char 来写。 题目传送门,但不是洛谷。 吐槽一下,这个翻译翻译的并不好,翻译中并没有说明“爱心”是指 <3,还是得去自己翻。 正文 将读入的单词连在一起,并穿插爱心,注意这里首尾都是爱心,需要手动补充。最后将得到的序列与输入的字符串进行比对即可。 关 阅读全文
posted @ 2024-04-10 21:43 心海秋的墨木仄 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题面。 题意描述的很清楚,这里就不多赘述。 思路 看题,对于每个 \(a_i\),若 \(b_j=a_i\),则将 \(b_j\) 与 \(b_{j-1}\) 的值调换(若 \(j=1\),则序列不变)。一开始想的是最直接的暴力,复杂度为 \(O(nm)\),虽然开了三秒的时限,但 \(4\time 阅读全文
posted @ 2024-04-10 21:42 心海秋的墨木仄 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题面。 原先大佬的题解写的很好,但这里想讲一下不同做法。 思路 题目中说的 \(L\) 型有四种情况,很容易就可以想到特殊情况,那就是 \(L\) 型恰好贴在棋盘的四个角上,这时我们发现,这样子棋子只能在棋盘的其中两条边上移动。对于四个角我们进行四次特判。 看普通情况,在手动模拟完样例后发现,棋盘上 阅读全文
posted @ 2024-04-10 21:41 心海秋的墨木仄 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题面。 2023.5.18 修正关于前缀和数组的说法,与代码适配的思路。 题意 给定长度为 \(n\) 一个序列 \(a\) 以及 \(q\) 次询问,每次询问给出 \(l\) 和 \(r\),要求找出序列 \(a\) 在 \([l,r]\) 内最长的几乎递增子序列。 对于几乎递增的定义:如果一个序 阅读全文
posted @ 2024-04-10 21:41 心海秋的墨木仄 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题面。 不好意思,把这道题的通过率拉低了,但坑点确实有。 思路 多出几个数据,我们可以发现,在不报警的前提下,最多可以操作数量是两个特殊字符间的最长距离。 解释 对于不报警的定义是:每次删除操作进行前,当前的字符串中的所有特殊字符的前一个位置必须不是特殊字符。 换句话说,只要当前字符串的任意一个特殊 阅读全文
posted @ 2024-04-10 21:38 心海秋的墨木仄 阅读(7) 评论(0) 推荐(0) 编辑
摘要:题面。 不好意思,又双把通过率拉低了。在 CF 上交了 22 次才过。这里给出不同的写法。 思路 规律其他题解写得都很好,这里不需要再讲述如何推出规律。预处理出前 \(5000\) 个符合要求的数(其实我也不知道处理多少个刚好够,就随便写了一个数)。接下来借用到一点分块思想,将整个 \([l,r]\ 阅读全文
posted @ 2024-04-10 21:37 心海秋的墨木仄 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题面。 大模拟,但是有坑点。 思路 依照题意模拟。用一个字符串 \(out\) 记录在进行了 \(i\) 次操作后如果要输出输出的东西,字符串 \(in\) 和 \(s\) 来分别记录输入的操作及操作类型。 由于输出的第一个字符一定是 /,所以可以直接将 \(out\) 的初始化定为 out = " 阅读全文
posted @ 2024-04-10 21:36 心海秋的墨木仄 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题面。 算是比较简单的题目了,自己多手出几个样例就可以发现规律了。 强烈建议多读几遍题目!!!! 思路 设 0 表示硬币朝上,1 表示硬币朝下,则第 \(0\) 次与第 \(n\) 操作一定输出 \(1\)。因为没有可以操作的对象,前者是由于全部硬币朝上,后者是由于全部硬币朝下,即使没有操作也要遍历 阅读全文
posted @ 2024-04-10 21:35 心海秋的墨木仄 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题面。 不好意思,当我看到 \(1 \le n \le 100\),\(1 \le m \le n\) 的那一刻,我承认我心动了。 题目没翻译,用翻译软件翻译了才看懂。 思路 依据题意直接模拟即可。这里我用了三层循环来模拟。第一层为 \(len\),表示长度;第二层为 \(from\),表示出发点, 阅读全文
posted @ 2024-04-10 21:34 心海秋的墨木仄 阅读(11) 评论(0) 推荐(0) 编辑
摘要:题面。 看到这道题的第一眼,就想到用分块思想来解决。 思路 我们知道,当对任意一个 \(i\) 进行翻转时,区间 \([i-k,i+k]\) 内的所有元素都会翻转,每次翻转的总个数为 \(2 \times k+1\)。 因此,我们可以将所有烤串分成长度为 \(len=2 \times k+1\) 的 阅读全文
posted @ 2024-04-10 21:33 心海秋的墨木仄 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题面。 AC,但是不知道为什么 UKE。这哪里是编程题,简直就是阅读理解。 思路 输入的 \(n\),\(m\),\(k\) 分别表示学生数,学校数,阿卡迪想要的天选之子的数量(虽然我不知道为啥会翻译成天选之子)。 注意了,原文中一句话 Unfortunately, not all of them 阅读全文
posted @ 2024-04-10 21:32 心海秋的墨木仄 阅读(5) 评论(0) 推荐(0) 编辑
摘要:传送门 说句实话,如果不是先写了 Showstopper 这道题的话,我应该会在这里卡很久,因为做 Showstopper 我就卡了很久 QwQ。 思路 太像了,实在是太像了,与 Showstopper 想比,仅仅就是换成二维数组,求最大值变为找递增矩阵,处理方法一模一样:将数组 \(a\) 和 \ 阅读全文
posted @ 2024-04-10 21:31 心海秋的墨木仄 阅读(7) 评论(0) 推荐(0) 编辑
摘要:题面。 大佬的题解写的太好了,这里给出不同于大佬的做法。 思路 读入后,将 \(b\) 数组按照关键字 \(d\) 从小到大排序,并用前缀和数组记录下前 \(i\) 个 \(d\) 的总和。在对每个 \(a_i\) 进行查询时,二分找出第一个 \(a_i\) 不能攻打的城市 \(l\),此时说明前 阅读全文
posted @ 2024-04-10 21:27 心海秋的墨木仄 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题面。 在考虑如何优化程序时,不要忽略了这题的纯暴力做法。 对于样例 2 此处样例 2 的输入应该是 ++++[>,.<-],也许是翻译问题,但并不重要。 思路 依据题意,将输入的字符串 \(s\) 转为其对应的二进制串 \(str\),在暴力将 \(str\) 由二进制转为十进制即可。 代码 为了 阅读全文
posted @ 2024-04-10 17:46 心海秋的墨木仄 阅读(4) 评论(0) 推荐(0) 编辑
摘要:好久没写题解了,水一篇。 这里主要想讲的是不同的处理方法,在阅读本篇题解前请确保读完题。 详解 一,排序 这很好理解,题目要求将热帖从小到大输出,同时题目中还有相对的时间这一概念,因此将输入的 \(id\) 与 \(ts\) 按照优先 \(id\) 其次 \(ts\) 的排序方式从小到大,排序,这样 阅读全文
posted @ 2024-04-10 17:45 心海秋的墨木仄 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题面。 看到大家都是两个动态规划的写法,来给大家讲一下只用一次动态规划的写法。 思路 设 \(f_{i,j}\) 表示工作效率为 \(i\),获取 \(j\) 点资源所需的最短时间,不以苦工设状态是因为苦工会因为后面购买而改变,不太现实。\(tme\) 表示答案,即到达 \(t\) 点资源所需的最短 阅读全文
posted @ 2024-04-10 17:41 心海秋的墨木仄 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题面。 翻译清晰,这里就不吐槽了。 根据轮盘转动的方法,可以看出这是一个简单的高斯求和。 因为这是一个轮盘,在轮盘中转动了 \(now\) 个格子与转动了 \(now \bmod n\) 所到达的格子是一样的(这就没必要证明了吧),因此我们很容易就能得到一个最朴素的代码: cin >> T; whi 阅读全文
posted @ 2024-04-10 17:40 心海秋的墨木仄 阅读(31) 评论(0) 推荐(0) 编辑
摘要:题面。 直接进入主题吧。 思路 题目要求非递减序列,很明显,由题目给的操作,一定可以将这个序列的前 \(n - 1\) 项能够满足是非递减序列,最后只需要比较第 \(n\) 项是否大于等于第 \(n - 1\) 项即可。 解释一下为什么。对于序列 \(a\),从 \(a_1\) 开始到 \(a_{n 阅读全文
posted @ 2024-04-10 17:39 心海秋的墨木仄 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题面。 直接依照题意模拟即可,注意细节。 细节 第一 注意输出分式时分母为 \(1\) 不输出,分子为 \(0\) 直接输出零且不带正负号。 第二 约分时,\(gcd\) 内的两个数应该都是非负实数。 第三 可以单独输出符号,注意别有多余的符号。 第四 当方程有两根且均是有理数时,要根据 \(2a\ 阅读全文
posted @ 2024-04-10 17:37 心海秋的墨木仄 阅读(307) 评论(0) 推荐(0) 编辑
摘要:建议凭橙,思路橙,码量红到橙。 题面。 思路 一,暴力 直接依照题意模拟,复杂度 \(O(tqn^2)\),看一眼数据范围,妥妥 T 飞,倒在第三个点。 二,逐步优化 看一眼数据发现,虽然 \(q\) 很大,但实际上 \(x\) 只有三十个值,因此首先预处理出从 \(2^1\) 到 \(2^{30} 阅读全文
posted @ 2024-04-10 17:36 心海秋的墨木仄 阅读(9) 评论(0) 推荐(0) 编辑
摘要:比较简单,建议评橙。 题面。 思路 对于每个给定的字符串,用两个大根堆来分别记录小写字母与大写字母,注意这里记录时不要记录大写的 B 和小写的 b。 每当出现一个 B 时,从记录大写字母的大根堆中取出目前最后录入的大写字母的位置,标记,接着弹出堆顶元素,标记。小写字母同理。 以上操作在遍历一遍字符串 阅读全文
posted @ 2024-04-10 17:34 心海秋的墨木仄 阅读(19) 评论(0) 推荐(0) 编辑
摘要:翻译 给定一个字符串 \(s\),你有两种操作: 删除一个字符。(花费一枚金币) 交换某两个字符的位置。(不花费金币) 假设经过若干次操作后得到的字符串为 \(t\)。 \(t\) 是好的当且仅当对于任意的 \(i\)(\(1 \le i \le |t|\),\(|t|\) 为字符串 \(t\) 的 阅读全文
posted @ 2024-04-10 17:32 心海秋的墨木仄 阅读(11) 评论(0) 推荐(0) 编辑
摘要:翻译 初始时你有一个空序列,共 \(m\) 次操作,每次操作读入两个数 \(t_i\),\(v_i\),分为以下两种操作: 当 \(t_i=1\) 时,在空序列中加入 \(2^{v_i}\) 这一元素。(此时 \(0 \le v_i \le 29\)) 当 \(t_i=2\) 时,询问是否存在:取当 阅读全文
posted @ 2024-04-10 17:31 心海秋的墨木仄 阅读(8) 评论(0) 推荐(0) 编辑
摘要:一种似乎更快抽象的解法? 题面。 正文 看这道题,给定序列 \(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 阅读全文
posted @ 2024-04-10 17:28 心海秋的墨木仄 阅读(30) 评论(0) 推荐(0) 编辑
摘要:原题描述 游戏规则 有三个红包,其中一个红包装了钱,另外两个为空红包。 先需要玩家从中选择一个红包。 当玩家选定了一个红包,但未打开的时候,主持人知道每个红包有什么,会打开另一个没有钱的红包。 接下来玩家会被问到:是保持他的原来选择,还是改变决策,选择另一个红包? 根据我聪明的朋友回答 , 不管换不 阅读全文
posted @ 2024-04-05 21:23 心海秋的墨木仄 阅读(75) 评论(1) 推荐(0) 编辑
摘要:【魔术】最大流相关 \(\textit {\textbf {Highest Label Preflow Push}}\) 算法补充 网络流/二分图相关笔记(干货篇) 浅谈网络流 最大流相关 阅读全文
posted @ 2024-04-05 21:19 心海秋的墨木仄 阅读(8) 评论(0) 推荐(0) 编辑
摘要:A 数列删除 至少删除 \(m\) 个数,意思就是最多保留 \(n-m\) 个数。 删除的总和最小,意思就是保留的总和最大。 非降子序列问题可以用经典的动态规划来解决。 用 \(f[i][j]\) 表示,当前选的最后一个数是 \(a[i]\),一共选了 \(j\) 个数,选的数总和最大是多少。 转移 阅读全文
posted @ 2024-04-05 21:16 心海秋的墨木仄 阅读(8) 评论(0) 推荐(0) 编辑
摘要:A 贸易 题目保证输入的边 \(u < v\),说明题目中的图是一个有向无环图 \(DAG\),但是不一定连通。可以记录 \(f[i]\) 表示到达 \(i\) 之前能遇到的最小的价格,使用拓扑排序进行 \(dp\) 转移。对于每一个点 \(i\) , 如果其价格为 \(a[i]\), 就可以用 \ 阅读全文
posted @ 2024-04-05 21:16 心海秋的墨木仄 阅读(5) 评论(0) 推荐(0) 编辑
摘要:A 按题意直接模拟即可。也就是每次取出一些字符,放入字符串\(P\)中。 注意实现时的时间复杂度,不要写成 \(O(n^2)\) 的。 #include<bits/stdc++.h> using namespace std; char s[1000010],t[1000010]; int hd1=1 阅读全文
posted @ 2024-04-05 21:16 心海秋的墨木仄 阅读(18) 评论(0) 推荐(0) 编辑
摘要:A. 小学数学 20分暴力即可。40分将询问拆为 \(\leq t\) 减去 \(<s(\leq s-1)\) 的两个问题,然后将询问排序后做前缀和即可。 满分要求强制在线,将矩阵中所有元素排序,然后分成 \(\sqrt{nm}\) 个块,每个块记录二维前缀和(出现了多少次块内的数)。每次询问时先处 阅读全文
posted @ 2024-04-05 21:16 心海秋的墨木仄 阅读(3) 评论(0) 推荐(0) 编辑
摘要:A 看到最大的最小,可以想到二分答案。 答案的不公平度可以二分,因此二分然后检查即可。 检查的时候假设二分的答案为 \(a\),则一种玩偶如果有 \(x\) 个,就需要至少分给 \(x/a\) 上取整个小朋友。只要看小朋友总数够不够即可。于是可以线性时间复杂度检查。 总时间复杂度 \(O(n\log 阅读全文
posted @ 2024-04-05 21:16 心海秋的墨木仄 阅读(3) 评论(0) 推荐(0) 编辑
摘要:郊游 首先需要快速找到当前适配度最大的一对小朋友。容易发现 \(a,b\) 的适配度即为 \(a,b\) 二进制下最长公共后缀的长度,于是先翻转所有数的二进制串并插入到 Trie 中。那么 \(a,b\) 的适配度即为 \(a,b\) 所代表叶子节点的 \(\rm LCA\) (最近公共祖先)深度。 阅读全文
posted @ 2024-04-05 21:15 心海秋的墨木仄 阅读(5) 评论(0) 推荐(0) 编辑
摘要:\(\textit {2024.1.27 11:45}\),召唤最强 \(\textit {Servant}\)——职阶为 \(\textit {Oier}\) 的 \(\textit {Soul}\)_\(\textit {Love}\) 协助学习分块。 \(\textit {2024.1.27 阅读全文
posted @ 2024-04-05 20:57 心海秋的墨木仄 阅读(13) 评论(0) 推荐(0) 编辑