摘要:
题意 本题输入一个序列,包含N个正整数,如果一个数左边的所有数都比它小、右边的所有数都比它大,那么称这个数为序列的一个“主元”。求序列中主元的个数。 思路 直接暴力判断会超时。 考虑大小的继承关系,假设序列为A,令数组leftMax记录序列A的每一位左边的最大数(含本位,下同),即leftMax[i 阅读全文
摘要:
题意 给出两个已经递增的序列S1和S2,长度分别为N和M,求将它们合并成一个新的递增序列后的中位数(个数为偶数时为左半部分的最后一个数)。 思路 由于在给定两个子序列的长度N和M后,新序列的长度N+M就是已知的,因此中位数的位置为(N+M-1)/2(此处为向下取整)。 令计数器count初始为0,表 阅读全文
摘要:
题意 给出一个数字序列与一个数S,在数字序列中求出所有和值为S的连续子序列(区间下标左端点小的先输出,左端点相同时右端点小的先输出)。若没有这样的序列,求出和值恰好大于S的子序列(即在所有和值大于S的子序列中和值最接近S)。假设序列下标从1开始。 思路 令Sum[i]表示A[1]到A[j]的和值,即 阅读全文
摘要:
题意 给定一个正整数数对N1,N2,并给出其中一个数字的进制,请你求出另一个数字在什么进制下,两数相等成立。如果答案不唯一,则输出最小的进制数。 范围:N1和N2均不超过10个数位,且每个数位均为0 ~ 9或a ~ z,其中0 ~ 9表示数字0 ~ 9、a ~ z表示数字10 ~ 35。 思路 将已 阅读全文
摘要:
题目给出的是中缀表达式,所以要计算它的值主要是两个步骤: 中缀表达式转后缀表达式。 计算后缀表达式。 下面分别讲一下这两步。 中缀表达式转后缀表达式 ①设立一个操作符栈,用以临时存放操作符;设立一个数组或者队列,用以存放后缀表达式。 ②从左至右扫描中缀表达式,如果碰到操作数(注意:操作数可能不止一位 阅读全文
摘要:
题意 从N个正整数中选择若千个数,使得选出的这些数中的最大值不超过最小值的p倍。问满足条件的选择方案中,选出的数的最大个数。 思路 由于题干中涉及序列的最大值和最小值,因此不妨先将所有N个正整数从小到大进行排序。在此基础上证明:能使选出的数个数最大的方案,一定是在该递增序列中选择连续的若千个数的方案 阅读全文
摘要:
这个题给$30$分也太拉了。 题意 给出若干可能有前导零的数字串,将它们按某个顺序拼接,使生成的数最小。 思路 很多读者看了样例,会觉得只要把这些数字串按字典序从小到大排序,然后按顺序输出就可以了。这种想法方向似乎是对的。但是来看样例中的例子: {“32”,“321”},排序结果是{“32”,“32 阅读全文
摘要:
题意 给出$0, 1,\cdots ,N-1$的一个序列,要求通过两两交换的方式将其变为递增序列,但是规定每次只能用0与其他数进行交换。求最小交换次数。 思路 由于必须使用数字0跟其他数进行交换,因此直观上可以很容易想到的策略是:如果数字0当前在i号位,则找到数字i当前所处的位置,然后把0与i进行交 阅读全文
摘要:
水题~。 魔鬼变量名。 vector<int> positive_coupon,negative_coupon; vector<int> positive_product,negative_product; int nc,np; int main() { cin>>nc; for(int i=0;i 阅读全文
摘要:
题意 已知起点与终点的距离为D,油箱的最大油量为Cmax,单位汽油能够支持前进Davg。给定N个加油站的单位油价和离起点的距离(所有加油站都在一条线上),汽车初始时刻处于起点位置,油箱为空,且可以在任意加油站购买任意量的汽油(前提是不超过油箱容量),求从起点到终点的最小花费。如果无法到达终点,则输出 阅读全文