清华大学软件学院保研机试经验
本专栏介绍笔者参加2019年清华大学软件学院保研机试的经验,希望对有志于报考清华大学软件学院的同学有所帮助。
由于专栏中的题目均来自笔者(2019年)或学长的记忆(2018年以前),故题目信息可能不准确;题解代码未经测试,亦不能保证正确。希望能与大家共同学习,共同进步。
da_kao_la
这个作者很懒,什么都没留下…
展开
-
清华软院保研机试总结
清华软院保研机试的赛制与清华计算机系类似,由于相关信息较少,故根据亲身经历总结要点如下:1.机试时长为3小时,一般有3道题,每道题有多个数据点,按数据点给分。每题分值在20~40分之间,总分100分2. 不是OJ形式,而是采用本地保存代码,考后测评程序黑盒测试的方法判分,所以考试的时候是不知道自己代码的对错的,如果有时间的话可以自己生成数据、写对拍程序对自己的程序进行测试3. 题目对于...原创 2018-09-18 20:50:22 · 5985 阅读 · 18 评论 -
2019年清华软院推免考试(校外直博&校内硕/博) 第一题——超长整数相乘(Multiply)
问题描述2018年清华软院推免考试(校外直博&校内硕/博)第一题——超长整数相乘(Multiply) 输入两个长度不超过200的正整数A,B,求A和B的乘积。保证输入的正整数不会以0开头,要求输出的正整数也不能以0开头(因为是考后回忆,可能记忆有些模糊了,题干和代码都有可能有错,忘谅解)----------------------------------------...原创 2018-09-15 21:04:51 · 3637 阅读 · 0 评论 -
2019年清华软院推免考试(校外直博&校内硕/博) 第二题——超长整数排列(Arrange)
问题描述2018年清华软院推免考试(校外直博&校内硕/博)第二题——超长整数排列(Arrange) 输入一个任意长度的数字序列,如果将数字序列的每一位看做一个单独的数字,则每个序列都可以看做是由数字0~9组成的一个排列。输出比输入序列大的最小排列,如果这样的序列不存在,则输出输入序列。示例:Input123Output132Explanation...原创 2018-09-15 21:23:59 · 3223 阅读 · 0 评论 -
2019年清华软院推免考试(校外直博&校内硕/博) 第三题——同构数
问题描述2018年清华软院推免考试(校外直博&校内硕/博)第三题——同构数 如果一个数n满足:记n的位数为d(n),若n的各次幂的末d(n)位都与n相等,则称n为“同构数”。现在题目是,输入进制m和正整数k,求m进制下第k个同构数,例如10进制下第4个同构数是25(1,5,6,25)。这里约定所有进制的第一个同构数都是1.规模约定:m大于5小于16,k小于21,保证结果...原创 2018-09-16 10:02:12 · 2074 阅读 · 6 评论 -
2018年清华软院保研夏令营第1题:回文数
题目输入只有一行,包含两个整数a,b,要求输出[a,b]内所有的回文数,a,b<10^6代码#include<cstdio>int dig[10] = {};bool huiwen(int n){ int i = 0, len; while (n > 0) { dig[i++] = n % 10; n /= 10; } len = ...原创 2018-09-06 10:01:55 · 898 阅读 · 0 评论 -
2018年清华软院保研夏令营第2题:上凸函数(二分查找)
题目在一个上凸函数上均匀采样得到{f(i)|i=1,2…N},有M次询问,每次询问输入两个整数a,b,求{f(i)-a*i-b|i=1,2…N}的最大值。 输入:第一行,N和M,其中N,M<5e5然后N行,按顺序输入f(i) 然后M行,每行两个整数 a,b--------------------------------------------------------------...原创 2018-09-06 14:31:17 · 1100 阅读 · 0 评论 -
2018年清华软院保研夏令营第3题:质因子(单调队列)
题目给定N个质数,构成集合S,设集合T为由质因子全部在S中的整数构成的集合,求T中第k小的数,其中1<=N<=100,1<=k<=1e5,输出保证在int的范围之内 输入:第一行 N,k 第二行 N个质数--------------------------------------------------------------------------------...原创 2018-09-06 17:11:25 · 1058 阅读 · 0 评论 -
2018年清华软院保研夏令营第4题:建高铁(堆优化双向Dijkstra)
题目编号为1到N的N个城市间有M条铁路,通过每条铁路花费时间T_i,为了减少从城市1到N的时间,现在决定将其中一条铁路改建成高铁,改建后通过该条铁路的时间将减半(向下取整数),求改建哪条铁路可以使得改建后从城市1到城市N的时间最短 输入:第一行N和M 接下来M行,每行A_i, B_i, T_i分别是第i条铁路的起点和终点,以及时间 输出:改建的铁路编号以及改建后从1到N的时间 注意:铁...原创 2018-09-06 21:47:12 · 1056 阅读 · 2 评论 -
HDU 1230 火星A+B(2017年清华软院保研机试第1题)
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1230火星A+BTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 13833 Accepted Submission(s): 47...原创 2018-09-03 21:01:47 · 972 阅读 · 0 评论 -
2017年清华软院保研机试第2题:被遗漏的数字
被遗漏的数字(30 分)Problem Description小明写了一个函数,将1-n 的数随机排列组成一个字符串,每个数字使用且仅使用一次。但是小明在写的时候粗心了,导致生成的字符串丢失了其中一个数字。帮助小明找出这个数字Input测试输入包含若干测试用例,每个测试用例占两行,第一行是n(2<=n<=200),第二行是一个字符串。Output对每个测试用例输...原创 2018-09-04 13:02:34 · 1495 阅读 · 0 评论 -
2016年清华软院保研机试第1题(C++高精度)
机考题一• 20 分, LeetCode easy 档次• 从控制台输入一个合法数字,打印其立方• 例如• 输入123456789• 输出1881676371789154860897069• 基本编码能力、消耗时间-------------------------------------------------------------------------------...原创 2018-09-05 10:44:17 · 1253 阅读 · 0 评论 -
2016年清华软院保研机试第2题(最短路)
机考题二• 40 分, LeetCode medium 档次• 从控制台输入n+1 行,前n 行每行3 个整数,形如“A B d”,表示从节点A 到节点B 距离为d(双向)。第n+1 行形如“A B”,表示求A 到B 的最短距离。输出此最短距离。• 例如:1 42 342 789 41 789 91 789输出7• BFS、动态规划、剪枝、图---------...原创 2018-09-05 16:15:04 · 1357 阅读 · 0 评论 -
2016年清华软院保研机试第3题(dfs回溯)
问题描述40 分, LeetCode hard 档次• 从控制台输入一行,形如“n A1 A2 A3 … An B”。其中n代表操作数总数,A1~An 表示n 个操作数。B 代表目标数字。在此n 个操作数中以任意顺序插入n-1 个四则运算操作符,不能插入括号,形成的表达式能否得到B?能——输出1,不能——输出0。操作数和目标数字是整数,整数大小限制在32 位有符号整数范围内。• 例如:4...原创 2018-09-02 21:25:12 · 1583 阅读 · 3 评论 -
2015年清华软院保研机试第1题:病毒感染
题目思路模拟题。需要注意的是“感染者被治疗”“感染加重”和“感染周围的人”三段代码的先后顺序:“感染时间忽略不计”体现在“感染周围的人”代码段在“感染者病情加重”之后,且由于感染周围的人”代码段会影响周边的元素,因此要单独开一个循环,不能放在“感染者病情加重”循环里“1个单位时间以后才变成0”体现在“感染者被治疗”代码段在“感染者病情加重”之前代码#include&l...原创 2018-09-05 18:29:45 · 636 阅读 · 3 评论 -
2015年清华软院保研机试第2题:找到算式 (dfs)
题目思路由于题目里说了不考虑优先级,就是从左向右顺序计算,那就简单多了,直接DFS。因为如果能够得到目标数字要输出算式,所以dfs函数的输出(记作ret)就是一个表示运算符的数,该数的每一个二进制位对应一个运算符,具体来说:if (ret & (1<<(n-2-i)){ oper[i] = '*';}else{ oper[i] = ...原创 2018-09-05 20:08:19 · 667 阅读 · 0 评论 -
2015年清华软院保研机试第3题:航线交叉 (最大上升子列-动态规划)
题目思路航线没有交叉等价于左边数列升序情况下右边数列也是升序,因此问题转化为求左边数列升序的情况下右边数列最大上升子列长度,用动态规划解,dp[i]表示以a[i]为结尾的最大上升子列长度最少去掉的航线数 = 总航线数 - 最大上升子列长度代码// 其实就是求左边数列有序的情况下右边数列最大上升子列长度,用动态规划解// 最少去掉的行线数 = 总航线数 - 最大上升子列...原创 2018-09-05 22:06:52 · 795 阅读 · 0 评论