模拟
文章平均质量分 61
相关总结及OJ练习
Ypuyu
Ypuyu
展开
-
[H模拟] lc3257. 放三个车的价值之和最大 II(模拟+暴力枚举+双周赛137_1+双周赛137_2)
我也搞不懂,为什么当时会写一个 dfs 去做这个题目,不如直接 for for for 完事了,思路没有想好,想歪了又很难更正过来啊…这一套暴力枚举思想很直接,但实现上比较简洁,代码常数小,所以还是可以通过的。蛙神针对这个题目,做了复杂度分析。还是比较有参考价值的,可以看看。目前没看到什么好的题解,计算量计算正确的话,直接暴力枚举就行了。看看 蛙神 的题解和代码实现即可,这里直接 CV 过来吧。原创 2024-08-18 02:00:33 · 380 阅读 · 0 评论 -
[M模拟] lc3240. 最少翻转次数使二进制矩阵回文 II(分类讨论+遍历技巧+代码实现+双周赛136_3)
对于中心点来看,3*3 棋盘,【1,1】点不会被我们遍历到,那么如果要被 4 整除,【1,1】 这类点一定需要为 0,所以最终累计下【1,1】是否需要操作即可。对于 n/2、m/2 这个区域里面的点肯定有回文的 右、下、右下 这三个点。直观来看,要么都是 0,要么都是 1。如果 cnt 为 0,说明大家都是想等的,但是 one 却是奇数的话,说明我们需要将两个 1、1 变为 0、0,使其能被 4 整除。但是这样的话,我们是没有考虑对称轴 n/2 这一行,m/2 这一列的,根本遍历不到…原创 2024-08-04 05:00:02 · 853 阅读 · 0 评论 -
[模拟] aw3787. 整除(模拟+aw周赛010_1)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3787. 整除2. 题目解析模拟题。分情况讨论即可。两种方法都可以做,上取整也行,取余也行。时间复杂度:O(1)O(1)O(1)空间复杂度:O(1)O(1)O(1)取余#include <bits/stdc++.h>using namespace std;int main() { int T; cin >> T; while (T -- ) { int a, b;原创 2021-07-31 20:27:54 · 100 阅读 · 0 评论 -
[思维] aw3779. 相等的和(思维+构造+题意理解+aw周赛009_2)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3779. 相等的和2. 题目解析读题,理解题意。任意两序列,任减一个值,保证两序列其余总和一致。那么可以枚举每个序列中的每个元素被删减后,其剩余元素和是多少,用哈希表维护即可。 若剩余元素和相同,并且是两个不同序列的话,即找到一个答案,返回即可。本题关键还是思路,要想到枚举每个元素删减的结果,并用哈希表维护剩余的元素和。时间复杂度:O(n)O(n)O(n)空间复杂度:O(n)O(n)O(n)#include <bit原创 2021-07-26 23:27:49 · 82 阅读 · 0 评论 -
[模拟] aw3781. 乘车问题(模拟+细节处理+编程思维)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3781. 乘车问题2. 题目解析模拟题,方案是确定的,实现代码即可,也就是编程思维。贪心,dp,方案是多种的,需要算法。思路比较简单,一个班级需要装到同一个大巴里,需要的数量就是 x/m 上取整,剩余的座位数量下个班还能坐下的话,就继续坐就行了。故维护一个大巴数量和当前大巴空位有多少个即可,优先做空位,空位坐不下再重新分配大巴,更新空位值。时间复杂度:O(n)O(n)O(n)空间复杂度:O(1)O(1)O(1)二维数组写法:原创 2021-07-26 19:51:37 · 206 阅读 · 0 评论 -
[环图] aw3775. 数组补全(思维+构造+CF1283C)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3775. 数组补全推荐题解:方法一 的题解,排序填入再调整一个图,n 个点的出度、入度都是 1,那么该图一定是由若干环组成。有无自环看具体题意。2. 题目解析先不谈环图,来个简单做法。方法一: 降序填入,至多一个冲突,解决即可。统计未出现的所有数字,也就是代填数字。将所有数字从大到小排序,准备往空格位置填。由于我们是按数字的从大到小填,而数组空余位置的下标关系是从小到大的。所以只可能会有一个位置的 f[i]=i,针对这个位置,可原创 2021-07-22 18:22:40 · 195 阅读 · 0 评论 -
[构造] aw3764. 三元数异或(贪心+模拟)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3764. 三元数异或2. 题目解析贪心题目。构造出最大值最小的 a、b,0 的话就平分,2 的话先平分,如果当 a>b 的话,那就让已经大的 a 尽量小,将 1 分给 b,2 也直接分给 b。针对 1 的话第一次将 1 分给 a,那就认为 a>b 了。时间复杂度:O(n)O(n)O(n)空间复杂度:O(n)O(n)O(n)注意下,没有空格隔开的元素,就是 char 图,直接按行读入即可,char 数组自己分割。#in原创 2021-07-13 20:03:31 · 79 阅读 · 0 评论 -
[构造] aw3763. 数字矩阵(构造+模拟+思维)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3763. 数字矩阵相似:[构造] aw3762. 二进制矩阵(困难模拟+分类讨论+简化代码+思维)2. 题目解析构造题,不难。只能操作相邻数的符号,那么任意两个负数都可以通过他们的曼哈顿距离路径将这两个数操作符号变成整数,而路径上的其他点符号不改变。故奇数个负数的话,让绝对值最小的负数留下,偶数个负数的话,会全部操作成正数,有 0 存在的话,也会全部操作成正数,也可以将 0 看成负数,0 的绝对值一定最小,让它留下即可,不影响总和。原创 2021-07-12 20:37:57 · 149 阅读 · 0 评论 -
[计数] aw3759. 第k个字符串(枚举+思维+aw周赛007_2)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3759. 第k个字符串2. 题目解析计数问题。n 个字符,n-2 个 a,2 个 b,将 n 个中的两个字符变成 b,总的不同方案就是 Cn2C_n^2Cn2 没有问题。很显然,是有规律的计数问题。按照字典序枚举即可,先枚举第一个 b 所在位置,再枚举第二个 b 的所有情况,b 在倒数第一个位置,则另一个 b 有一种情况,b 在倒数第二个位置,则另一个 b 有两种情况…跳过前面的所有字典序,确定第一个 b 的位置,剩余了 k 个序列,原创 2021-07-10 21:48:50 · 97 阅读 · 0 评论 -
[构造] aw3762. 二进制矩阵(困难模拟+分类讨论+简化代码+思维)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3762. 二进制矩阵2. 题目解析这题真的是很 2 很 2。一开始我就想错了…一开始想的是从第一行开始做,一行一行往下处理,处理到最后一行存在些 0 怎么搞…就停下来了。现在想来最后一行就按照这个搞就行了。但又涉及到 n、m 奇偶问题,比较麻烦。首先需要发现:如果发现一个空是 1,我们可以通过三次操作在不改变其它点的情况下将该点变为 0。其实也就是这个点操作 3 次,其余 3 个点均操作两次,等价于没操作。故针对一个 1,一定能用原创 2021-07-09 23:18:06 · 238 阅读 · 1 评论 -
[模拟] aw3761. 唯一最小数(日期问题+模板题)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3607. 打印日期进阶:3573. 日期累加进阶:[模拟] aw3489. 星期几(模拟+日期问题+蔡勒公式+模板题)2. 题目解析模拟题,有关于日期、时间、金钱等设计到单位进制的,模拟都可以写,但很难写出结构精巧的代码,一不小心就会写很多的 if-else,且容易遗漏边界情况。日期问题模板函数:月份对应天数:const int months[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30原创 2021-07-09 11:11:53 · 120 阅读 · 0 评论 -
[进位制] aw3373. 进制转换(进制转换+进位制+模板题)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3373. 进制转换链接:3374. 进制转换2相关:[高精度+模板] 高精度整数加、减、乘、除模板2. 题目解析主要解决进制转换的几个问题,属于模板题,隶属于模拟大类,并练习高精度+短除法代码实现。aaa 进制转 10 进制:通用秦九韶算法即可,秦九韶算法与短除法互为逆运算。10 进制转 aaa 进制:高精度除法,短除法。例题:3373. 进制转换aaa 进制转 bbb 进制:直接进行进制转换,中间不经过 1原创 2021-07-05 23:11:34 · 2344 阅读 · 0 评论 -
[构造] aw3732. 矩阵复原(模拟+构造)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3732. 矩阵复原2. 题目解析构造题目,思维具有跳跃性…又没看清题目,每个数只会出现一次,每行、列的也只会出现一次…那么针对列而言,可以通过输入中列的首元素确定出其在行中出现的位置,即求得在输入行中的行列所在位置,因为每个数字都是唯一的,所有能够查找出来。且只需要知道列的位置关系即可,假设在第 k 列,那么该列元素就是答案的第 k 列。比较抽象,看 y总笔记吧:有一说一,还是得好好读题。本题比较饶,给出的单行、单列中的元素都是原创 2021-07-01 16:47:15 · 103 阅读 · 0 评论 -
[构造] aw3731. 序列凑零(模拟+构造)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3731. 序列凑零2. 题目解析构造题目。数组长度是偶数,那么意味着一定可以两两分组。显然,相邻两项简单组合有:a1*(-a2)+a2*(a1)=0 即 b1=(-a2)、b2=a1 即可满足题目要求。CF 的题前面思维题、脑筋急转弯居多。时间复杂度:O(n)O(n)O(n)空间复杂度:O(n)O(n)O(n)#include <bits/stdc++.h>using namespace std;const原创 2021-06-30 22:52:36 · 80 阅读 · 0 评论 -
[构造] aw3730. 寻找序列(模拟+构造)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3730. 寻找序列2. 题目解析构造题目。三个长度相同数组,在相同下标下,这三个数组元素各不相同。要求使用这三个数组中的元素构造出一个新数组,使得新数组相邻两数不同,且首尾元素不同。很明显可以直接构造,首先第一个元素在三个数组中首位元素任意选一个,然后后面直到倒数第二个都只需要和前一个保持不同即可。最后一个需要和倒数第二个且和第一个元素保持不同。实际上,本题如果不加首尾元素不同这个要求的话,只需要两个数组就够了。时间复杂度:O(原创 2021-06-28 23:41:34 · 84 阅读 · 0 评论 -
[进位制] aw3727. 乘方相加(进位制+模拟+aw周赛005_2)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3727. 乘方相加2. 题目解析进位制。在第 i 次操作时,可以给任意一个元素加上 kik^iki,这相当于将该元素在 k 进制表示下的第 i 位加上 1。起初数组元素都是 0,每次操作都会加上 kik^iki,那么针对 k 进制表示下,所有数字的每一个数位的和至多是 1,可以是 0,但是不能大于 1。所以可以将输入元素变为 k 进制,统计每位数位之和,如果有一个数位大于 1,那么则无法通过该操作变成。注意用 long long。原创 2021-06-27 21:06:50 · 118 阅读 · 0 评论 -
[递归] aw3695. 扩充序列(递归+模拟+找规律+aw周赛004_2)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3695. 扩充序列相关链接:大佬题解:本题有找规律解法,其实就是找 k/2 多少次变为奇数。大佬题解,一语道破2. 题目解析忘记开 long long,WA 三次。一图胜千言,递归即可:时间复杂度:O(n)O(n)O(n)空间复杂度:O(1)O(1)O(1)迭代写法:#include <bits/stdc++.h>using namespace std;typedef long long LL;原创 2021-06-19 22:31:33 · 100 阅读 · 0 评论 -
[贪心] aw3686. 移动序列(贪心+模拟+思维)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3686. 移动序列2. 题目解析贪心。顺序统计相邻两个 1 之间的 0 的个数即可。时间复杂度:O(n)O(n)O(n)空间复杂度:O(1)O(1)O(1)简单直接的方法:#include <bits/stdc++.h>using namespace std;const int N = 55;int n;int a[N];int main() { int T; cin >&g原创 2021-06-16 19:59:02 · 75 阅读 · 0 评论 -
[构造] aw3679. 素数矩阵(构造+思维)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3679. 素数矩阵2. 题目解析构造性的一道题,方案很多。下面是我的解法和思路:首先这是个方阵,且要求行、列和均是素数,所以可以考虑将行列和搞成一样的数字,方便判断。可以将整个方阵先初始化为全 1 的方阵:如果 n 是素数,那么行列和都是 n,直接打印即可。如果 n 是合数,那么我们只需要将主对角线上的数统一改变一下就行了。行列和是素数,假定为 y,则 y-(n-1) 就是主对角线上的数,且需要保证该数是合数即可。更加精妙原创 2021-06-16 12:59:18 · 314 阅读 · 0 评论 -
[构造] aw3672. 数组重排(构造+推公式+思维)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3672. 数组重排2. 题目解析有公式的题目,先推公式,对公式做变型。题目初始要求 i-a[i] != j-a[j],等价于 i-j != a[i]-a[j],由于 i < j,则 i-j<0,当 a[i]-a[j]>=0 时,式子永远成立。显然,应该从大到小排序即可。时间复杂度:O(nlogn)O(nlogn)O(nlogn)空间复杂度:O(n)O(n)O(n)#include <bits/stdc++原创 2021-06-15 11:31:57 · 78 阅读 · 0 评论 -
[模拟] aw3664. 数组补全(模拟+贪心+中位数+思维)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3664. 数组补全2. 题目解析有点考思维,模拟题。思路:合法填充后要求数组中位数为 y,那就意味着小于 y 的数的个数有 n2\frac n 22n 个,大于等于 y 个数的个数有 n2+1\frac {n} 2 + 12n+1 个。若使总和最小,则填充进来的数应该尽可能小。输入时统计小于 y 的个数和大于等于 y 的个数。若小于 y 的个数已经大于了 n/2 则说明中位数一定不满足要求,则输出 -1。否则应该将小于 y原创 2021-06-11 20:54:43 · 92 阅读 · 0 评论 -
[模拟] aw3663. 打印数字菱形(模拟+图形打印+曼哈顿距离+找规律)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3663. 打印数字菱形2. 题目解析找规律的一道题。反正我是按模拟过的,但是一定是可以找规律的。将整个图形放到二维矩阵里面,根据所有位置到中心位置的曼哈顿距离做分类:所有和中心点的曼哈顿距离小于等于 n 的点,都是需要填数的。且所填数值为 n 减去曼哈顿距离。所有和中心点的曼哈顿距离大于 n 的点,应该输出空格。时间复杂度:O(n2)O(n^2)O(n2)空间复杂度:O(1)O(1)O(1)优雅的找规律:// 直接按题原创 2021-06-10 22:49:21 · 241 阅读 · 0 评论 -
[模拟] aw3577. 选择数字(模拟+思维+aw周赛001_1)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3577. 选择数字2. 题目解析签到题。被签到题秀。原来只需要返回一组正确答案即可…那么两个最大值之和一定不在两个数组中。时间复杂度:O(n)O(n)O(n)空间复杂度:O(1)O(1)O(1)// 思维#include <bits/stdc++.h>using namespace std;int n, m;int main() { int a = -1, b = -1; scanf(原创 2021-05-29 22:02:02 · 104 阅读 · 0 评论 -
[模拟] aw3554. 二进制(模拟+进制转换+进位制)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3554. 二进制2. 题目解析显然不需要高精度。直接开 long long 存储即可。+3 操作最多会有 33 位的数。特判一下最高位的 33 位是否为 0,为 0 不用打印,为 1 打印输出即可。时间复杂度:O(n)O(n)O(n)空间复杂度:O(1)O(1)O(1)#include <iostream>#include <cstring>#include <algorithm>#incl原创 2021-05-24 19:54:13 · 136 阅读 · 0 评论 -
[模拟] aw3302. 表达式求值(中缀表达式+中缀转后缀+栈+思维+好题+模板题)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3302. 表达式求值相关题目:lc150. 逆波兰表达式求值-----即后缀表达式求值lc1597. 根据中缀表达式构造二叉表达式树 (但是这道是会员题)2. 题目解析本题是中缀表达式求值问题,中缀表达式就是我们自己所书写的表达式。后缀表达式也称逆波兰表达式,也是计算机所识别的表达式。我们可以将表达式转化为初始的表达式树,这颗表达式树的中序遍历即为中缀表达式,表达式的后序遍历即为后序表达式。表达式树的内部节点都是运算符,叶原创 2021-05-16 12:04:09 · 156 阅读 · 0 评论 -
[模拟] aw3489. 星期几(模拟+日期问题+蔡勒公式+模板题)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3489. 星期几相关题目:[图+最短路+模板] 五大最短路常用模板 重点!蔡勒公式–百度百科基姆拉尔森计算公式–百度百科2. 题目解析计算当前日期到 1 年 1 月 1 日之间的天数,模 7 即可。也就是基准值换算。时间复杂度,3000 年,365 天,100 组数据,大于是 1 亿的计算量,但是常数比较小,可以过。其中,判断平年、闰年函数很常用,得到某年某月的天数、每月的天数数组很常用!可以将两个日期之间间隔多少天计算出来原创 2021-05-15 21:09:23 · 114 阅读 · 0 评论 -
[模拟] 数列重组(牛客+库函数+模拟+暴力dfs)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:数列重组2. 题目解析暴力枚举全排列,再暴力判断三段是否有序即可。全排列:有序数组下,采用 next_permutation(q.begin(), q.end())。判断有序:is_sorted(a.begin(), a.end(), cmp) 其默认为升序排序,支持自定义排序。常见简化代码的操作。枚举将数组分成三段,就枚举分界点即可,但是要注意,区间一定是左开右闭的,若是 [1,1) 其实里面是没有数的,is_sorted() 在原创 2021-04-16 11:21:42 · 165 阅读 · 0 评论 -
[M模拟] lc1823. 找出游戏的获胜者(模拟+约瑟夫环+周赛236_2)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:lc1823. 找出游戏的获胜者相关题目:[剑指-Offer] 62. 圆圈中最后剩下的数字(数学、环形链表、约瑟夫环、巧妙解法)2. 题目解析约瑟夫环问题。一般拿环形链表模拟可做,也是在数据结构一章中环形链表的经典应用,在竞赛中一时没想起来,直接数组暴力模拟也过了,数据范围太小了。但是写了一个很丑的代码,却好在 1a 了。数组模拟思路:一个大小为 n 的数组,用 0 1 标记该位置是否有效。总共循环 n - 1 次,每次循环遍历 k原创 2021-04-14 22:39:58 · 170 阅读 · 0 评论 -
[每日一题] 3. 排序子序列--编程题(贪心+模拟+思维)
1. 题目来源链接:排序子序列来源:牛客网2. 题目说明牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输...原创 2019-09-07 01:47:22 · 1135 阅读 · 2 评论 -
[模拟] 斐波那契(牛客+模拟+__int128模板)
题目描述链接:牛客网 斐波那契小明最近痴迷于斐波那契数列(1,1,2,3,5……),但是最近他又有了新的奇思妙想,就是对于斐波那契数列的相邻的两个数相乘取倒数然后将每一项进行相加,由于小明只喜欢思考不喜欢动手,所以现在他想让你帮他算下这样一个新的数列的前 13 项的和为多少?(结果用分数表示,且保留最简分数)输入描述:无输出描述:无备注:例如前三项:1/(1*1)+1/(1*2)+1/(2*3)=5/3分析与代码没啥好说的,Windows 直接计算器硬算应该也能出结果,或者开 LL原创 2021-04-11 22:39:56 · 224 阅读 · 0 评论 -
[E模拟] lcLCP33. 蓄水(贪心+模拟+面试经典+好题)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:LCP33. 蓄水2. 题目解析挺恶心的一道题,作为一道 Easy 卡了不知道多少队。大意了啊。思路:所有的水桶蓄水的次数都是一样的,升级水桶的次数不一样。显然应该先升级水桶再蓄水。故可以枚举所有水桶蓄水的次数,倒推得到对应水桶升级的次数。每次蓄水对应一个最小操作,枚举得到最小值。注意需要向上取整。时间复杂度:O(n2)O(n^2)O(n2)。空间复杂度:O(1)O(1)O(1)主要是枚举顺序的改变让人有原创 2021-04-11 08:57:53 · 156 阅读 · 0 评论 -
[哈希表+模板] 模拟散列表
文章目录0. 前言1. 拉链法(开散列)2. 开放寻址法0. 前言哈希表按照存储方式而言分为两种实现方法:开放寻址法(闭散列)拉链法(开散列)至于这两个的概念即定义可参考之前的博文:[C++ 系列] 82. 详解哈希结构解决哈希冲突及模拟实现闭散列、开散列其与离散化一样,都是将大值域小数量的数据进行映射的紧密存储,但是 离散化是一种特殊的哈希方式,它要求映射后数据保序。在算法题目中,一般是仅有添加和查找两种操作,并不需要在哈希表中执行删除操作。如果真的需要删除,都是开一个数组,在待删除点原创 2020-10-22 18:28:50 · 237 阅读 · 0 评论 -
[堆+模板] 模拟堆模板
文章目录0. 前言1. 并查集+最裸版本0. 前言该并查集模板支持的操作:将两个集合合并询问两个元素是否在一个集合当中并查集两个优化:路径压缩:当一路找到根节点,会将这条路径上所有点都直接指向根节点。优化效果十分明显,使并查集接近 O(1)O(1)O(1) 的时间复杂度。按秩合并:优化效果不明显,一般用不到,该模板并没有包含。常见问题:树根判断:p[x] = x求 x 的集合编号:while(p[x] != x) x = p[x];,如果父节点不为根节点,那么将 x 更新为上级原创 2020-10-22 11:59:39 · 365 阅读 · 0 评论