先是30道选择题:涉及C++、python代码理解、SMO算法、信息增益率、python的object、朴素贝叶斯的高偏差低方差、还有roc曲线细节、c++中的0长度数组、特异性与敏感性、不同排序的最差时间复杂度(快排、堆排、希尔),计算机串的三种表示(定长顺序、堆分配存储、块链存储)、一个节点有多次机会成为活节点(回溯 rather than分支限界法)、deque线程安全、哪些容器可以用数组&链表表示、c++类内成员访问相关、判断满循环队列
最大中位数
时间限制: 3000MS
内存限制: 589824KB
题目描述:
小明有一个长度为 n 的序列,他想从中挑选出一个子序列,使得这个子序列的中位数最大。显然,小明只需要选择原序列中最大的那个数就行,因此他加大难度,给出了一个限制:
原序列中相邻的两个数至少有一个被选到子序列中。
小明想知道在这个限制条件下,子序列最大的中位数是多少?
这里定义中位数是第 n/2 小的数,如 [1, 2, 3, 4, 5] 的中位数是 3,[2, 3, 4, 5, 6, 7] 的中位数是 4。
输入描述
第一行一个正整数 T ,表示数据组数。
对于每一组数据,第一行输入一个正整数 n;第二行输入 n 个正整数 ai, 表示原序列。
2 ≤ n ≤ 3 · 104, 1 ≤ ai ≤ 105, 1 ≤ T ≤ 5。
输出描述
对于每一组数据,输出一行一个正整数,表示能够得到的最大的中位数。
样例输入
3
5
1 2 3 4 5
6
1 2 3 4 5 6
2
7 8
样例输出
4
4
8
提示
样例解释
选择的子序列用下划线表示。
第一组样例,[1, 2, 3, 4, 5];
第二组样例,[1, 2, 3, 4, 5, 6];
第三组样例,[7, 8]。
规则
请尽量在全场考试结束10分钟前调试程序,否则由于密集排队提交,可能查询不到编译结果
点击“调试”亦可保存代码
编程题可以使用本地编译器,此页面不记录跳出次数
Python 3 编译器版本 规则 编译器
编译器版本:python:3.9.9-bullseye
编译命令:bash -c python -c "import py_compile; py_compile.compile(r'Main.py')" && cp __pycache__/Main.cpython-39.pyc /acmcoder/bin/
运行命令:python Main.cpython-39.pyc
缩进不能tab和空格混用。
如果使用sys.stdin.readline, 因为默认会带换行符, 所以要strip(' ')进行截取。
输入建议使用input()。
编程题|20.0分1/2
小明的等差数
时间限制: 3000MS
内存限制: 589824KB
题目描述:
小明觉得“等差数”是一类非常美妙的数字。这类数字的定义如下:
是十进制下的数字。
设这个数字有 n 位,di 表示该数从低到高的第 i 位,则有 d2 − d1 = d3 − d2 =. . . = dn − dn−1。特别地,n = 1 也是“等差数”。
例如,10, 2345, 5432, 111, 9, 0, 86420, 94 是“等差数”,而 233, 114514, 2356, 1235, 124则不是“等差数”。
小明随手写下了一个数字 x,他想知道大于或等于 x 的最小的“等差数”是多少。
输入描述
第一行一个正整数 T ,表示有 T 组数据。对于每一组数据,输入一行一个非负整数 x。
0 ≤ x ≤ 1017, 1 ≤ T ≤ 100。
输出描述
对于每一组数据,输出一行一个十进制下的整数,表示答案。
样例输入
5
100
0
152
233
212
样例输出
111
0
159
234
222
规则
请尽量在全场考试结束10分钟前调试程序,否则由于密集排队提交,可能查询不到编译结果
点击“调试”亦可保存代码
编程题可以使用本地编译器,此页面不记录跳出次数
Python 3 编译器版本 规则 编译器
编译器版本:python:3.9.9-bullseye
编译命令:bash -c python -c "import py_compile; py_compile.compile(r'Main.py')" && cp __pycache__/Main.cpython-39.pyc /acmcoder/bin/
运行命令:python Main.cpython-39.pyc
缩进不能tab和空格混用。
如果使用sys.stdin.readline, 因为默认会带换行符, 所以要strip(' ')进行截取。
输入建议使用input()。
ac代码:
t = int(input())
d={3: {258, 642, 135, 777, 654, 147, 531, 789, 666, 159, 543, 420, 678, 555, 432, 567, 951, 444, 321, 579, 963, 840, 456, 333, 975, 210, 468, 852, 345, 987, 222, 864, 357, 741, 999, 234, 876, 111, 369, 753, 246, 630, 888, 123, 765}, 4: {3456, 6789, 3333, 6666, 3210, 9999, 6543, 9876, 6420, 9753, 9630, 2468, 2345, 5678, 2222, 5555, 8888, 5432, 8765, 8642, 1357, 1234, 4567, 1111, 4444, 7777, 4321, 7654, 7531, 3579}, 5: {55555, 34567, 13579, 86420, 65432, 44444, 99999, 23456, 54321, 33333, 88888, 12345, 43210, 98765, 22222, 77777, 56789, 87654, 11111, 66666, 45678, 97531, 76543}, 6: {123456, 555555, 987654, 234567, 765432, 111111, 666666, 543210, 345678, 222222, 777777, 654321, 456789, 333333, 888888, 876543, 444444, 999999}, 7: {5555555, 1234567, 8765432, 1111111, 6666666, 6543210, 2345678, 9999999, 2222222, 7777777, 7654321, 3456789, 3333333, 8888888, 4444444, 9876543}, 8: {55555555, 11111111, 88888888, 76543210, 66666666, 12345678, 22222222, 87654321, 77777777, 23456789, 33333333, 98765432, 44444444, 99999999}, 9: {555555555, 111111111, 876543210, 666666666, 222222222, 987654321, 777777777, 123456789, 333333333, 888888888, 444444444, 999999999}, 10: {5555555555, 1111111111, 9876543210, 6666666666, 2222222222, 7777777777, 3333333333, 8888888888, 4444444444, 9999999999}, 11: {55555555555, 11111111111, 66666666666, 22222222222, 77777777777, 33333333333, 88888888888, 44444444444, 99999999999}, 12: {555555555555, 111111111111, 666666666666, 222222222222, 777777777777, 333333333333, 888888888888, 444444444444, 999999999999}, 13: {5555555555555, 1111111111111, 6666666666666, 2222222222222, 7777777777777, 3333333333333, 8888888888888, 4444444444444, 9999999999999}, 14: {55555555555555, 11111111111111, 66666666666666, 22222222222222, 77777777777777, 33333333333333, 88888888888888, 44444444444444, 99999999999999}, 15: {555555555555555, 111111111111111, 666666666666666, 222222222222222, 777777777777777, 333333333333333, 888888888888888, 444444444444444, 999999999999999}, 16: {5555555555555555, 1111111111111111, 6666666666666666, 2222222222222222, 7777777777777777, 3333333333333333, 8888888888888888, 4444444444444444, 9999999999999999}, 17: {55555555555555555, 11111111111111111, 66666666666666666, 22222222222222222, 77777777777777777, 33333333333333333, 88888888888888888, 44444444444444444, 99999999999999999}, 18: {555555555555555555, 111111111111111111, 666666666666666666, 222222222222222222, 777777777777777777, 333333333333333333, 888888888888888888, 444444444444444444, 999999999999999999}}
d = {}
for i in range(3,18+1):#
d[i] = set()
for j in [9,8,7,6,5,4,3,2,1]:#开始数,
for delta in [0,-1,-2,-3,-4,-5,-6,-7,-8,-9]:#公差[0,4]
ok = 1
x = ''
for k in range(i):
if j+k*delta > 9 or j+k*delta<0: ok=0; break
x += str(j+k*delta)
if not ok: break
else:
if str(int(x[::-1])) == x[::-1]:
d[i].add(int(x[::-1]))
d[i].add(int(x))
while t:
n = int(input())
if n < 100:
print(n)
else:
L = len(str(n))
n = int(n)
v, cnt = -1, 1e20
for x in d[L]:
if 0<= x-n < cnt:
cnt = x-n
v = x
for x in d[L+1]:
if 0<= x-n < cnt:
cnt = x-n
v = x
print(v)
t -= 1