简要题解:
A:
题意:给了一堆数(n >= 3),有一个和其他不一样,找出来这个数
排序后,a[1]肯定是相同的数,找到和a[1]不同的数就是答案
B:找到两个'.'变为'*',使得四个'*'构成一个矩形
讨论三种情况即可
C:把问号变为0或者1,其中0的个数为a,1的个数为b
首先把?能确定的字符确定好,然后每次贪心选择剩余a和b最大的那个用来替换?
D:给出从a数组构造b数组的规则,给定b数组,求a数组
枚举哪个数是最后添加到b数组的数即可。注意考虑细节 ,两组数据(1, 1, 1) (1, 2, 3)
E: 求一个排列,满足从l到r的下标的值的和为s
问题可以转化为如何求出(r - l + 1)个不相同的数(每个数要<=n)和为s,我的做法是先初始化1,2,3,4... 然后把增量加到每个数,如果不能平均加的话,把多的尽量加到后面的数。
F: 有n个位置,每个位置每天可以赚到a[i]的钱,初始时在位置1,也可以花费b[i]到达下一个位置。a数组是递增的
贪心,依次枚举在每个位置赚够钱的天数,取最小值即可
G:给定n找到最小的数,满足约数和为n, n <= 1e7
初始化出1e7内所有数的约数和,保存下答案,直接输出即可。复杂度为NlgN