随笔分类 -  题解

上一页 1 ··· 5 6 7 8 9 10 下一页
摘要:题意:给 $n$ 个数冒泡排序,求期望交换次数。 思路 这个题目可以转化为求 $n$ 个数的期望逆序对个数。 那么,$n$ 个数有 $C_n^2=\dfrac{n(n-1)}2$ 组数对, 又因为有这句话:虽然没什么影响 每个数不同,那么一对数就有 $\dfrac12$ 的几率是逆序对, 所以期望逆 阅读全文
posted @ 2021-12-09 11:31 Jijidawang 阅读(16) 评论(0) 推荐(0)
摘要:水思维题。 大意 有一个矩阵 $a$,$a_{ij}=i+j$。 两个操作,一个删一行,一个删一列。 删完之后剩下的行 / 列不会向上 / 左补齐。 每次操作后输出所有删掉的 $a_{ij}$ 的和。 思路 这种题一看就可以用各种神奇的数据结构来做, 然而我不会它是道橙题,没有必要。 我们分别分析操 阅读全文
posted @ 2021-12-07 19:21 Jijidawang 阅读(9) 评论(0) 推荐(0)
摘要:可以想到一个结论:(不会证) 在原字符串中的相同字符,经过操作后相对位置不变。 思路 我们可以给 'a'-'z' 每个字符开个数组, 它们各自在目标字符串中的出现位置存到一个“桶”里。 然后再把这个“桶”对应到原字符串里,就会得到一个数组。 比如说,aabcba 这个字符串,它的目标字符串就是 ab 阅读全文
posted @ 2021-10-20 16:54 Jijidawang 阅读(14) 评论(0) 推荐(0)
摘要:题意 一个数列,每次操作把一个位置改成 1, 每次操作后,求数列中有多少段连续的 1。 思路 分类讨论,考虑每次操作的位置的左右两边的数(只是两个数): 左右两边的数都是 0:...0 1 0... 这个位置单独构成一段,答案加一。 左右两边的数都是 1:...01...1 1 1...10... 阅读全文
posted @ 2021-10-18 20:44 Jijidawang 阅读(23) 评论(0) 推荐(0)
摘要:较水的贪心+模拟,而且没感觉有多少细节啊。 贪心策略 尽量让画家到达一个端点,然后依次画到另一边。 这样就可以保证移动距离是 $min(k-1,n-k)+|n|$。 我们知道,$|n|$ 的距离是无法避免的,而且是画完的最优方案。 那么为了达成这个方案,就要移动到更近的端点。 这样就可以保证方案是最 阅读全文
posted @ 2021-08-16 07:32 Jijidawang 阅读(13) 评论(0) 推荐(0)
摘要:这就是个贪心。 贪心策略 因为两个操作都和第 2 堆有关,所以要让第 2 堆的尽量少拿。 操作 2 需要 1 个第二堆的,而操作 1 需要两个。 所以先用操作 2,不能拿了再用操作 1。 代码实现 注意多组数据每次 ans 要重置。 #include <iostream> using namespa 阅读全文
posted @ 2021-08-12 07:57 Jijidawang 阅读(12) 评论(0) 推荐(0)
摘要:y1s1,这题评红感觉低了。 没思路?提醒三个字:前缀和! 还是没思路?再提醒三个字:倒着推! 到现在还没思路?往下看吧。 思路 这道题采用(类似)前缀和的方法优化。 设 $s[i]$ 为 $[i,n]$ 区间内有几个不同数。 现在只需要推出 $s$, 处理就可以 $O(1)$ 了。 这里不能正着推 阅读全文
posted @ 2021-08-10 21:48 Jijidawang 阅读(14) 评论(0) 推荐(0)
摘要:FBI Warning 此题是一道思维题,请不要"对着题解调试程序"(大雾 前置芝士 一维前缀和(就够了) 最大子段和(P1115) 二维数组(能做到蓝题的应该都会吧) 思路 注意,这题的 $n$ 和 $m$ 是和其他题反过来的! 这题明显是一个卡了我两天的最大子矩阵和板子题。 有同学就要问了:那为 阅读全文
posted @ 2021-07-31 19:58 Jijidawang 阅读(8) 评论(0) 推荐(0)
摘要:好家伙,这数据加强就改个 long long 就行了。 前置芝士 to_string(int n):把 n 转成 string。 reverse(iterator a, iterator b):将 a 到 b 的区间反转。 pow(double a, double b):求 $a^b$ 思路 枚举进 阅读全文
posted @ 2021-07-21 10:37 Jijidawang 阅读(55) 评论(0) 推荐(0)
摘要:前置芝士 to_string(int n):将 n 转换为 string stoi(string s):将 s 转换为 int reverse(iterator a, iterator b):反转 a 到 b 之间的区间。 思路 暴力模拟,枚举 $m$ 到 $n$ 的每一个数。 依次判断区间内的数, 阅读全文
posted @ 2021-07-21 09:51 Jijidawang 阅读(69) 评论(0) 推荐(0)
摘要:这题和B2097 最长平台异曲同工 思路 从第二位开始枚举字符串,判断能否和前一位借上。 为什么不从第一位开始呢?因为第一位没有前一位。 如果能接上,记录当前的"平台"的长度。 否则就输出当前的答案,重置当前的字符和长度,接着往下找。 注意最后的"平台"的后面没有能和这个平台接不上的字符,所以要补一 阅读全文
posted @ 2021-07-19 14:16 Jijidawang 阅读(32) 评论(0) 推荐(0)
摘要:思路 这题要求初始集合在操作之后 与输入集合相同。 步骤最少。 那不操作,集合不变,与初始集合相同。 而且一步也没有,就是步骤最少了。 代码 int main(){} 阅读全文
posted @ 2021-07-19 09:16 Jijidawang 阅读(36) 评论(4) 推荐(2)
摘要:前置芝士 isupper(char c):判断 $c$ 是否大写字母。 islower(char c):判断 $c$ 是否小写字母。 toupper(char c):返回 $c$ 的大写形式。 tolower(char c):返回 $c$ 的小写形式。 上面四个函数都在 <cctype> 中 rev 阅读全文
posted @ 2021-07-19 08:33 Jijidawang 阅读(238) 评论(0) 推荐(0)
摘要:前置芝士 round(double x) :将 $x$ 四舍五入成整数。 思路 建一个新矩阵用来存放答案,枚举一遍原矩阵。 如果枚举到的点在边上,就直接把值赋给新矩阵。 否则就取原矩阵的点的上下左右中的平均值。 因为按顺序处理新矩阵时,下方和右方都是0, 所以不能用新矩阵的平均值。 代码 #incl 阅读全文
posted @ 2021-07-19 07:33 Jijidawang 阅读(26) 评论(0) 推荐(0)
摘要:思路 观察样例,注意每一行和每一列的关系。 可以看出,第 i 行与第 i 列是完全一致的。 所以,我们只需要调换每一行与同序数的列即可。 换句话说,把行和列的下标换一下。 代码 #include <iostream> using namespace std; int a[101][101], at[ 阅读全文
posted @ 2021-07-15 20:16 Jijidawang 阅读(43) 评论(0) 推荐(0)
摘要:思路 用二维数组输入,保存 $A,B$。 接着,枚举所有 $c[i][j]$,根据公式求值。 可以看出,公式中变化的下标是从 $0$ 到 $m$ 的。 所以可以从 $0$ 到 $m$ 枚举这个下标。 注意每次枚举的边界。 代码 #include <iostream> #include <cstdio 阅读全文
posted @ 2021-07-15 19:50 Jijidawang 阅读(40) 评论(0) 推荐(0)
摘要:思路 观察下图: 红色箭头代表枚举顺序。 我们4次枚举 $x,y$,依次判断 $x,y$ 是否满足图中的四个条件。 注意左下-右上的箭头对于下标是逆序的,枚举时要注意。 代码 #include <iostream> #include <algorithm> using namespace std; 阅读全文
posted @ 2021-07-14 19:31 Jijidawang 阅读(43) 评论(0) 推荐(0)
摘要:思路 枚举每个位置。 如果能和前面接上(和前一项相等)就累计长度,更新最大值。 否则把长度重置成1,继续枚举。 代码 #include <iostream> #include <algorithm> using namespace std; int n, k, t = 1, s, a[101]; i 阅读全文
posted @ 2021-07-14 18:56 Jijidawang 阅读(45) 评论(0) 推荐(0)
摘要:思路 定义数组 $cnt,cnt[i]$ 表示 i 的出现次数。 枚举一遍原数组,统计每个数出现的次数。 然后从 0 到 fmax 遍历 cnt,输出从 0 到 fmax 每个数的出现次数。 代码 #include <iostream> #include <algorithm> using name 阅读全文
posted @ 2021-07-14 18:43 Jijidawang 阅读(53) 评论(0) 推荐(0)
摘要:思路 排一遍序,找出最大值和最小值,累加剩下的值。 平均值即为累加值$/n-2$。 再用平均值依次减所有有效值,找到差的绝对值的最大值。 代码 #include <iostream> #include <algorithm> #include <cmath> #include <cstdio> us 阅读全文
posted @ 2021-07-14 18:35 Jijidawang 阅读(143) 评论(0) 推荐(0)

上一页 1 ··· 5 6 7 8 9 10 下一页