复旦大学研究生机试(2019)

article/2025/4/28 12:48:32

1. 计算机学院

今年的题目可以说是挺难的,第一题虽然像是送分题,实际上也不是很简单。第二题第三题是动态规划问题,而且复旦据说会卡大数,今年150人考生据说只有一个AC,大部分人只做出第一题,个别零分。

1.1 相隔天数

题目:

输入日期格式:YYYYMMDD,求与20190205相隔的天数。
例:
输入:
20190208
输出:
3

解题:

这道题是《王道上机指南》原题。
这道题反正对于我这种完全不知道闰年定义的人来说是很难的,毕竟计算日期,闰年二月是有28天和29天的区分的。
*闰年:*当年数不能被100整除时,但若能被4整除则为闰年,或者其能被400整除也是闰年。
除了闰年的定义以外,我们可以顺序统一到同一年,同一月,同一天。
这样分步解决问题。

#include <iostream>
#include <stdio.h>
#include <string>
#include <sstream>
using namespace std;bool isrun(int year){if((year%100!=0&&year%4==0)||(year%400==0))return true;elsereturn false;
}int main()
{string str;int year, month, day,countday = 0;scanf("%4d%2d%2d",&year,&month,&day);int mdays[]={31,28,31,30,31,30,31,31,30,31,30,31};//统一到同一年while(year>2019){year--;if(isrun(year))countday+=366;elsecountday+=365;}while(year<2019){if(isrun(year))countday-=366;elsecountday-=365;year++;}//统一到同一月while(month>2){month--;if(month!=2){countday += mdays[month-1];}else if(isrun(year)){countday+=29;}else{countday+=28;}}while(month<2){if(month!=2){countday -= mdays[month-1];}else if(isrun(year)){countday-=29;}else{countday-=28;}month++;}//计算同一月的日期差countday+=day-5;cout<<countday<<endl;return 0;
}

1.2 最大连续子序列

题目:

给定一个数字序列A1,A2…An,求i,j(1<=i<=j<=n),使得Ai+…+Aj最大,输出这个最大和。
例:
输入:
6
-2 11 -4 13 -5 -2
输出:
20

解题:

这是一道动态规划题,一般有两种思路。
第一种解法比较朴素,时间复杂度是O(n^2),其实也是暴力枚举,把所有结果都算出来取最大值;也大概是我能在考场上想出的最优解了(伤心)。

#include <iostream>
#include <stdio.h>
#include <vector>
#include <limits.h>
using namespace std;int main()
{int N;scanf("%d",&N);vector<int> vec;while(N-->0){int temp;scanf("%d",&temp);vec.push_back(temp);}int maxa = INT_MIN;for(int i =0;i<vec.size();i++){int currSum = 0;for(int j = i;j<vec.size();j++){currSum+=vec[j];if(currSum>maxa)maxa = currSum;}}cout<<maxa<<endl;return 0;
}

第二种解法,动态规划解法,时间复杂度O(n),没有什么第二种思路了,我完全没有思路,只能看看大佬博客维持生活这样子了:
https://www.cnblogs.com/conw/p/5896155.html

1.3 有向树形态

题目:

求N个结点能够组成的二叉树的个数。
例:
输入:
3
输出:
5

求解:

这道题,我是说不清楚难不难,我是没什么想法,不过有个卡特兰数在我初试的时候接触过,原理是:卡特兰数原理
所以,我就这样用通项公式就可以吧。
由上诉大神博客可知,通项公式为:
在这里插入图片描述
因此代码为(据说数字很刁钻,需要特特别大的数字,我也没什么办法,用long long可能只能过一部分用例):

#include <iostream>
using namespace std;long long Cmn(long long n) {long long fengzi = 1, fengmu = 1;for (int i = 2 * n; i > n; i--) {fengzi *= i;}for (int i = n; i > 1; i--) {fengmu *= i;}return fengzi / fengmu;
}int main() {long long N;cin >> N;cout << Cmn(N) / (N + 1) << endl;return 0;
}

事实上,经过测试,使用C++long long只能通过N=14;
下面尝试使用Java来解决(只能说Java太强了,解决这道题完全没有压力,可以ak):

import java.math.BigInteger;
import java.util.Scanner;
public class Main {public static BigInteger Cmn(int n){BigInteger fengzi = new BigInteger("1"),fengmu = new BigInteger("1");for (int i = 2 * n; i > n; i--) {fengzi = fengzi.multiply(new BigInteger(Integer.toString(i)));}for (int i = n; i > 1; i--) {fengmu = fengmu.multiply(new BigInteger(Integer.toString(i)));}return fengzi.divide(fengmu);}public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);int N = sc.nextInt();System.out.println(Cmn(N).divide(new BigInteger(Integer.toString(N+1))).toString());}
}

也可以在危险的边缘试探一下Python:

def Cmn(n):fengzi=int(1)fengmu=int(1)for i in range(n+1,2*n+1):fengzi *= ifor i in range(2, n+1):fengmu *= ireturn fengzi / fengmuN = int(input())
print(int(Cmn(N)/(N+1)))

有点慢的,但可以计算比较大的数字,500左右(3s)。

2. 工研院

现场做了,就懒得再码代码一便了。
感觉和计算机学院的题目难度相差不大,每道题最后几个数据都很大,复旦今年都是卡大数。

2.1 手机按键

题目:

模拟老式手机输入,九宫格布局如下:

[ 1 ] [ 2ABC ] [ 3DEF  ]
[ 4GHI  ] [ 5JKL ] [ 6MNO  ]
[ 7PQRS ] [ 8TUV ] [ 9WXYZ ][ 0空  ]

题目输入为数字或者’-’,其中‘-’代表手机输入时等待的时间间隔,数字表示点击某个按键的次数。比如点击两次2,则输出为B,四次2,则输出为A。
例:
输入:
255
输出:
AK
输入(等待间隔‘-’可以无限长,也可以没有):
2222------55
输出:
AK

2.2 服务器维护

题目:

假设有编号从1-N的服务器,首先给出服务器个数,再给出一组服务器状态。
然后给出一次数字,表示修改状态次数,接下来输入为i,j,x,意思是使用x修改从i到j的服务器。
最后输出所有服务器状态
例:
输入:
5
1 2 2 3 1
2
1 2 5
2 5 -1
输出:
6 6 1 2 0

2.3 计算通讯代价

题目:

给出一个树,计算每个节点到其他节点的通讯代价的总和,假如树为

1————2————3

则结点1,2,3通讯代价分别为:3,2,3
例:
输入:
3
1 2
2 3
输出:
3 2 3
输入说明: 3,表示共有3个结点,接下来的两行,表示该树节点之间的相连情况。


http://chatgpt.dhexx.cn/article/0UYMS3cg.shtml

相关文章

【20保研】2019年复旦大学工程与应用技术研究院全国优秀大学生夏令营通知

点击文末的阅读原文或者公众号界面左下角的保研夏令营或者公众号回复“夏令营”是计算机/软件等专业的所有保研夏令营信息集合&#xff0c;会一直更新的。 为了促进我国高校优秀大学生之间的交流、加强学生对复旦大学工研院的了解、特别是吸引优秀学生继续深造&#xff0c;探索…

复旦大学计算机专业硕士平均工资,在复旦大学当教授“月薪”是多少?这个工资条,让网友非常羡慕!...

文章原创&#xff0c;版权归本作者所有&#xff0c;欢迎个人转发分享 随着中国的高等教育发展的重视&#xff0c;很多的高校也是不负众望&#xff0c;不仅在国内知名度很高&#xff0c;在国外也享有盛誉的。 在中国知名度最高的大学就是清华、北大、复旦等高校&#xff0c;是受…

复旦计院、工研院2019机试真题及答案详解

计院 A 相隔天数 输入一个 yyyymmdd 格式的时间&#xff0c;如 20190318&#xff0c;计算与 20190205 相差的天数&#xff0c; 取绝对值&#xff0c;所有输入在 19000101 和 21000101 之间。 样例输入&#xff1a;20190208 输出&#xff1a;3 #include<iostream>us…

复旦计院、工研院2018机试真题及答案详解

计院 A 求众数 众数就是一个序列中出现次数最多的数字。 如果不唯一&#xff0c;则输出小的那个值。 给定第一个代表有几个数字。 1<n<10^5 每个数字在 int 范围内样例&#xff1a; 输入&#xff0c; &#xff08;第一个代表有几个数字&#xff09;8 10 3 8 8 …

2019年复旦大学机试题

机试&#xff1a; 一、计算机学院&#xff1a; 1、 算法笔记上有类似题&#xff0c;且time与time2都是输入。 而本体time是输入&#xff0c;time2是题目给的。 设置time与time2&#xff0c;为计算方便设定让time恒小于time2。 方法&#xff1a;从time&#xff08;较早的日期…

2019 复旦大学工研院上机题-计算通讯代价

题目&#xff1a; 给出一个树&#xff0c;计算每个节点到其他节点的通讯代价的总和&#xff0c;假如树为 1————2————3 1 则结点 1&#xff0c;2&#xff0c;3 通讯代价分别为&#xff1a;3&#xff0c;2&#xff0c;3 例&#xff1a; 输入&#xff1a; 3 1 2 2 3 输出&…

更正:复旦大学工研院计算机学硕不是第一年招生

首先对大家说一声抱歉&#xff01; 昨天弄错了复旦大学工研院的情况。 据复旦大学工研院的在读同学描述&#xff0c;实际上复旦大学工研院计算机学硕是第二年招生&#xff0c;专硕是第一年招生。 专硕的招生目录&#xff1a; 考试内容&#xff1a;①101思想政治理论;②204英语二…

研究生院校推荐——复旦大学工研院

概述 过去的一年几乎都在准备考研&#xff0c;现在差不多勉强上岸&#xff0c;写一点经验和教训。 我最初的目标院校是上海交大电院计算机&#xff0c;最后上岸是复旦大学工研院计算机。 今年的上交计算机专硕分数线是325&#xff0c;复旦工研院学硕分数线是340&#xff0c;题…

入营人数线性增长,录取人数保持稳定,复旦工研院有点抢手

1、院校介绍 复旦大学工程与应用技术研究院是复旦大学发挥文理医综合优势&#xff0c;聚焦解决国家重大需求的工程与应用研发&#xff0c;发展具有复旦特色工程学科的一项重要举措。其下设有智能机器人研究院、生物医学工程技术研究所和超越照明研究所三个研究机构。近几年来&…

链路聚合实验

目录 1 链路聚合配置实验 1.1 实验内容 1.2 实验原理 1.3 关键命令 1.4 配置过程 2 链路聚合与VLAN配置实验 2.1 实验内容 2.2 实验原理 2.3 配置过程 3 链路聚合与生成树配置实验 3.1 实验内容 3.2 实验原理 3.3 配置过程 4 链路聚合与RSPAN配置实验 4.1 实验…

链路聚合配置

链路聚合 链路聚合介绍 链路聚合模式 链路聚合配置 链路聚合介绍 链路聚合&#xff1a;将多个以太网链路捆绑为一条逻辑的以太网链路 作用&#xff1a; 1.提高带宽 2.节省IP地址 链路聚合组 二层聚合组&#xff1a;随着二层聚合端口的创建自动生成的&#xff0c;只包含二…

为什么会有链路聚合这种技术?

这里写目录标题 前言链路聚合是什么&#xff1f;二层交换机链路聚合三层交换机链路聚合总结 前言 在企业网络中&#xff0c;所有设备的流量在转发到其他网络前都会汇聚到核心层&#xff0c;再由核心区设备转发到其他网络&#xff0c;或者转发到外网。因此&#xff0c;在核心层…

Linux链路聚合

CSDN话题挑战赛第2期https://marketing.csdn.net/p/7b6697fd9dd3795a268d1a6f2fe75012 参赛话题&#xff1a;学习笔记https://activity.csdn.net/creatActivity?id10213 一、概念 指的是将多个物理端口汇聚在一起&#xff0c;形成一个逻辑端口&#xff0c;以实现出、入流量吞…

链路聚合技术及其配置

** 链路聚合技术 &#xff08;链路捆绑&#xff09; ** 链路聚合技术背景 交换机与交换机之间如果流量很大的时候会出现带宽不足的问题。&#xff08;路由器与路由器&#xff09;&#xff08;交换机与服务器之间&#xff09;------------链路聚合技术 &#xff08;链路捆绑&…

eNSP 配置链路聚合

目录 实验目的&#xff1a; 实验拓扑图如下&#xff1a; 实验命令&#xff1a; S1配置 S2配置 S3配置 pc端 &#xff08;所有pc配置IP注意不要相同&#xff09; 实现链路聚合需要满足以下条件&#xff1a; 1. 物理链路的带宽相等&#xff1b; 2. 物理链路连接的设备…

二层链路聚合

目录 一.二层交换机间的链路聚合 二.项目实例 sw配置命令 运行结果 总结&#xff1a; 引言&#xff1a;今天和一个从事网络维护的朋友聊天聊到了二层交换机的链路聚合&#xff0c;感觉自己都快忘记了&#xff0c;于是决定温习一下二层链路聚合的知识。 一.二层交换机间的…

华为交换机 链路聚合

前言 随着网络规模不断扩大&#xff0c;用户对骨干链路的带宽和可靠性提出了越来越高的要求。在传统技术中&#xff0c;常用更换高速率的接口板或更换支持高速率接口板的设备的方式来增加带宽&#xff0c;但这种方案需要付出高额的费用&#xff0c;而且不够灵活。 采用链路聚合…

十四、链路聚合

链路聚合 随着网络规模不断扩大&#xff0c;用户对骨干链路的带宽和可靠性提出了越来越高的要求。在传统技术中&#xff0c;常用更换高速率的接口板或更换支持高速率接口板的设备的方式来增加带宽&#xff0c;但这种方案需要付出高额的费用&#xff0c;而且不够灵活。 采用链路…

「网工必备」超详细链路聚合原理及分析

大家好&#xff0c;今天带大家了解一下以太网链路聚合&#xff0c; 从它的背景作用到应用范围&#xff0c;再到配置实验&#xff0c;一步搞定&#xff0c;记得看到最后&#xff01; 链路聚合技术的背景和作用 随着网络规模的不断扩大&#xff0c;人们对骨干链路的带宽和可靠性…

链路聚合的介绍以及配置

1、链路聚合技术的背景&#xff1a; 交换机与交换机之间如果流量很大的时候会出现带宽不足的问题。&#xff08;路由器与路由器&#xff09;、&#xff08;交换机与服务器之间&#xff09; 因为当我们在交换机与交换机增加线路时会出现环路&#xff0c;默认情况下CISCO启用了ST…