【2022寒假精进训练-7】7-13 特殊堆栈
堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除)。本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的中值。给定 N 个元素,如果 N 是偶数,则中值定义为第 N/2 小元;若是奇数,则为第 (N+1)/2 小元。
输入格式:输入的第一行是正整数 N(≤105)。随后 N 行,每行给出一句指令,为以下 3 种之一:
123Push keyPopPeekMedian
其中 key 是不超过 105 的正整数;Push 表示“入栈”;Pop 表示“出栈”;PeekMedian 表示“取中值”。
输出格式:对每个 Push 操作,将 key 插入堆栈,无需输出;对每个 Pop 或 PeekMedian 操作,在一行中输出相应的返回值。若操作非法,则对应输出 Invalid。
输入样例:12345678910111213141516171817PopPeekMedianPush 3PeekMedianPush 2PeekMedianPush 1PeekMedianPopPopPush 5Push ...
【2022寒假精进训练-7】7-12 清点代码库
上图转自新浪微博:“阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍。请设计一个程序,能够将代码库中所有功能重复的代码找出。各位大佬有啥想法,我当时就懵了,然后就挂了。。。”
这里我们把问题简化一下:首先假设两个功能模块如果接受同样的输入,总是给出同样的输出,则它们就是功能重复的;其次我们把每个模块的输出都简化为一个整数(在 int 范围内)。于是我们可以设计一系列输入,检查所有功能模块的对应输出,从而查出功能重复的代码。你的任务就是设计并实现这个简化问题的解决方案。
输入格式:输入在第一行中给出 2 个正整数,依次为 N(≤104)和 M(≤102),对应功能模块的个数和系列测试输入的个数。
随后 N 行,每行给出一个功能模块的 M 个对应输出,数字间以空格分隔。
输出格式:首先在第一行输出不同功能的个数 K。随后 K 行,每行给出具有这个功能的模块的个数,以及这个功能的对应输出。数字间以 1 个空格分隔,行首尾不得有多余空格。输出首先按模块个数非递增顺序,如果有并列,则按输出序列的递增序给出。
注:所谓数列 { A1, …, AM } 比 { ...
【2022寒假精进训练-7】7-10 网红点打卡攻略
一个旅游景点,如果被带火了的话,就被称为“网红点”。大家来网红点游玩,俗称“打卡”。在各个网红点打卡的快(省)乐(钱)方法称为“攻略”。你的任务就是从一大堆攻略中,找出那个能在每个网红点打卡仅一次、并且路上花费最少的攻略。
输入格式:首先第一行给出两个正整数:网红点的个数 N(1<N≤200)和网红点之间通路的条数 M。随后 M 行,每行给出有通路的两个网红点、以及这条路上的旅行花费(为正整数),格式为“网红点1 网红点2 费用”,其中网红点从 1 到 N 编号;同时也给出你家到某些网红点的花费,格式相同,其中你家的编号固定为 0。
再下一行给出一个正整数 K,是待检验的攻略的数量。随后 K 行,每行给出一条待检攻略,格式为:
n V1 V2 ⋯ Vn
其中 n(≤200) 是攻略中的网红点数,Vi 是路径上的网红点编号。这里假设你从家里出发,从 V1 开始打卡,最后从 Vn 回家。
输出格式:在第一行输出满足要求的攻略的个数。
在第二行中,首先输出那个能在每个网红点打卡仅一次、并且路上花费最少的攻略的序号(从 1 开始),然后输出这个攻略的总路费,其间以一个空格分隔 ...
【2022每日分享day26】字符串常用函数
河北大学2022寒假萌新程序设计训练每日知识分享-day26
每日分享——字符串常用函数一、转置、截取、匹配函数1.reserve()转置函数用于反转在[first,last)范围内的字符串(包括first指向的元素,不包括last指向的元素),
12string s="Hello,World";reverse(s.begin(),s.end());
2.substr()截取函数头文件#include<string>(1)字符串截取函数,从下表i开始,截取到长度为n的字符串。形式
1s.substr(i,n);
(2)表示从下标5开始一直到字符串结束
1string sub1=s.substr(5);
(3)s1截取整个s函数
1string s1=s.substr();
3.strstr()函数strstr(string1, string2)是查看string2串是否是string1串的子串,如果是的话返回string2串在string1串中的第一zhi个字符位置处的指针,否则返回null。
二、插入、删除函数1.insert()函数string s = “hel ...
【2022寒假精进训练-7】7-9 简单计算器
本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S1 存放数字,另一个堆栈 S2 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:
从 S1 中弹出两个数字,顺序为 n1 和 n2;
从 S2 中弹出一个运算符 op;
执行计算 n2 op n1;
将得到的结果压回 S1。
直到两个堆栈都为空时,计算结束,最后的结果将显示在屏幕上。
输入格式:输入首先在第一行给出正整数 N(1<N≤103),为 S1 中数字的个数。
第二行给出 N 个绝对值不超过 100 的整数;第三行给出 N−1 个运算符 —— 这里仅考虑 +、-、*、/ 这四种运算。一行中的数字和符号都以空格分隔。
输出格式:将输入的数字和运算符按给定顺序分别压入堆栈 S1 和 S2,将执行计算的最后结果输出。注意所有的计算都只取结果的整数部分。题目保证计算的中间和最后结果的绝对值都不超过 109。
如果执行除法时出现分母为零的非法操作,则在一行中输出:ERROR: X/0,其中 X 是当时的分子。然 ...
【2022每日分享day25】C++常用库函数
河北大学2022寒假萌新程序设计训练每日知识分享-day25
每日分享——C++常用库函数
【2022每日分享day24】字符编码
河北大学2022寒假萌新程序设计训练每日知识分享-day24
每日分享——字符编码字符串比较特殊的是还有一个编码问题。
因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。
由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。
但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显 ...
【2022每日分享day23】C和C++取整函数
河北大学2022寒假萌新程序设计训练每日知识分享-day23
每日分享—— C/C++取整函数
【2022每日分享day22】everything 文件搜索工具
河北大学2022寒假萌新程序设计训练每日知识分享-day22
每日分享—— everything 文件搜索工具Everything是voidtools开发的一款文件搜索工具,官网描述为“基于名称实时定位文件和目录(Locate files and folders by name instantly)”,相较于Windows自带的搜索工具,这款大小不到2M的软件的速度之快令人震惊,百G硬盘几十万个文件,可以在几秒钟之内完成索引;文件名搜索瞬间呈现结果。
它体积小巧免费,支持中文,支持正则表达式,界面简洁易用,快速建立索引,快速搜索,同时占用极低的系统资源,实时跟踪文件变化,并且还可以通过http或ftp形式分享搜索。
everything就是“万物”,万物皆可搜,且,以迅雷不及掩耳之势给你搜出来,它就是everything。
官网下载地址:https://www.voidtools.com/zh-cn/downloads/ ,也可在群文件进行下载。
【2022每日分享day21】Atcoder算法竞技平台介绍
河北大学2022寒假萌新程序设计训练每日知识分享-day21
每日分享—— Atcoder算法竞技平台介绍AtCoder是日本最大的算法竞技网站,也是全球第二流行的算法竞技网站。AtCoder的域名是http://atcoder.jp/ (注意http://www.atcoder.jp/ 是其官网,不是比赛网站)。AtCoder支持日语和英语。
AtCoder的比赛有四大类:
(1)AtCoder Beginner Contest(ABC),主要面向算法初学者。每周六或周日20点举行,时长100分钟。通常是8道题,AtCoder积分在0~1999区间的选手参与这种比赛,积分会根据做题结果而涨或跌。
(2)AtCoder Regular Contest (ARC),主要面向有一定算法基础的选手。举办频率低于AtCoder Beginner Conste,每半个月举办两次左右。每周六或周日20点左右开始,时长120分钟。通常是6道题。ARC对标Codeforces Div2。
(3)AtCoder Grand Contest(AGC),主要面向较高水平的选手。每两个月左右举办一次。举办 ...