A - Ezzat and Two Subsequences
思路:
贪心,取最大的数字为一部分,其他数字为一部分即可,证明如下
B - Moamen and k-subarrays
思路:
思维题,读入数据时,用pair保存值的同时保存数组下标,带着数组下标sort,看排序后的数组下标有多少不连续的段,这里数组下标一定是递增的才算连续,如果大于k输出no,反之为yes
C - Moamen and XOR
思路:
一共 n n n个数字,分奇偶讨论
- n n n为奇数时,一定有 a < = b a<=b a<=b,只需考虑 a = b a=b a=b的情况,分别看每一位,要么全1,使得结果为1(有1种情况),要么偶数个1,奇数个0,使得结果为0(有 C n 0 + C n 2 + . . . + C n n − 1 = 2 n − 1 C_{n}^{0}+C_{n}^{2}+...+C_{n}^{n-1}=2^{n-1} Cn0+Cn2+...+Cnn−1=2n−1种情况),综上,当前位情况有 2 n − 1 + 1 2^{n-1}+1 2n−1+1种,总情况有 ( 2 n − 1 + 1 ) k % m o d (2^{n-1}+1)^{k}\ \%mod (2n−1+1)k %mod种
- n n n为偶数时, a = b a=b a=b的情况有 C n 0 + C n 2 + . . . + C n n − 2 = 2 n − 1 − 1 C_{n}^{0}+C_{n}^{2}+...+C_{n}^{n-2}=2^{n-1}-1 Cn0+Cn2+...+Cnn−2=2n−1−1种,对于 a > b a>b a>b的情况,从1到 k k k枚举 i i i,考虑当前第 i i i位要 a = 1 , b = 0 a=1,b=0 a=1,b=0,之前位相等(有 ( 2 n − 1 − 1 ) i − 1 (2^{n-1}-1)^{i-1} (2n−1−1)i−1种情况),之后位任意(有 ( 2 n ) k − i (2^n)^{k-i} (2n)k−i种情况),总情况有 ( ( 2 n − 1 − 1 ) k + ∑ i = 1 k ( ( 2 n − 1 − 1 ) i − 1 + ( 2 n ) k − i ) ) % m o d ((2^{n-1}-1)^{k}+\sum ^{k}_{i=1}((2^{n-1}-1)^{i-1}+(2^n)^{k-i}))\ \%mod ((2n−1−1)k+∑i=1k((2n−1−1)i−1+(2n)k−i)) %mod种情况
推荐一篇排列组合公式的博客:排列组合的一些公式及推导