
真题
每天都要吃肉肉(●'◡'●)
绝不妄自菲薄
展开
-
【2012】计算最大叶子间距
问题描述:二叉树问题。比如节点是ABCDE编号是01234,给出每个左右子树的编号。求最大叶子间距。样例输入:输入1(如下左图):31 2-1 -1-1 -1输出1:2输入2(如下右图):61 -12 34 -1-1 5-1 -1-1 -1输出2:4#include<iostream>using namespace std;const int maxn = 11000;struct node { int left;..原创 2022-03-13 13:10:17 · 1627 阅读 · 0 评论 -
【2011】求三个字符串的最大子串
问题描述:输入3个子串, 输出这3个子串的最大公共子串样例输入:abcd acb abcab#include<cstdio>#include<iostream>#include<map>#include<vector>#include<cstring>#include<string>#include<algorithm>using namespace std;const int ma.原创 2022-03-13 12:00:53 · 243 阅读 · 0 评论 -
【2011】中序后序求层序
输入树的后序和中序排列,输出树的层次遍历Sample Input:72 3 1 5 7 6 41 2 3 4 5 6 7Sample Output:4 1 6 3 5 7 2#include<iostream>#include<queue>using namespace std;const int maxn = 110;int post[maxn], in[maxn];struct node { int data; struct node原创 2022-03-13 11:44:21 · 194 阅读 · 0 评论 -
【2012】字符串的重复输出
题目描述:给一个字符串比如ABC 再给一个整数比如3.输出AAABBBCCC就行了#include <string>#include <iostream>#include <cstdio>using namespace std; int main(){ string str; getline(cin, str); int n; cin >> n; for(int i = 0; i < str.原创 2022-03-12 11:25:57 · 1711 阅读 · 0 评论 -
【2012】堆排序模板
#include<iostream>using namespace std;const int maxn = 110;int a[maxn] = {};int n;void downadjust(int low, int high) { int i = low; int j = i * 2; while (j <= high) { if (j + 1 <= high && a[j + 1] > a[j]) j = j + 1; i.原创 2022-03-12 11:10:30 · 934 阅读 · 0 评论 -
【2013】四个小正方形放入大正方形
问题描述:Mr. B, Mr. G, Mr. M and their coach Professor S are planning their way for the ACM-ICPC World Finals. Each of the four has a square-shaped suitcase with side length Ai (1<=i<=4) respectively. They want to pack their suitcases into a large squa.原创 2022-03-12 09:04:16 · 673 阅读 · 0 评论 -
【2015】优先队列的实现(没有思路。。)
题目描述ADD N P:往队列里加入id为N的优先级为P的任务NEXT:输出下一个最高优先级的任务的id,如果优先级相同输出id小的任务,若队列中没有任务输出-1REMOVE N:移除id为N的任务COUNT:输出队列中的任务数量思路用结构体数组充当优先级队列,记录队首和队尾的位置。ADD()先将输入的结构体加入数组中,即挂在队尾。再按优先级大小排序,优先级大的放在队头,若优先级相等,按ID大小排序,ID小得结构体靠近队头。NEXT()输入队头结构体的ID。#inc..原创 2022-03-11 22:25:44 · 167 阅读 · 0 评论 -
【2013】字符串匹配
问题描述:对于主串M和模式串P,找到P在M中出现的所有子串的第一个字符在P中的位置。P中第一个字符所在的位置为0。首行的数字表示有多少组字符串。样例输入:输入:2ababababaababaaaaaa输出:0 2 40 1思路:从头在m中匹配p,找到匹配的第一个字符串pos,继续从pos+1开始下一次匹配string知识点:str.find(str1), 当str1是str的子串时,返回其在str中第一次出现的位置;如果不是,返回string::.原创 2022-03-11 22:18:44 · 220 阅读 · 0 评论 -
【2014】汉诺塔问题(没思路。。)
问题描述:Hanoi 塔问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64 个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。请编写程序,把A 柱上的n 个金片,搬动到C 柱(中间可以使用B 柱),使得搬动的次数最少。输入金片的个数n(1<=n<=64),输出总搬动次数,以及最后100 次搬动。如果搬动次.原创 2022-03-11 20:27:36 · 126 阅读 · 0 评论 -
【2014】二叉树的遍历
问题描述:输入一棵二叉树,输出树的前、中、后序遍历结果。输入一个整数N(N<= 10000),表示树中有N个结点(编号0~N-1)。接下来N行,依次为结点0~结点N-1的左右孩子情况。每行3个整数,F,L,R。L,R为F的左右孩子。L,R如果为-1表示该位置上没有孩子。分三行分别输出树的前中后序遍历。同一行中的数字,用一个空格间隔。输入:50 3 11 2 -12 -1 43 -1 -14 -1 -1输出:0 3 1 2 43 0 2 4 13 4 2.原创 2022-03-11 18:45:56 · 1193 阅读 · 0 评论 -
【2015工研】计算abc
数值类型一定要声明为double型的,否则上面的样例会输出YES#include<iostream>using namespace std;int main() { double a, b, c; cin >> a >> b >> c; if (a + b == c || a - b == c || b - a == c || a * b == c || a / b == c || b / a == c) cout << ...原创 2022-03-10 21:45:56 · 110 阅读 · 0 评论 -
【2015工研】长方形中的最大正方形
#include<iostream>#include<algorithm>using namespace std;int main() { int x, y; int ans = 0; cin >> x >> y; while (x != y) { ans++; if (x > y) swap(x, y); y -= x; } ans++; cout << ans; system("pause")...原创 2022-03-10 21:01:30 · 222 阅读 · 0 评论 -
【2018工研】求线段交点
求线段交点,输入两组线段端点(整型),求其交点,不相交和无穷交点输出一句话就行,输出交点带小数的。输入: 0 0 5 50 2 2 0输出:1 1#include<iostream>using namespace std;int main() { int x0, y0, x1, y1; int x2, y2, x3, y3; cin >> x0 >> y0 >> x1 >> y1; cin >> x.原创 2022-03-09 22:15:13 · 174 阅读 · 0 评论 -
【2016】字符串的哈夫曼编码长度(优先队列)(没思路)
优先队列priority_queue知识点总结:只能用top()访问元素,常用函数有top/push/pop/empty/size 优先级设置思路:字符出现的频率则为其权值 哈夫曼树的编码长度等于各个叶节点权值与路径长度乘积之和,同时这个值等于非叶节点之和#include<iostream>#include<functional> //支持greater#include<string>#include<queue>#incl..原创 2022-03-08 21:07:34 · 269 阅读 · 0 评论 -
【2016】后缀表达式求值(栈)(简单)
#include<iostream>#include<stack>#include<string>using namespace std;int main() { string str; stack<int> s; cin >> str; for (int i = 0; i < str.length(); i++) { if (str[i] >= '0'&&str[i] <= '9'...原创 2022-03-08 18:07:42 · 114 阅读 · 0 评论 -
【2017】图的最小生成树(模板题)
题目:一个无向图,顶点为N个,其中M条边已给定,求使得整个图连通,且选出的边权值和最小。输入4 41 2 21 4 12 3 33 4 4输出6第一行的两个数据分别为N顶点个数和边M的个数;下面的M行为每条边的数据,起始点和终点,还有每条边的权值。#include<iostream>#include<algorithm>using namespace std;const int maxn = 10010,INF=99999999;in..原创 2022-03-08 17:03:26 · 167 阅读 · 0 评论 -
【2017】ISBN编码(字符串处理)(水题)
题目:给定一个9位数字的ISBN,求其校验位。ISBN格式为2-02-033598,校验位的计算方法如下:从左到右依次将各位数字乘10,9,8,……,2,求出其和S,作模运算得M=S mod 11。若11-M在1和9之间,校验位即为该数字;若11-M等于10,校验位为X;11-M等于11,校验位为0。输出添加校验位的ISBN,如2-02-033598-0。输入:2-02-033598输出2-02-033598-0#include<iostream>#include&原创 2022-03-08 13:38:42 · 208 阅读 · 0 评论 -
【2017】求中位数(水题)
题目:给定一个整数序列,求中位数。如果序列个数为奇数,中位数为升序的中间位置,如果是偶数,这位升序的中间两个数的平均值。输入:52 1 4 3 5输出:3输入:41 4 3 2输出:2.5double型:%.lf表示四舍五入到个位%.2lf表示四舍五入到小数点后两位#include<iostream>#include<algorithm>using namespace std;const int maxn = 1..原创 2022-03-08 12:33:18 · 174 阅读 · 0 评论 -
【2018】骨牌
题目:有2*n 的地板,用1*2和 2*1 的骨牌进行铺地板。问共有多少种情况。结果对 999983 取余,1<=n<=10000 。输入: 6 输出: 13#include<iostream>using namespace std;const int maxn = 11000;int main() { int dp[maxn] = {}; int n; cin >> n; dp[1] = 1; dp[2] = 2;...原创 2022-03-08 12:08:22 · 187 阅读 · 0 评论 -
【2018】求解一元一次方程(字符串处理)(没思路。。)
题目:给定一个字符串,代表一个 一元一次 方程。如果有解求解,输出格式“x=数字” ,如果解的个数无穷,输出 “infinite solutions”,如果没有解输出“no solution”。字符串长度不超过 256 。输入:10x-2x-8=4x+7+x输出:x=5#include<iostream>#include<string>using namespace std;int main() { string s; cin >> s;..原创 2022-03-08 11:38:35 · 484 阅读 · 0 评论 -
【2018】求众数(map)
题目:众数就是一个序列中出现次数最多的数字。 如果不唯一,则输出小的那个值。 给定第一个代表有几个数字。1<=n<=10^5 每个数字在 int 范围内 输入,(第一个代表有几个数字)810 3 8 8 3 2 2 2输出 2题很简单,但要注意用10^5做数组下标,开不了那么大,故用mapmap要点:如果是字符串到整型的映射,必须使用string而不是char数组 访问方式:(1)直接用下标访问:mp['s'];(2)迭代器访问:键it->fi...原创 2022-03-07 21:00:13 · 417 阅读 · 0 评论 -
【2018工研】求公约数之和
题目:输入一个数n,输出前n个数的约数的和。(印象中有1s的时间限制,大数据集可能超时,比如100000000)。输入:7输出:41约数:整数A除以整数B(B≠0) 除得的商正好是整数而没有余数,我们就说A能被B整除,或B能整除A。A称为B的倍数,B称为A的约数#include<iostream>using namespace std;int gcd(int a, int b) { if (b == 0) return a; else return原创 2022-03-07 20:10:52 · 1870 阅读 · 0 评论 -
【2018工研】求交集并集(set的用法)
题目第一题,输入两个集合,分别求其交集和并集中元素的个数,每个集合中可能存在相同的元素,而最终的交集和并集中应该不存在。输入:4 53 4 7 34 6 3 2 6输出:2 5这道题看着简单却花了很长时间,因为除了集合之间有重复,集合内部也有重复,我的处理方法是设立A,B两个数组,A控制集合之间的重复元素,B控制第二个集合内部的重复元素#include<iostream>using namespace std;const int maxn = 1原创 2022-03-07 19:27:36 · 292 阅读 · 0 评论 -
【2019工研/模拟】九键输入法(巧用数组)
1、题目:模拟老式手机输入,九宫格布局如下:题目输入为数字或者’-’,其中‘-’代表手机输入时等待的时间间隔,数字表示点击某个按键的次数。比如点击两次 2,则输出为 B,四次 2,则输出为 A。例:输入:255输出:AK输入(等待间隔‘-’可以无限长,也可以没有):2222------55输出:AK2、思路...原创 2022-02-28 16:11:46 · 2661 阅读 · 0 评论 -
【2019/树】二叉树形态总数(卡特兰数)
1.题目题目描述:给定二叉树的节点总数 n,输出二叉树形态总数,n<= 1000输入:3输出:52.思路1、卡特兰数2、由于n=1000时,计算C会比较大,所以不能使用int型,而要使用long long型3、代码#include<iostream>using namespace std;long long ktl(int n) { long long fenzi = 1, fenmu = 1; for (int i = 2 * n; i &g.原创 2022-02-28 12:56:30 · 464 阅读 · 0 评论 -
【2019/模拟】日期处理(巧用数组)
1、题目有两个日期,求两个日期之间的天数输入:2013010120130105输出:42、代码#include<iostream>#include<cstdio>using namespace std;int month[13][2] = { {0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31} };原创 2022-02-28 12:18:26 · 90 阅读 · 0 评论 -
【2019工研/模拟】服务器维护(水题)
题目:假设有编号从 1-N 的服务器,首先给出服务器个数,再给出一组服务器状态。然后给出一次数字,表示修改状态次数,接下来输入为 i,j,x,意思是使用 x 修改从 i 到 j 的服务器。最后输出所有服务器状态例:输入:51 2 2 3 121 2 52 5 -1输出:6 6 1 2 0题意:输入一个数n,随后输入n个数,代表n个状态输入一个m随后m次操作每次输入3个数字i,j,x;将编号i-j的数加上x利用数组存储数字,for循环实现操作代码:#incl.原创 2022-02-28 13:51:29 · 110 阅读 · 0 评论