注意:所有代码均是根据题目描述进行了本地测试,没有在北邮oj上测试,不保证一定能AC。

点击链接查看历年机试题目汇总。

A最值问题

题目描述

给出N个数,求出这N个数中最大值和次大值。注意这里的次大值必须严格小于最大值。输入保证N个数中至少存在两个不同的数。
输入:
第一行为测试数据的组数T(T≤20)。请注意,任意两组测试数据之间是相互独立的。
每组数据包括两行:
第一行为一个整数N(1≤N≤1000)。
第二行为N个正整数,每个整数均不大于106。
输出:
每组数据输出两个数,即N个数的最大值和次大值,中间用空格隔开。

样例输入

2
5
1 2 3 4 5
4
2 2 2 3

样例输出

5 4
3 2

解析

用两个数记录最大和次大,当最大值更新时,次大值等于之前的最大值

#include <iostream>
using namespace std;
int main()
{int T;int N;cin>>T;while(T--){cin>>N;int mmax=0,max=0,t;for(int i=0;i<N;i++){cin>>t;if(t>mmax) {max=mmax;mmax=t;} }cout<<mmax<<" "<<max<<endl;}return 0;
}

B 统计时间间隔

题目描述

给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间。给出的时间一定满足的形式,其中x和y分别代表小时和分钟。

输入:
第一行为数据组数T(1≤T≤50000)。
每组数据包括两行,分别代表两个时间。
输出:t
每组数据输出一行,表示最少经过的分钟数。

样例输入

2
7:00
7:00
7:00
8:00

样例输出

0
60

解析

注意隔天的时间计算(第一个时间大于第二个时间)

#include <iostream>
#include <cstring>
using namespace std;
int main()
{int T;cin>>T;while(T--){int h1=0,h2=0,m1=0,m2=0;char a[10],b[10];cin>>a;int flag=0;for(int i=0;i<strlen(a);i++){if(a[i]==':') flag=1;else if(!flag){h1=h1*10+a[i]-'0';}else if(flag){m1=m1*10+a[i]-'0';}}cin>>b;for(int i=0;i<strlen(b);i++){if(a[i]==':') flag=0;else if(flag){h2=h2*10+b[i]-'0';}else if(!flag){m2=m2*10+b[i]-'0';}}int ans=0;ans+=(h2-h1)*60+m2-m1;if(ans<0) ans+=1440;cout<<ans<<endl;}return 0;
}

C字符串转换

题目描述

们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而"abcd"则不是简单串。现在给你一个仅由小写字母组成的字符串,你需要用最小的花费,将其转换成一个简单串。 花费的计算规则如下:将a到z这26个小写字母从左到右排成一排,则每个字母都有左右两个邻居,我们认为a的左邻居是z,z的右邻居是a。一个字母只能转换成其相邻的字母,转换的花费为1。一个字母可以进行多次转换,例如将a转换成d,可以进行如下的步骤: a->b->c->d,花费为3。字符串的转换花费为所有字母转换花费之和。例如将字符串"abbbz"转换成简单串的最小花费为3,转换后的结果为"bbbbb"。
输入:
第一行一个整数T(T≤100),表示测试数据的组数。 每组测试数据只有一行,为仅含小写字母的字符串,字符串长度不超过1000。
输出:
对于每一组数据,输出一个整数,表示将字符串转换成简单串的最小花费。

样例输入

2
abbba
abbac

样例输出

2
3

解析

暴力求解,将26种替换方式遍历,取最小的。

#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int main()
{int T;cin>>T;while(T--){char a[1005];int ans=0x3fffffff;cin>>a;for(int i=0;i<26;i++){int sum=0;for(int j=0;j<strlen(a);j++){int x,y;x=(a[j]-char('a'+i)+26)%26;y=(char('a'+i)-a[j]+26)%26;sum=sum+min(x,y);}if(sum<ans) {ans=sum;}}cout<<ans<<endl;}return 0;
}

D 文件系统

题目描述

现在很多操作系统的文件系统都是基于树形结构设计的。即一个目录下可以有若干个目录和文件,而每个目录和文件都可以通过一条从根目录出发的唯一路径来唯一确定。我们希望你实现对这样的一个文件系统的简单管理。
为了简化问题,我们做出如下假设:
1.    假设文件系统初始时只有一个根目录root。
2.    假设所有出现的文件和目录的名字都是唯一的。即,不会有两个相同名字的文件出现,不会有两个相同名字的目录出现,也不会有一个文件和一个目录名字相同。
3.    文件名字和目录名字都是长度在1到20之间的字符串(包括1和20),且只由英文大写字母、英文小写字母、数字组成。大小写字母之间不等效。
你需要实现如下操作:
1.    CREATEFILE FILENAME DIRNAME
这个操作的含义是:在DIRNAME的目录下创建一个名字为FILENAME的文件。我们保证当出现这个操作时,DIRNAME是一个已经存在的目录,而FILENAME这个名字是首次出现。
2.    CREATEDIR DIRNAME1 DIRNAME2 这个操作的含义是:在DIRNAME2的目录下创建一个名字为DIRNAME1的目录。我们保证当出现这个操作时,DIRNAME2是一个已经存在的目录,而DIRNAME1这个名字是首次出现。
3.    LISTFILE DIRNAME 这个操作的含义是:按照创建的先后顺序打印出DIRNAME目录下的所有文件名字。我们保证当出现这个操作时,DIRNAME是一个已经存在的目录.
4.    LISTDIR DIRNAME 这个操作的含义是:按照创建的先后顺序打印出DIRNAME目录下的所有目录名字。我们保证当出现这个操作时,DIRNAME是一个已经存在的目录
输入:
第一行有一个整数T,表示一共有T组数据需要你处理。请注意各组数据之间是相互独立的。每当处理新的一组数据时,你都应当假设此时只有一个名字为root的根目录存在。T的大小不超过20。
对于每组数据,第一行有一个整数N(0<N<=100),表示有N个操作需要你处理,接下来的N行,每一个行描述了一个操作。
输出:
对于每个LISTFILE操作和LISTDIR操作,如果找到了X个文件(或目录),你需要输出X行,按照创建时间从早到晚的顺序,每一行打印一个文件(或目录)的名字。如果找到了0个文件(或目录),就不要输出任何东西。请注意不要输出多余的空格和换行符。

样例输入

2
8
CREATEFILE desktop root
CREATEDIR DESKTOP root
LISTFILE root
LISTDIR DESKTOP
CREATEFILE scr20130412 DESKTOP
CREATEFILE scr20130411 DESKTOP
CREATEFILE scr20130413 DESKTOP
LISTFILE DESKTOP
5
LISTFILE root
CREATEDIR webapp root
CREATEDIR myweb webapp
CREATEDIR MyWeb webapp
LISTDIR webapp

样例输出

desktop
scr20130412
scr20130411
scr20130413
myweb
MyWeb

解析

这道题用map比较方便,字符串到字符串数组的映射。
另外再用一个字符串到数字的map记录该名称是文件还是目录。

#include <iostream>
#include <map>
#include <string>
#include <vector>
using namespace std;
int main()
{int T,N;cin>>T;while(T--){map<string,vector<string> > a;map<string,int> b;cin>>N;while(N--){string s,f,d;cin>>s;if(s=="CREATEFILE"){cin>>f>>d;a[d].push_back(f);b[f]=0;  //文件 }else if(s=="CREATEDIR"){cin>>f>>d;a[d].push_back(f);b[f]=1;  //目录 }else if(s=="LISTFILE"){cin>>f;int len=a[f].size();for(int i=0;i<len;i++){if(!b[a[f][i]]) cout<<a[f][i]<<endl;}}else{cin>>f;int len=a[f].size();for(int i=0;i<len;i++){if(b[a[f][i]]) cout<<a[f][i]<<endl;}}}}return 0;
}

2013北邮网研机试相关推荐

  1. 2019北邮网研机试

    注意:所有代码均是根据题目描述进行了本地测试,没有在北邮oj上测试,不保证一定能AC. 点击链接查看历年机试题目汇总. A牙膏问题 题目描述 4只牙膏比较价格,返回最便宜的牙膏. 输入: 第一行输入T ...

  2. 2018北邮网研机试

    注意:所有代码均是根据题目描述进行了本地测试,没有在北邮oj上测试,不保证一定能AC. 点击链接查看历年机试题目汇总. A商品总价格 题目描述 类似超市结账,计算购买的商品的总价格. 输入: 第一行为 ...

  3. 2012北邮网研机试

    注意:所有代码均是根据题目描述进行了本地测试,没有在北邮oj上测试,不保证一定能AC. 点击链接查看历年机试题目汇总. A打印字符串 题目描述 老师有一个问题想考考mabo,但是mabo不会,所以想请 ...

  4. 2014北邮网研机试

    注意:所有代码均是根据题目描述进行了本地测试,没有在北邮oj上测试,不保证一定能AC. 点击链接查看历年机试题目汇总. A分数加法 题目描述 求2^(-a)+2^(-b),其中a和b均为正整数,结果请 ...

  5. 2018北邮网研机试真题(大佬们的回忆版)

    Problem 1 题目: 类似超市结账,计算购买的商品的总价格. 输入: 第一行为测试数据组数T(0< T <= 10) 每组数据第一行为购买商品的种类n,接下来n行,每行两个数据,第一 ...

  6. 2015北邮网研机试

    Problem A 输入: 3 3 5 8 输出: 1 2 4 因为n小于等于30,而30以内的质数一共就10个.所以直接写出来比较大小就好 #include<stdio.h> int m ...

  7. 2014年北邮网研机试

    文章目录 Problem A. 分数加法 题目描述 输入格式 输出格式 输入样例 输出样例 AC代码 使用gcd化为最简分数 判断ab是否相等,绕过gcd直接化简 知识点补充:gcd Problem ...

  8. 2018北邮网研机试-A

    Problem A 类似超市结账,计算购买的商品的总价格. 输入: 第一行为测试数据组数T(0<T<=10) 每组数据第一行为购买商品的种类n,接下来n行,每行两个数据,第一个为商品价格, ...

  9. 2018北邮网研机试-D 的更好解法

    https://blog.csdn.net/birdreamer/article/details/79749068 上面是原题超链: 原博D题的做法有点太浪费空间 #include <iostr ...

最新文章

  1. SAP RETAIL 为物料组指派Merchandise Hierarchy Level Code
  2. jvm中的垃圾收集器serial、parNew、parallel Scavenge;serial old、parallel old、CMS、G1
  3. 格式工厂软件处理视频
  4. 百度NLP模块使用手册——深度直击最新进展
  5. 风变编程python第一关_风变编程【学习笔记】,第8关学习心得及代码扩展
  6. mmdetection源码笔记(二):创建网络模型之registry.py和builder.py解读(上)
  7. 【图像检索】基于Hu不变矩图像检索含Matlab源码
  8. android高仿ios控制中心,仿 iOS 11原生控制中心
  9. Win7edge浏览器看视频黑屏怎么解决?
  10. 【Pygame实战】这游戏有毒,刷爆朋友圈:小编已与病毒版贪吃蛇大战了三百回合,最高分339?
  11. 导数的四则运算法则_【数学】求导的方法之四则运算法则
  12. epubjs 在线阅读epub文件
  13. angular仿微信图片放大功能
  14. 上网设备linux共享网络,共享上网 - Linux Wiki
  15. 广东开放大学形考任务财会法规与职业道德(专,2022秋)第三次考核答案
  16. 抖音微信登录服务器繁忙,抖音无法正常使用微信登录_抖音微信登陆失败解决方法_游戏吧...
  17. 千万级用户的Android客户端是如何养成的
  18. 登录时“自动填充”和“验证码”的实现
  19. 容量法和库仑法的异同点_容量滴定法‘库仑、点位滴定法的比较
  20. vue 使用echarts地图实现全国地图

热门文章

  1. 我决定简单地生活(笔记)——极简主义者的诞生源起
  2. 远程计算机guest密码更改了,怎么给guest设置密码
  3. 07vue+elementUI完成注册及登陆
  4. LeetCode一周题解(20220328-20220403)
  5. 30种“行之有效”的用WordPress在线博客赚钱的方法
  6. MTK wifi 驱动相关
  7. 如何在公司访问家里的群晖NAS,通过SSH一分钟就可以搞定
  8. 三菱FX5U系列PLC使用FX5-CCL-MS模块无需编程即可实现CC-Link总线通信的具体步骤
  9. 【夏季凉拌菜食用莫忘5大禁忌】
  10. 深力科电子SND101系列兼容代替SLM561A 支持PWM调光 线性恒流LED驱动芯片