随笔分类 - 算法刷题
摘要:越发感觉到自己的菜,大体的思路会写,但总是有一些卡住的地方,归根结底还是题做的少了。 #include<iostream> #include<cstring> using namespace std; const int N = 1e5+10; int e[N],ne[N],idx,h[N]; in
阅读全文
摘要:根据某大佬的做法写的,记录一下自己的学习过程 #include<iostream> using namespace std; const int N = 1e4+10; int a,b; int p[N]; int res[N]; bool isPrime(int x){ if(x < 2) ret
阅读全文
摘要:题目描述 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。 给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。 输入格式 输入在第一行中
阅读全文
摘要:这道题有需要将结果存储在一个单独的数组res里,再在每次题目输入n时从res数组中取出结果,否则会超时。 #include<iostream> using namespace std; const int N = 30; int n; bool dg[N],udg[N]; bool col[N];
阅读全文
摘要:#include<iostream> using namespace std; const int N = 1e4+10; int p[N]; int t; int find(int x){ if(p[x] != x) p[x] = find(p[x]); return p[x]; } int ma
阅读全文
摘要:原题链接:打印沙漏 思路 我们可以知道打印的沙漏是对称的,假如输入19个*,实际只会用17个,有两个被舍弃了。 那么我们可以发现一半行数的数量加一起就是19/2个,又可以发现一个规律: 1 = 1 1+3 = 1+3+5 = 所谓行数的一半恰好就是也
阅读全文
摘要:https://pintia.cn/problem-sets/994805260223102976/problems/994805300404535296 #include<iostream> #include <map> using namespace std; const int N = 101
阅读全文
摘要:题目描述 你玩过“拉灯”游戏吗?25盏灯排成一个5x5的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。 我们用数字“1”表示一盏开着的灯,用数字“0”表示关着的灯。下面这种
阅读全文
摘要:题目描述 把 1~n 这 n 个整数排成一行后随机打乱顺序,输出所有可能的次序。 输入格式 一个整数n。 输出格式 按照从小到大的顺序输出所有方案,每行1个。 首先,同一行相邻两个数用一个空格隔开。 其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。 数据范围 1≤n≤9 输入样例
阅读全文
摘要:题目描述 从 1~n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。 输入格式 两个整数 n,m ,在同一行用空格隔开。 输出格式 按照从小到大的顺序输出所有方案,每行1个。 首先,同一行内的数升序排列,相邻两个数用一个空格隔开。 其次,对于两个不同的行,对应下标的数一一比较,字典序较小
阅读全文
摘要:题目描述 从 1~n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。 输入格式 输入一个整数n。 输出格式 每行输出一种方案。 同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开。 对于没有选任何数的方案,输出空行。 本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。 数
阅读全文
摘要:问题描述 求 a 的 b 次方对 p 取模的值。 输入格式 三个整数 a,b,p ,在同一行用空格隔开。 输出格式 输出一个整数,表示a^b mod p的值。 数据范围 0≤a,b,p≤109 数据保证 p≠0 输入样例: 3 2 7 输出样例: 2 快速幂思想 如果我们想求37是多少,用最暴力的做
阅读全文
摘要:原题链接:石子合并 题目描述 设有N堆石子排成一排,其编号为1,2,3,…,N。 每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。 每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也
阅读全文
摘要:原题链接:Common Subsequence 题目描述 给出两个字符串,求出这样一个最长的公共子序列的长度:子序列中的每个字符都能在两个原串中找到,而且每个字符的先后顺序和原串中的先后顺序一致。 样例输入 abcfbc abfcab programming contest abcd mnp 样例输
阅读全文
摘要:最近开始刷算法题,发现迷宫这道网上很多代码对于我这种新人都很难看懂,就把自己想了许久的解法传到博客了,有心情会 补上想法。 后注:这个方法用的不是特别好,后续BFS有更简单的写法,不过也可以对初学者理解提供一些帮助 #include<iostream> #include<cstring> using
阅读全文