1.A.找良好数组
题目描述
给你一个数组a,注意下标从0开始
如果数组中的每个奇数下标为奇数且数组中的每个偶数的下标为偶数则叫好数组否则就是不好数组
比如[2,3,4,5]和[0,17,0,3]就是好数组,[2,4,6,7]就不是好数组
但是你可以通过交换元素来使不好数组变成好数组
一次交换可以使数组中两个任意元素进行交换(两个不相邻的元素也是可以的)
如果能变成好数组请求出最小交换次数,否则就输出-1
1.A.找良好数组
题目描述
给你一个数组a,注意下标从0开始
如果数组中的每个奇数下标为奇数且数组中的每个偶数的下标为偶数则叫好数组否则就是不好数组
比如[2,3,4,5]和[0,17,0,3]就是好数组,[2,4,6,7]就不是好数组
但是你可以通过交换元素来使不好数组变成好数组
一次交换可以使数组中两个任意元素进行交换(两个不相邻的元素也是可以的)
如果能变成好数组请求出最小交换次数,否则就输出-1
输入
第一行包含一个整数 t(1<=t<=1000)-测试中的测试用例数。然后t 测试用例如下。
每个测试用例均以包含整数的一行开头n (1 ≤n≤40)—数组a的长度 。
下一行包含 n个整数a0,a1,…,an−1 (0≤ai≤1000) —初始数组
输出
如果能变成好数组请输出一个整数就是最小交换次数,否则就输出-1
样例输入
4
4
3 2 7 6
3
3 2 6
1
7
7
4 9 2 1 18 3 0
样例输出
2
1
-1
0
提示
在第一个测试用例中,在第一步中,您可以将元素的下标为 0和1的进行交换,然后在第二步中,可以将元素的下标为 2和 3的进行交换。
在第二个测试用例中,在第一步中,您需要将元素的下标为 0 和1的进行交换。
在第三个测试用例中,您不能使阵列良好
参考程序
2.B.B进制加法
题目描述
如题。2<=B<=36。
输入
共3行第1行:一个十进制的整数,表示进制B。
第2-3行:每行一个B进制数正整数。数字的每一位属于{0,1,2,3,4,5,6,7,8,9,A,B……},每个数字长度<=2000位。
输出
一个B进制数,表示输入的两个数的和。
样例输入
4
123
321
样例输出
1110
提示
进制计算器。
参考程序
3.C.高精度五则运算
题目描述
求A、B的和 差 积 商 余!(商是整除)
输入
两个数两行
A B
输出
五个数
和 差 积 商 余
样例输入
1
1
样例输出
2
0
1
1
0
提示
length(A),length(B)<=10^4
A,B>0
4.D.栈操作
题目描述
有3种操作
p x 表示 将数字X压入栈中
t 表示,输出现在栈顶的数
d 表示,让栈顶的元素出栈
输入
第一行一个整数N 代表总操作个数 1<n<200
下面N行
若第一个字符为p 则后面有一个数字x , 将数字X压入栈中 1<x<1e9
若第一个字符为t 输出现在栈顶的数(若栈中无元素,输出no)
若第一个字符为d 让栈顶的元素出栈(若栈中无元素,则不操作)
输出
若第一个字符为t 输出现在栈顶的数
样例输入
5
p 2
p 1
t
d
t
样例输出
1
2
提示
参考程序
5.E.队列操作
题目描述
三种操作
p x 代表x入队
t 输出队首元素
d 删除队首元素
输入
一个整数N 代表操作数 1<n<200
下面n行 每行进行一个操作
p x 代表x入队
t 输出队首元素(无元素输出no)
d 删除队首元素 (无元素不进行操作)
输出
t 输出队首元素(无元素输出no)
样例输入
7
p 1
p 2
t
d
d
d
t
样例输出
1
no
提示
参考程序
6.F.采药
题目描述
LZH是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”
如果你是LZH,你能完成这个任务吗?
输入
第一行包含一个整数t,表示数据组数。
对于每组数据,第1行包括2个整数,n,m,表示草药的数目和能用于采药的时间。
接下来n行,每行两个整数Ti,Vi分别表示采摘该株草药的时间和这株草药的价值。
输出
输出t行,每行一个数字,表示每组数据的答案。
样例输入
1
3 70
71 100
69 1
1 2
样例输出
3
提示
1<=t<=10, 1<=n<=150, 1<=m,Ti,Vi<=10^5
参考程序
7.G.射击游戏
题目描述
sys在靶场进行射击训练,有1~n 共N个靶,依次顺序排在sys的前方
教官要求sys 每次要打掉其中连续一段的靶子 ,正规来说,教官给出 L,R ,要求sys 打倒 [L,R]区间的靶子
打倒第i个靶子需要ai发子弹
现在给出教官每次的训练要求,请你计算sys每次至少要装多少子弹。
输入
一个整数N 代表靶子数量 1<n<1e5
第二行N个整数 代表ai 意义如题所示 1<ai<1e5
第三行一个整数M 教官给sys的训练次数 1<m<1e5
接下来M行
每行两个数字 L,R 意义如题所示 1<=L,R<=n 且L<=R
输出
输出共M行
输出每次训练sys需要装的子弹数
样例输入
5
1 2 3 4 5
3
1 2
1 5
3 5
样例输出
3
15
12
提示
参考程序(我自己写的)
8.H.二分查找
题目描述
现有长度为n(n≤10^6)的非降序列(既每一项不小于前一项,编号从1到n),每一项的大小1≤ai≤10^9。
然后对其进行m(m≤10^5)次询问,每次询问给出一个整数q(q≤10^9),要求输出这个数字在序列中的第一次出现时的编号,如果不存在于数列中的话,则输出-1。
输入
第一行2个正整数 n m 分别表示,数字个数和询问次数。
第二行n给整数,表示这些带查询的数字。
第三行m个整数,表示询问这些数字的编号,从1开始编号。
输出
一行,m个整数用空格隔开。
样例输入
11 3
1 3 3 3 5 7 9 11 13 15 15
1 3 6
样例输出
1 2 -1
提示
当找到某一个 ai 等于q时,向右线性搜索找第一个等于q的序号时会超时。
参考程序
9.I.神奇的四次方数
题目描述
将一个整数m分解为n个四次方数的和的形式,要求n最小。例如,m=706,706=5^4+3^4,则n=2。
输入
一行,一个整数m。
输出
一行,一个整数n。
样例输入
706
样例输出
2
提示
m<=100,000
参考程序
10.J.栈
题目描述
栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。
栈有两种最重要的操作,即 pop(从栈顶弹出一个元素)和 push(将一个元素进栈)。
栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙。
输入
输入只含一个整数 n、(1<=n<=18)
输出
输出只有一行,即可能输出序列的总数目。
样例输入
3
样例输出
5
参考程序
11.K.FBI树
题目描述
输入
第一行,一个整数n(1<=n<=10)
第二行,是一个长度为2^n的“01”串
输出
一个字符串,即FBI树的后序遍历序列。
样例输入
3
10001011
样例输出
IBFBBBFIBFIIIFF