- 博客(50)
- 收藏
- 关注
原创 LYU2023.4.2周赛题解
由于sqrt函数求平方根在求大数的时候会有精度问题,可以用二分或者将函数求出的结果判断一下,才能获得正确答案。
2023-04-02 17:03:09 375 1
原创 堆排序--数组模拟
输入一个长度为nn的整数数列,从小到大输出前mm小的数。输入格式第一行包含整数nn和mm。第二行包含nn个整数,表示整数数列。输出格式共一行,包含mm个整数,表示整数数列中前mm小的数。数据范围1≤m≤n≤1051≤m≤n≤105,1≤数列中元素≤1091≤数列中元素≤109输入样例:5 34 5 1 3 2输出样例:1 2 3#include<iostream>using namespace std;...
2022-04-22 23:41:16 85
原创 天梯赛-- 敲笨钟
L1-3 敲笨钟 (20 分)微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。为了增加敲钟的趣味性,还会糟改几句古诗词。其糟改的方法为:去网上搜寻压“ong”韵的古诗词,把句尾的三个字换成“敲笨钟”。例如唐代诗人李贺有名句曰:“寻章摘句老雕虫,晓月当帘挂玉弓”,其中“虫”(chong)和“弓”(gong)都压了“ong”韵。于是这句诗就被糟改为“寻章摘句老雕虫,晓月当帘敲笨钟”。现在给你一大堆古诗词句,要求你写个程序自动将压“ong”韵的句子糟改成“敲笨钟”。输入格式:
2022-04-21 23:00:41 163
原创 天梯赛--完全二叉树的层序遍历
L2-3 完全二叉树的层序遍历 (25 分)一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为D的,有N个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前N个结点,这样的树就是完全二叉树。给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。输入格式:输入在第一行中给出正整数N(≤30),即树中结点个数。第二行给出后序遍历序列,为N个不超过 100 的正整数。同一行中所有数字都以空格分隔。输出格式:在一行中输出该树...
2022-04-21 14:05:38 198
原创 天梯赛--口罩发放
L2-2 口罩发放 (25 分)为了抗击来势汹汹的 COVID19 新型冠状病毒,全国各地均启动了各项措施控制疫情发展,其中一个重要的环节是口罩的发放。某市出于给市民发放口罩的需要,推出了一款小程序让市民填写信息,方便工作的开展。小程序收集了各种信息,包括市民的姓名、身份证、身体情况、提交时间等,但因为数据量太大,需要根据一定规则进行筛选和处理,请你编写程序,按照给定规则输出口罩的寄送名单。输入格式:输入第一行是两个正整数D和P(1≤D,P≤30),表示有D天的数据,市民两次获得口...
2022-04-21 13:52:04 269
原创 天梯赛--清点代码库
L2-3 清点代码库 (25 分)上图转自新浪微博:“阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍。请设计一个程序,能够将代码库中所有功能重复的代码找出。各位大佬有啥想法,我当时就懵了,然后就挂了。。。”这里我们把问题简化一下:首先假设两个功能模块如果接受同样的输入,总是给出同样的输出,则它们就是功能重复的;其次我们把每个模块的输出都简化为一个整数(在int范围内)。于是我们可以设计一系列输入,检查所有功能模块的对应输出,从而查出功能重复的代码。你的任务就..
2022-04-16 22:06:54 245
原创 天梯赛--城市间紧急救援
7-65 城市间紧急救援 (25 分)作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式:输入第一行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0 ~ (N−1);M是快速道路的条数;S是出发地的城市编号;
2022-04-15 01:01:55 158
原创 天梯赛--红色警报 (连通)
7-9 红色警报 (25 分)战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。输入格式:输入在第一行给出两个整数N(0<N≤500)和M(≤5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路条数。随后M行,每行给出一条通路所连接的两个城市的编号,其间以1个空格分隔...
2022-03-30 00:11:29 215
原创 天梯赛--列车调度
7-10 列车调度 (25 分)火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?输入格式:输入第一行给出一个整数N (2 ≤ N ≤105),下一行给出从1到N的整数序号的一个重排列。
2022-03-29 22:32:58 130
原创 7-68 搜索树判断(二叉搜索树的构建与遍历)
7-68 搜索树判断 (25 分)对于二叉搜索树,我们规定任一结点的左子树仅包含严格小于该结点的键值,而其右子树包含大于或等于该结点的键值。如果我们交换每个节点的左子树和右子树,得到的树叫做镜像二叉搜索树。现在我们给出一个整数键值序列,请编写程序判断该序列是否为某棵二叉搜索树或某镜像二叉搜索树的前序遍历序列,如果是,则输出对应二叉树的后序遍历序列。输入格式:输入的第一行包含一个正整数N(≤1000),第二行包含N个整数,为给出的整数键值序列,数字间以空格分隔。输出格式:输出的第一行首
2022-03-21 23:15:44 178
原创 7-125 病毒溯源(树的深搜)(记录路径)
7-125 病毒溯源 (25 分)病毒容易发生变异。某种病毒可以通过突变产生若干变异的毒株,而这些变异的病毒又可能被诱发突变产生第二代变异,如此继续不断变化。现给定一些病毒之间的变异关系,要求你找出其中最长的一条变异链。在此假设给出的变异都是由突变引起的,不考虑复杂的基因重组变异问题 —— 即每一种病毒都是由唯一的一种病毒突变而来,并且不存在循环变异的情况。输入格式:输入在第一行中给出一个正整数N(≤104),即病毒种类的总数。于是我们将所有病毒从 0 到N−1进行编号。随...
2022-03-17 17:24:02 142
原创 7-95 深入虎穴 (树的深搜)
7-95 深入虎穴 (25 分)著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报。已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门。每一扇门背后或者是一个房间,或者又有很多条路,同样是每条路通向一扇门…… 他的手里有一张表格,是其他间谍帮他收集到的情报,他们记下了每扇门的编号,以及这扇门背后的每一条通路所到达的门的编号。007 发现不存在两条路通向同一扇门。内线告诉他,情报就藏在迷宫的最深处。但是这个迷宫太大了,他需要你的帮助 —— 请编程帮他找出距离入口
2022-03-17 17:01:49 472
原创 7-90 小字辈 (树的深搜)
7-90 小字辈 (25 分)本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。输入格式:输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号,其中第 i 个编号对应第 i 位成员的父/母。家谱中辈分最高的老祖宗对应的父/母编号为 -1。一行中的数字间以空格分隔。输出格式:首先输出最小的辈分(老祖宗的辈分为 1,以下逐级递增)。然后在第二行按递增顺序输出辈分最小的成员的编号。编号间以一个空
2022-03-17 13:23:32 125
原创 PinkRabbit写情书(map函数)
问题 E: PinkRabbit写情书时间限制:1.000Sec内存限制:128 MB提交状态题目描述PinkRabbit在决定好表白的日期之后,决定写一封情书给他的妹子。PinkRabbit在阅读了「句法结构」「普通语言学教程」等诸多形式语言学著作之后,用数学方法得到了一些成果。他将n个情书中的常见词汇整理成一张「情书词汇浪漫度归纳表」,并且计算出了每个这些词汇的浪漫度ri。一封情书有它本身的浪漫程度。定义情书的浪漫程度为R,每个情书常见词汇在这封情书中出现的次数为ti,那么一封情...
2022-03-08 17:45:53 197
原创 7-113 完全二叉树的层序遍历
7-113 完全二叉树的层序遍历 (25 分)一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。输入格式:输入在第一行中给出正整数 N(≤30),即树中结点个数。第二行给出后序遍历序列,为 N 个不超过 100 的正整数。同一行中所有数字都以空格分隔。输出格式:在一行中输出该
2022-03-04 23:13:57 134
原创 7-70 树的遍历(已知前序||后序 和中序求层序遍历)
7-70 树的遍历 (25 分)给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:4 1 6 3 5 7 2该.
2022-03-04 23:09:46 535 1
原创 7-64 估值一亿的AI核心代码(字符串删减更替)
7-64 估值一亿的AI核心代码 (20 分)以上图片来自新浪微博。本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:无论用户说什么,首先把对方说的话在一行中原样打印出来; 消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉; 把原文中所有大写英文字母变成小写,除了I; 把原文中所有独立的can you、could you对应地换成I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词...
2022-03-04 22:58:53 188
原创 7-100 谷歌的招聘(字符串函数)
7-100 谷歌的招聘 (20 分)2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘。内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e 中最早出现的 10 位连续数字。能找出这个素数的人,就可以通过访问谷歌的这个网站进入招聘流程的下一步。自然常数 e 是一个著名的超越数,前面若干位写出来是这样的:e = 2.718281828459045235360287471352662497757247093
2022-03-01 23:31:53 234
原创 7-108 吃火锅(字符串函数)
7-108 吃火锅 (15 分)以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用。但是如果你说“吃火锅”,那就厉害了,我们的故事就开始了。本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有chi1 huo3 guo1。输入格式:输入每行给出一句不超过 80 个字符的、以回车结尾的朋友信息,信息为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。当读到某一行只有一个英文句点.时,输入结束,此行不算在朋友信息里。输出格式:首先在一行中输出朋友信息的...
2022-03-01 23:18:39 153
原创 单链表(数组模拟)
实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数; 删除第kk个插入的数后面的数; 在第kk个插入的数后插入一个数。现在要对该链表进行MM次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第kk个插入的数并不是指当前链表的第kk个数。例如操作过程中一共插入了nn个数,则按照插入的时间顺序,这nn个数依次为:第11个插入的数,第22个插入的数,…第nn个插入的数。输入格式第一行包含整数MM,表示操作次数。接下来MM...
2022-02-28 23:38:25 165
原创 素数筛(埃筛|欧拉筛)
1.埃氏筛#include<iostream>using namespace std;int a[1010];bool vis[1010];int x;void aishi(int n){ for(int i=2;i<=n;i++) {//如果是素数,存下来并且他的倍数不是素数 if(!vis[i]) a[x++]=i; for(int j=2;j*i<=n;j++) { vis[i*j]=true; } }}int ma..
2022-02-28 23:23:05 185
原创 树的操作(二叉树)
1.二叉树的创建与输出#include<iostream>//#include<cstdio>//#include<cstdlib> using namespace std;struct node { char data; struct node *lchild; struct node *rchild;};typedef struct node BTnode;typedef struct node* tree;tree root;.
2022-02-24 19:46:05 327
原创 蒜头君回家(BFS)
蒜头君回家蒜头君要回家,但是他家的钥匙在他的朋友花椰妹手里,他要先从花椰妹手里取得钥匙才能回到家。花椰妹告诉他:“你家的钥匙被我复制了很多个,分别放在不同的地方。”蒜头君希望能尽快回到家中,他需要首先取得任意一把钥匙,请你帮他计算出回家所需要的最短路程。蒜头君生活的城市可以看做是一个n×m的网格,其中有道路有障碍,钥匙和家所在的地方可以看做是道路,可以通过。蒜头君可以在城市中沿着上下左右4个方向移动,移动一个格子算做走一步。输入格式第一行有两个整数n,m。城市的地图是n行m列。(1≤n,m≤2
2022-02-22 14:02:31 223
原创 一维坐标的移动(BFS)
#include<iostream>#include<queue>using namespace std;int n,a,b;struct node{ int x; int d; node(int xx,int dd) { x=xx; d=dd; }};int v[1010];//判断是否走过 queue<node>q;void bfs(int m,int step){ q.push(node(m,step)); v[...
2022-02-22 13:16:55 236
原创 炸弹人游戏(DFS||BFS)
输入小S的位置,现在他要在某个空地防止一枚炸弹,小s移动过程中不能走到敌人的位置上,否则会被敌人杀死,如果有砖块挡住,也不能过去,现在找一个空地,使得炸弹消灭敌人最多(炸弹可以消灭同行同列的敌人,但不能穿过砖块)‘.’表示空地,‘G’表示敌人,‘#’表示砖块BFS搜索#include<iostream>#include<queue>using namespace std;//四个方向 int dir[4][2]={{0,1},{0,-1},{1,0},{-.
2022-02-22 12:48:50 2367
原创 走迷宫(BFS||DFS)
输入n行m列,用0表示空地,1表示墙,输出从起点到终点最少需要多少步输入样例:5 4 4 30 0 1 00 0 0 00 0 1 00 1 0 00 0 0 1输出样例:7解析:bfs的经典例题,定义结构体存入坐标和当前步骤,并将其用队列保存起来,每次取队首元素,这样每次得到的步骤都会是最少#include<iostream>#include<cstring>#include<queue>using names..
2022-02-18 21:33:08 446
原创 染色问题(DFS)
#include<iostream>#include<cstring>using namespace std;int n,m,ans;int a[1010][1010];int v[1010][1010];int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};void dfs(int x,int y){ for(int i=0;i<4;i++) { int nx=x+dir[i][0]; int ny=y+d...
2022-02-18 19:18:06 595 1
原创 马走日(DFS)
题目:总时间限制:1000ms内存限制:1024kB描述马在中国象棋以日字形规则移动。请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。输入第一行为整数T(T < 10),表示测试数据组数。每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标n,m,x,y。(0<=x<=n-1,0<=y<=m-1, m < 10, n <
2022-02-18 18:53:04 165
原创 n皇后(DFS)
读入一个数字n,计算对于一个n*n的表格中,每行放下一个皇后,但是同行同列同对角线只能有一个皇后,有几种方案?输入:4输出:2解析:通过dfs来遍历每一种方案是否可行,从而找出最终可行的方案,这里不能同对角线的判断可以通过以下方式:右对角线上所有点的横纵坐标相加相等,左对角线上所有点横纵坐标相减相等#include<iostream>using namespace std;int a[1010];int ans=0,n;bool check(int x,i
2022-02-18 17:00:49 289
原创 最长公共子序列(递推)
问题描述:给定两个序列s1,s2,求二者的最长公共子序列长度例如:algorithmsalchemist输出:5即alhms1.设计状态:f[i][j]表示的是s1有i个字母,s2有j个字母,他们的最长公共子序列2.转移状态方程f[i][j]=0, i==0 || j==0;f[i][j]=f[i-1][j-1]+1; s1[i-1]==s1[j-1]f[i][j]=max(f[i-1][j],f[i][j-1]) s1[i-1]!=s1[j-1]..
2022-02-17 23:04:32 423
原创 硬币问题(递推)
现有若干枚硬币,硬币面值分别为1,5,11,要凑出价值为w,至少需要多少枚硬币样例输入:15样例输出:3提示:3*5=15我们可以按照递推从0个价值开始求,这样的话当求i价值需要多少硬币时,我们就可以比较一下f[i-11] , f[i-1], f[i-5] 的大小然后取最小值,通过这个递推关系一直求n#include<iostream>#include<cstring>using namespace std;int f[1010];in
2022-02-17 22:36:42 613
原创 数字金字塔(dfs||dp)
题目描述假设有如下所示的一个数字金字塔,现在,要求写一个程序来查找从顶点到底部任意处结束的路径,使路径经过的数字的和最大,并输出该路径的最大和。样例输入573 28 1 02 7 4 44 5 2 6 5样例输出30提示:该金字塔的和最大路径的和为7+3+8+7+5=30。方法一:记忆化搜索+DFS记忆化搜索本质上就是dp,只不过他是用递归去实现的;我们首先要确定他的设计状态,dfs(x,y)表示从该点出发到达终点最大路径和,那么dfs(1,1)就.
2022-02-17 22:21:12 442
原创 过河卒(DFS||递推)
方法一:用dfs直接搜索#include<iostream>using namespace std;int n,m,x1,y1,ans=0;int dir[8][2]={{-1,-2},{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2}};//记录马可以走到的位置 int dr[2][2]={{1,0},{0,1}};//记录过河卒可以走的方向 int vis[30][30];//记录过河卒是否走过该位置 int ch...
2022-02-17 21:46:31 1190 2
原创 位数问题(递推)
在所有的n位数中,有多少个数中有偶数个数字3?由于结果很大,你只需要输出对这个答案对12345取余的值输入格式:输入一个数字n输出格式:输出有多少个数中有偶数个数字3输入样例:2输出样例:73数据范围:1<=n<=1000解析:记录一下i位数奇数个3和偶数个3分别有多少种可能,假设f[i][0]记录的是i位数有多少种偶数个3的数,f[i][1]记录的是i位数有多少种奇数个3的数,当要求i位数中有多少个数是偶数个3的数的时候,就可以将新的一位看作3或者不是3,这样递推到n.
2022-02-17 18:54:15 7869
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人