跳转至

[大一]26-建筑学->数智实验班

个人信息

26级 建筑学数智试验班

感谢 FZU-RUN 贡献者们的付出,今本蒟蒻特来还愿,分享一些题目内容供后人参考。

转专业相关

硬性条件

今年(2026)数智实验班报名条件为以下任满足其一即可:

  • 数学 115 及以上,英语 120 及以上(去年是120和110)
  • 数学 130 及以上
  • 高中阶段数竞或信竞(NOIP)省三及以上

报名评估

建议阅读往届报名数智的学长文章(24级某学长25级某学长),他们很详细地列出了常见Q&A、转专业的收益与代价。

题目(回忆版)

进入正题,题目为本人回忆版,顺序不一定对,也不保证完全准确。

今年的题目组成分为三大块,四道填空,六道编程,两道数学。

填空题

  1. 对15个数进行冒泡排序需要进行比较__次(5pt)
  2. 1*2大小的砖块铺满2*10大小的地板,有__种铺设方法(5pt)
  3. 看程序写输出,程序大概长这样(记不太清,写不来伪代码),题目会告诉你输入,求输出的m(5pt)
    INPUT m, n
    WHILE m != n
        IF m > n
            m ← m - n
        ELSE
            n ← n - m
    OUTPUT m
    
  4. 给定一个单开口的乒乓球桶,有编号1 2 3 4的四个乒乓球,将它们依次放入取出,求取出这些球的方法数(5pt)

编程题

T1

(此处省略情景引入)求给定的正整数数列中首次出现重复的数字,若没有重复请输出NONE。(5pt)

输入格式

第一行输入一个正整数T,表示测试的数据组数;接下来T行,每行输入若干个以空格分割且小于等于1000的正整数,若为-1则表示数列结束。

输出格式

对于每一组数据,输出一行表示首次重复出现的数字,若无重复请输出NONE

T2

(省略情景)给一些数据(不超过1000个),范围[-10^6, 10^6],求平均值(向下取整)、最大值、最小值,并按顺序输出所有超过平均值两倍的数据。(5pt)

输入格式

第一行输入一个正整数n,第二行输入n个正整数表示这些数据。

输出格式

第一行输出平均值(向下取整)、最大值、最小值,第二行按顺序输出所有超过平均值两倍的数据(空格分割)。

T3

给定两个字符串s1 s2,校验s1能否通过一次操作翻转部分子串转换为s2。(10pt)

输入格式

第一行输入一个正整数T,表示测试的数据组数;对于每组,输入两行字符串分别表示s1s2

输出格式

对于每一组数据,若满足题述校验要求,则输出一行Yes,否则输出一行No

T4

给定正整数a b(笔者:忘记范围是多少了)。求是否存在xa的倍数且不为b的倍数(x>a),yb的倍数且不为a的倍数(y>b),使得x+y最小。(10pt)

输入格式

第一行输入一个正整数T,表示测试的数据组数;接下来T行,每行依次输入a b(以空格分割)。

输出格式

对于每一组数据,输出一行求得的x y,以空格分割;若无法达成条件,则输出一行0 0

T5

定于对于整数数列Af(A)A所有相邻两项之差绝对值的总和。现要求删去其中一个数形成新数列,求删去后f(A')的最小值、删数的方案数,以及按顺序输出这些方案中删去的数对应的下标(从1开始)。(10pt)

输入格式

第一行输入一个正整数T,表示测试的数据组数;对于每组数据,第一行输入n表示数列的长度,第二行输入n个整数,表示数列内容。

输出格式

对于每一组数据,第一行输出两个整数f(A') m,其中m表示删数的方案数;第二行输出m个整数,表示每一种方案删去的数对应的下标(从1开始)。

T6

有6个骰子,每次投掷它们得到6个1~6的点数。按以下规则记分:

点数 得分计算方式
1 100
5 50
12345 500
23456 750
123456 1500
三个同点数 若为1则记1000分,否则记此点数*100
四个同点数 "三个同点数"的分值两倍
五个同点数 "四个同点数"的分值两倍
六个同点数 "五个同点数"的分值两倍

(10pt)

输入格式

输入若干行,每行为一个长度固定为6的字符串(用字符'1'~'6'表示点数),表示本次投掷的结果。

输出格式

对于每一行输入,输出一行表示本投掷结果可以结算出的最大得分。

数学题

当时笔试写到这直接力竭了,最终也不知道写什么

由于本人水平欠缺,无法完整理解题意,只能尽量还原

T1

给一个电脑显示屏A B,已知成本价和零售价,然后卖出一台A会使B的零售价 -0.03,卖出一台B会使A的零售价 -0.04,假设产品可以全部卖完的情况,给出甲乙丙丁四个方案,请你判断最优方案并写出思考过程。(15pt)

T2

情景题。在一起杀人案中,早上6点尸温26摄氏度,早上8点尸温18摄氏度,室温10摄氏度,人体体温37摄氏度。(15pt)

1) 假设室温不变,案发时刻大约是几点。 2) 假设室温从6点起线性增长,到8点时室温已达12摄氏度,案发时刻大约是几点。

TIP: 只需要写出建模思路过程,不需要精密计算。

题解

由于只有编程题可以在考场上立即获取作答分数,故在此只提供本人考场上的编程题做法以保证思路可行性。(毕竟其他题我自己也不知道做没做对)

编程题

T1

略。

T2

略。观察数据总和范围依然在int范围内,那就没有任何坑点了。

T3

先判字符串是否等长,再去掉共同前后缀,然后直接判断处理后的s1 s2是否为反转关系。

T4

显然x y不存在时,当且仅当a % b == 0 || b % a == 0,特判输出0 0

由于x y独立,则x+y最小等同于x y均取最小,对a b分别扩倍并取第一个满足条件的值即可。

记得开long long

T5

本人考场做法,不排除有更优解。

对于数列 A = { a, b, c, d }f(A) = |a-b| + |b-c| + |c-d|。注意到,除了首尾元素,删去中间的元素会使f(A)的展开表达式中固定地移去两项再加上一项(例如移去|a-b| + |b-c|,新增|a-c|),维护此固定变化的极值,再单独特判删首项或删尾项的情况,即可求f(A')最大或最小值。

读入的同时预处理数组。读入结束后,即获得f(A')最小值,再遍历一遍把符合条件的删数下标存queue里,接着输出队列长度再输出队列内容即可AC。

记得开long long

T6

第一眼看到觉得有坑,事实上就是看图写话,按图表翻译成代码即可。

显然出现3个以上相同点数时,就不可能出现5个以上连续点数,且枚举得连续点数和相同点数的结算方式一定优于单个点数(1和5)的结算方式,那还说啥了,先把特殊规则按计分优劣性从高到低扣了,剩下的有1或者5的就一股脑加上去完事。

注意别计算特殊规则的时候移去所有的15

当时卡我最久的反而是这个输入方式,毕竟它没有指定测试数据组数,我原计划用getchar()逐字符读入,若为\n则计算分数并memset清空缓存,若为EOF则程序结束,若在'0'~'9'则减去'0'后存入固定大小为6的数组表示点数出现次数。神奇的事情发生了,PTA网站上那个测试框框里怎么测都正确,一提交“听取WA声一片”,又不能离开网站界面用本地文件输入调试。写完其他题目后想起来,怀疑测试样例有疑似空行的情况,或者\n以外换行符(猜测),反正加了保险以后交卷前踩点真就AC了。

笔者杂谈

大概NOIP省三水平即可AK本卷编程题,建议后来者打实基础,保证拿下类似填空第一题(只会用std::sort的有福了)的分数。个人感觉今年较去年(去年数智题目信息来自学长经验帖)来说难度有所下降,至少去年T5/T6考了点算法(二分和前缀和),今年题目更偏向于考察对编程语言的熟悉程度以及把思路变现的能力(免责申明,仅个人理解,也可能完全不是这么回事),对脑子灵活的初学者友好一些,当然前提是对语言和常用库保持熟悉。

填空题占20pt,不出意外必有排列组合,仔细一些问题不大,如果涉及到0基础者知识盲区的,你不会大部分人也不会,心态放平即可;编程题占50pt;数学占30pt,写纸上的,多少写点别空着,据说是会给过程分,体现思路最重要。

Other

欢迎加入FZU转专业交流群1136717485,群友们非常热情,不懂的都可以问学长学姐喵(记得先看群公告)


版权声明 © 本网站内所有文章著作权归作者所有,禁止转载。